diff options
| author | Frank <[email protected]> | 2025-09-11 17:21:49 -0400 |
|---|---|---|
| committer | Frank <[email protected]> | 2025-09-11 17:22:05 -0400 |
| commit | 3abca8fd4b08f5d122c2352fcee64755a028228a (patch) | |
| tree | 338a442124fd0f9aa7bba265558594f961bcc156 /cloud/core/src/key.ts | |
| parent | f5b3992479b616b5900a5f752d8928980837426e (diff) | |
| download | opencode-3abca8fd4b08f5d122c2352fcee64755a028228a.tar.gz opencode-3abca8fd4b08f5d122c2352fcee64755a028228a.zip | |
wip: zen
Diffstat (limited to 'cloud/core/src/key.ts')
| -rw-r--r-- | cloud/core/src/key.ts | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/cloud/core/src/key.ts b/cloud/core/src/key.ts index b62a8961b..a8bcec401 100644 --- a/cloud/core/src/key.ts +++ b/cloud/core/src/key.ts @@ -1,7 +1,7 @@ import { z } from "zod" import { fn } from "./util/fn" import { Actor } from "./actor" -import { and, Database, eq, sql } from "./drizzle" +import { and, Database, eq, isNull, sql } from "./drizzle" import { Identifier } from "./identifier" import { KeyTable } from "./schema/key.sql" @@ -12,7 +12,7 @@ export namespace Key { tx .select() .from(KeyTable) - .where(eq(KeyTable.workspaceID, workspace)) + .where(and(eq(KeyTable.workspaceID, workspace), isNull(KeyTable.timeDeleted))) .orderBy(sql`${KeyTable.timeCreated} DESC`), ) return keys @@ -48,8 +48,24 @@ export namespace Key { export const remove = fn(z.object({ id: z.string() }), async (input) => { const workspace = Actor.workspace() - await Database.use((tx) => - tx.delete(KeyTable).where(and(eq(KeyTable.id, input.id), eq(KeyTable.workspaceID, workspace))), - ) + await Database.transaction(async (tx) => { + const row = await tx + .select({ + name: KeyTable.name, + }) + .from(KeyTable) + .where(and(eq(KeyTable.id, input.id), eq(KeyTable.workspaceID, workspace))) + .then((rows) => rows[0]) + if (!row) return + + await tx + .update(KeyTable) + .set({ + timeDeleted: sql`now()`, + oldName: row.name, + name: input.id, // Use the key ID as the name + }) + .where(and(eq(KeyTable.id, input.id), eq(KeyTable.workspaceID, workspace))) + }) }) } |
