diff --git a/src/convex/_generated/api.d.ts b/src/convex/_generated/api.d.ts index 48d2562..ff729f9 100644 --- a/src/convex/_generated/api.d.ts +++ b/src/convex/_generated/api.d.ts @@ -14,6 +14,7 @@ import type { FunctionReference, } from "convex/server"; import type * as messages from "../messages.js"; +import type * as numbers from "../numbers.js"; import type * as seed_messages from "../seed_messages.js"; /** @@ -26,6 +27,7 @@ import type * as seed_messages from "../seed_messages.js"; */ declare const fullApi: ApiFromModules<{ messages: typeof messages; + numbers: typeof numbers; seed_messages: typeof seed_messages; }>; export declare const api: FilterApi< diff --git a/src/convex/numbers.ts b/src/convex/numbers.ts new file mode 100644 index 0000000..8a1165e --- /dev/null +++ b/src/convex/numbers.ts @@ -0,0 +1,27 @@ +import { v } from 'convex/values'; +import { query, mutation } from './_generated/server.js'; + +export const get = query(async (ctx) => { + const numbers = await ctx.db.query('numbers').first(); + return { + a: numbers?.a || 0, + b: numbers?.b || 0, + c: numbers?.c || 0 + }; +}); + +export const update = mutation({ + args: { + a: v.number(), + b: v.number(), + c: v.number() + }, + handler: async (ctx, { a, b, c }) => { + const existing = await ctx.db.query('numbers').first(); + let id = existing?._id; + if (!id) { + id = await ctx.db.insert('numbers', { a: 0, b: 0, c: 0 }); + } + await ctx.db.replace(id, { a, b, c }); + } +}); diff --git a/src/convex/schema.ts b/src/convex/schema.ts index 5cf71ae..1eb587d 100644 --- a/src/convex/schema.ts +++ b/src/convex/schema.ts @@ -5,5 +5,10 @@ export default defineSchema({ messages: defineTable({ author: v.string(), body: v.string() + }), + numbers: defineTable({ + a: v.number(), + b: v.number(), + c: v.number() }) }); diff --git a/src/routes/inputs/+page.svelte b/src/routes/inputs/+page.svelte new file mode 100644 index 0000000..d6bb792 --- /dev/null +++ b/src/routes/inputs/+page.svelte @@ -0,0 +1,29 @@ + + + + Home + + + +
+

Modifying several inputs

+

Any user have complete control over these inputs but might change them quickly.

+ + +
+ + diff --git a/src/routes/inputs/Inputs.svelte b/src/routes/inputs/Inputs.svelte new file mode 100644 index 0000000..833a72c --- /dev/null +++ b/src/routes/inputs/Inputs.svelte @@ -0,0 +1,119 @@ + + +
+ {#if serverNumbers.isLoading} +
+

Loading values...

+
+ {:else} +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+

Current values:

+ +
+ {/if} +