diff options
Diffstat (limited to 'packages/plugins/queue-restate/src/idProvider.ts')
| -rw-r--r-- | packages/plugins/queue-restate/src/idProvider.ts | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/packages/plugins/queue-restate/src/idProvider.ts b/packages/plugins/queue-restate/src/idProvider.ts new file mode 100644 index 00000000..ee85f46f --- /dev/null +++ b/packages/plugins/queue-restate/src/idProvider.ts @@ -0,0 +1,21 @@ +import { Context, object, ObjectContext } from "@restatedev/restate-sdk"; + +export const idProvider = object({ + name: "IdProvider", + handlers: { + get: async (ctx: ObjectContext<{ nextId: number }>): Promise<number> => { + const state = (await ctx.get("nextId")) ?? 0; + ctx.set("nextId", state + 1); + return state; + }, + }, + options: { + ingressPrivate: true, + }, +}); + +export async function genId(ctx: Context) { + return ctx + .objectClient<typeof idProvider>({ name: "IdProvider" }, "IdProvider") + .get(); +} |
