summaryrefslogtreecommitdiffhomepage
path: root/cloud/core/src/key.ts
diff options
context:
space:
mode:
authorFrank <[email protected]>2025-09-11 17:21:49 -0400
committerFrank <[email protected]>2025-09-11 17:22:05 -0400
commit3abca8fd4b08f5d122c2352fcee64755a028228a (patch)
tree338a442124fd0f9aa7bba265558594f961bcc156 /cloud/core/src/key.ts
parentf5b3992479b616b5900a5f752d8928980837426e (diff)
downloadopencode-3abca8fd4b08f5d122c2352fcee64755a028228a.tar.gz
opencode-3abca8fd4b08f5d122c2352fcee64755a028228a.zip
wip: zen
Diffstat (limited to 'cloud/core/src/key.ts')
-rw-r--r--cloud/core/src/key.ts26
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)))
+ })
})
}