From 8d368fdfd2d1ea363f29710bada6e538ad64fb2e Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 2 Sep 2025 23:56:10 -0400 Subject: wip: zen --- cloud/core/src/key.ts | 23 ++++++++--------------- cloud/core/src/schema/key.sql.ts | 5 +++-- 2 files changed, 11 insertions(+), 17 deletions(-) (limited to 'cloud/core/src') diff --git a/cloud/core/src/key.ts b/cloud/core/src/key.ts index 7adc4096b..b62a8961b 100644 --- a/cloud/core/src/key.ts +++ b/cloud/core/src/key.ts @@ -7,26 +7,19 @@ import { KeyTable } from "./schema/key.sql" export namespace Key { export const list = async () => { - const user = Actor.assert("user") + const workspace = Actor.workspace() const keys = await Database.use((tx) => tx - .select({ - id: KeyTable.id, - name: KeyTable.name, - key: KeyTable.key, - userID: KeyTable.userID, - timeCreated: KeyTable.timeCreated, - timeUsed: KeyTable.timeUsed, - }) + .select() .from(KeyTable) - .where(eq(KeyTable.workspaceID, user.properties.workspaceID)) + .where(eq(KeyTable.workspaceID, workspace)) .orderBy(sql`${KeyTable.timeCreated} DESC`), ) return keys } export const create = fn(z.object({ name: z.string().min(1).max(255) }), async (input) => { - const user = Actor.assert("user") + const workspaceID = Actor.workspace() const { name } = input // Generate secret key: sk- + 64 random characters (upper, lower, numbers) @@ -42,8 +35,8 @@ export namespace Key { await Database.use((tx) => tx.insert(KeyTable).values({ id: keyID, - workspaceID: user.properties.workspaceID, - userID: user.properties.userID, + workspaceID, + actor: Actor.use(), name, key: secretKey, timeUsed: null, @@ -54,9 +47,9 @@ export namespace Key { }) export const remove = fn(z.object({ id: z.string() }), async (input) => { - const user = Actor.assert("user") + const workspace = Actor.workspace() await Database.use((tx) => - tx.delete(KeyTable).where(and(eq(KeyTable.id, input.id), eq(KeyTable.workspaceID, user.properties.workspaceID))), + tx.delete(KeyTable).where(and(eq(KeyTable.id, input.id), eq(KeyTable.workspaceID, workspace))), ) }) } diff --git a/cloud/core/src/schema/key.sql.ts b/cloud/core/src/schema/key.sql.ts index 200e829cb..07982779b 100644 --- a/cloud/core/src/schema/key.sql.ts +++ b/cloud/core/src/schema/key.sql.ts @@ -1,13 +1,14 @@ -import { text, mysqlTable, varchar, uniqueIndex } from "drizzle-orm/mysql-core" +import { mysqlTable, varchar, uniqueIndex, json } from "drizzle-orm/mysql-core" import { timestamps, utc, workspaceColumns } from "../drizzle/types" import { workspaceIndexes } from "./workspace.sql" +import { Actor } from "../actor" export const KeyTable = mysqlTable( "key", { ...workspaceColumns, ...timestamps, - userID: text("user_id").notNull(), + actor: json("actor").$type(), name: varchar("name", { length: 255 }).notNull(), key: varchar("key", { length: 255 }).notNull(), timeUsed: utc("time_used"), -- cgit v1.2.3