init commit
This commit is contained in:
81
convex/myFunctions.ts
Normal file
81
convex/myFunctions.ts
Normal file
@@ -0,0 +1,81 @@
|
||||
import { v } from "convex/values";
|
||||
import { query, mutation, action } from "./_generated/server";
|
||||
import { api } from "./_generated/api";
|
||||
import { getAuthUserId } from "@convex-dev/auth/server";
|
||||
|
||||
// Write your Convex functions in any file inside this directory (`convex`).
|
||||
// See https://docs.convex.dev/functions for more.
|
||||
|
||||
// You can read data from the database via a query:
|
||||
export const listNumbers = query({
|
||||
// Validators for arguments.
|
||||
args: {
|
||||
count: v.number(),
|
||||
},
|
||||
|
||||
// Query implementation.
|
||||
handler: async (ctx, args) => {
|
||||
//// Read the database as many times as you need here.
|
||||
//// See https://docs.convex.dev/database/reading-data.
|
||||
const numbers = await ctx.db
|
||||
.query("numbers")
|
||||
// Ordered by _creationTime, return most recent
|
||||
.order("desc")
|
||||
.take(args.count);
|
||||
const userId = await getAuthUserId(ctx);
|
||||
const user = userId === null ? null : await ctx.db.get(userId);
|
||||
return {
|
||||
viewer: user?.email ?? null,
|
||||
numbers: numbers.reverse().map((number) => number.value),
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
// You can write data to the database via a mutation:
|
||||
export const addNumber = mutation({
|
||||
// Validators for arguments.
|
||||
args: {
|
||||
value: v.number(),
|
||||
},
|
||||
|
||||
// Mutation implementation.
|
||||
handler: async (ctx, args) => {
|
||||
//// Insert or modify documents in the database here.
|
||||
//// Mutations can also read from the database like queries.
|
||||
//// See https://docs.convex.dev/database/writing-data.
|
||||
|
||||
const id = await ctx.db.insert("numbers", { value: args.value });
|
||||
|
||||
console.log("Added new document with id:", id);
|
||||
// Optionally, return a value from your mutation.
|
||||
// return id;
|
||||
},
|
||||
});
|
||||
|
||||
// You can fetch data from and send data to third-party APIs via an action:
|
||||
export const myAction = action({
|
||||
// Validators for arguments.
|
||||
args: {
|
||||
first: v.number(),
|
||||
second: v.string(),
|
||||
},
|
||||
|
||||
// Action implementation.
|
||||
handler: async (ctx, args) => {
|
||||
//// Use the browser-like `fetch` API to send HTTP requests.
|
||||
//// See https://docs.convex.dev/functions/actions#calling-third-party-apis-and-using-npm-packages.
|
||||
// const response = await ctx.fetch("https://api.thirdpartyservice.com");
|
||||
// const data = await response.json();
|
||||
|
||||
//// Query data by running Convex queries.
|
||||
const data = await ctx.runQuery(api.myFunctions.listNumbers, {
|
||||
count: 10,
|
||||
});
|
||||
console.log(data);
|
||||
|
||||
//// Write data by running Convex mutations.
|
||||
await ctx.runMutation(api.myFunctions.addNumber, {
|
||||
value: args.first,
|
||||
});
|
||||
},
|
||||
});
|
Reference in New Issue
Block a user