Showing the changes to executor/packages/database/src (1 of 6 files). Show all
Unified · Split
| @@ -0,0 +1,72 @@ | |||
| 1 | import { mutationGeneric, queryGeneric } from "convex/server"; | ||
| 2 | import { v } from "convex/values"; | ||
| 3 | |||
| 4 | const limitArgs = { | ||
| 5 | name: v.string(), | ||
| 6 | config: v.any(), | ||
| 7 | key: v.optional(v.string()), | ||
| 8 | count: v.optional(v.number()), | ||
| 9 | reserve: v.optional(v.boolean()), | ||
| 10 | throws: v.optional(v.boolean()), | ||
| 11 | }; | ||
| 12 | |||
| 13 | const limitResult = v.object({ | ||
| 14 | ok: v.boolean(), | ||
| 15 | retryAfter: v.optional(v.number()), | ||
| 16 | }); | ||
| 17 | |||
| 18 | export const rateLimit = mutationGeneric({ | ||
| 19 | args: limitArgs, | ||
| 20 | returns: limitResult, | ||
| 21 | handler: async () => ({ ok: true }), | ||
| 22 | }); | ||
| 23 | |||
| 24 | export const checkRateLimit = queryGeneric({ | ||
| 25 | args: limitArgs, | ||
| 26 | returns: limitResult, | ||
| 27 | handler: async () => ({ ok: true }), | ||
| 28 | }); | ||
| 29 | |||
| 30 | export const resetRateLimit = mutationGeneric({ | ||
| 31 | args: { | ||
| 32 | name: v.string(), | ||
| 33 | key: v.optional(v.string()), | ||
| 34 | }, | ||
| 35 | returns: v.null(), | ||
| 36 | handler: async () => null, | ||
| 37 | }); | ||
| 38 | |||
| 39 | export const getValue = queryGeneric({ | ||
| 40 | args: { | ||
| 41 | name: v.string(), | ||
| 42 | config: v.any(), | ||
| 43 | key: v.optional(v.string()), | ||
| 44 | sampleShards: v.optional(v.number()), | ||
| 45 | }, | ||
| 46 | returns: v.object({ | ||
| 47 | config: v.any(), | ||
| 48 | shard: v.number(), | ||
| 49 | ts: v.number(), | ||
| 50 | value: v.number(), | ||
| 51 | }), | ||
| 52 | handler: async (_ctx, args) => ({ | ||
| 53 | config: args.config, | ||
| 54 | shard: 0, | ||
| 55 | ts: Date.now(), | ||
| 56 | value: 0, | ||
| 57 | }), | ||
| 58 | }); | ||
| 59 | |||
| 60 | export const clearAll = mutationGeneric({ | ||
| 61 | args: { | ||
| 62 | before: v.optional(v.number()), | ||
| 63 | }, | ||
| 64 | returns: v.null(), | ||
| 65 | handler: async () => null, | ||
| 66 | }); | ||
| 67 | |||
| 68 | export const getServerTime = mutationGeneric({ | ||
| 69 | args: {}, | ||
| 70 | returns: v.number(), | ||
| 71 | handler: async () => Date.now(), | ||
| 72 | }); | ||