aboutsummaryrefslogtreecommitdiffstats
path: root/packages/plugins/queue-restate/src/idProvider.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-11-08 14:50:00 +0000
committerGitHub <noreply@github.com>2025-11-08 14:50:00 +0000
commit99413db0e79a156a1b87eacd3c6a7b83e9df946e (patch)
tree73f0a5fceb507f75f662a109b00beeb3fa6b16fb /packages/plugins/queue-restate/src/idProvider.ts
parent737b03172c2e063ba311c23d6552418bd2ab1955 (diff)
downloadkarakeep-99413db0e79a156a1b87eacd3c6a7b83e9df946e.tar.zst
refactor: consolidate multiple karakeep plugins into one package (#2101)
* refactor: consolidate plugin packages into single plugins directory - Create new `packages/plugins` directory with consolidated package.json - Move queue-liteque, queue-restate, and search-meilisearch to subdirectories - Update imports in packages/shared-server/src/plugins.ts - Remove individual plugin package directories - Update shared-server dependency to use @karakeep/plugins This reduces overhead of maintaining multiple separate packages for plugins. * refactor: consolidate plugin config files to root level - Move .oxlintrc.json to packages/plugins root - Move vitest.config.ts to packages/plugins root - Update vitest config paths to work from root - Remove individual config files from plugin subdirectories This reduces configuration duplication across plugin subdirectories. --------- Co-authored-by: Claude <noreply@anthropic.com>
Diffstat (limited to 'packages/plugins/queue-restate/src/idProvider.ts')
-rw-r--r--packages/plugins/queue-restate/src/idProvider.ts21
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();
+}