summaryrefslogtreecommitdiffhomepage
path: root/packages/console/core/src
diff options
context:
space:
mode:
authorFrank <[email protected]>2025-10-06 16:15:10 -0400
committerFrank <[email protected]>2025-10-06 17:13:19 -0400
commit9e8fd16e6e4154ae0bccff8342e4b0c7780d8db8 (patch)
treec9f936bfcaf7cf7f275334e869738c87989a2362 /packages/console/core/src
parent1b17d8070bcddeddaea3dea403f031a161539901 (diff)
downloadopencode-9e8fd16e6e4154ae0bccff8342e4b0c7780d8db8.tar.gz
opencode-9e8fd16e6e4154ae0bccff8342e4b0c7780d8db8.zip
wip: zen
Diffstat (limited to 'packages/console/core/src')
-rw-r--r--packages/console/core/src/account.ts17
-rw-r--r--packages/console/core/src/actor.ts9
-rw-r--r--packages/console/core/src/schema/workspace.sql.ts2
-rw-r--r--packages/console/core/src/user.ts2
-rw-r--r--packages/console/core/src/workspace.ts64
5 files changed, 46 insertions, 48 deletions
diff --git a/packages/console/core/src/account.ts b/packages/console/core/src/account.ts
index cd1eed4b1..f246c8e1a 100644
--- a/packages/console/core/src/account.ts
+++ b/packages/console/core/src/account.ts
@@ -1,12 +1,9 @@
import { z } from "zod"
-import { and, eq, getTableColumns, isNull } from "drizzle-orm"
+import { eq } from "drizzle-orm"
import { fn } from "./util/fn"
import { Database } from "./drizzle"
import { Identifier } from "./identifier"
import { AccountTable } from "./schema/account.sql"
-import { Actor } from "./actor"
-import { WorkspaceTable } from "./schema/workspace.sql"
-import { UserTable } from "./schema/user.sql"
export namespace Account {
export const create = fn(
@@ -46,16 +43,4 @@ export namespace Account {
.then((rows) => rows[0])
}),
)
-
- export const workspaces = async () => {
- const actor = Actor.assert("account")
- return Database.transaction(async (tx) =>
- tx
- .select(getTableColumns(WorkspaceTable))
- .from(WorkspaceTable)
- .innerJoin(UserTable, eq(UserTable.workspaceID, WorkspaceTable.id))
- .where(and(eq(UserTable.accountID, actor.properties.accountID), isNull(WorkspaceTable.timeDeleted)))
- .execute(),
- )
- }
}
diff --git a/packages/console/core/src/actor.ts b/packages/console/core/src/actor.ts
index 0d13f7216..ae11335f8 100644
--- a/packages/console/core/src/actor.ts
+++ b/packages/console/core/src/actor.ts
@@ -20,6 +20,7 @@ export namespace Actor {
properties: {
userID: string
workspaceID: string
+ accountID: string
}
}
@@ -71,4 +72,12 @@ export namespace Actor {
}
throw new Error(`actor of type "${actor.type}" is not associated with a workspace`)
}
+
+ export function account() {
+ const actor = use()
+ if ("accountID" in actor.properties) {
+ return actor.properties.accountID
+ }
+ throw new Error(`actor of type "${actor.type}" is not associated with an account`)
+ }
}
diff --git a/packages/console/core/src/schema/workspace.sql.ts b/packages/console/core/src/schema/workspace.sql.ts
index 3b02d346d..979255428 100644
--- a/packages/console/core/src/schema/workspace.sql.ts
+++ b/packages/console/core/src/schema/workspace.sql.ts
@@ -1,4 +1,4 @@
-import { primaryKey, mysqlTable, uniqueIndex, varchar, boolean } from "drizzle-orm/mysql-core"
+import { primaryKey, mysqlTable, uniqueIndex, varchar } from "drizzle-orm/mysql-core"
import { timestamps, ulid } from "../drizzle/types"
export const WorkspaceTable = mysqlTable(
diff --git a/packages/console/core/src/user.ts b/packages/console/core/src/user.ts
index e33e86cb0..d4a0da0f8 100644
--- a/packages/console/core/src/user.ts
+++ b/packages/console/core/src/user.ts
@@ -172,8 +172,6 @@ export namespace User {
),
),
)
-
- return invitations.length
})
export const updateRole = fn(
diff --git a/packages/console/core/src/workspace.ts b/packages/console/core/src/workspace.ts
index 87a08adb3..36d66e15a 100644
--- a/packages/console/core/src/workspace.ts
+++ b/packages/console/core/src/workspace.ts
@@ -9,34 +9,40 @@ import { WorkspaceTable } from "./schema/workspace.sql"
import { Key } from "./key"
export namespace Workspace {
- export const create = fn(z.void(), async () => {
- const account = Actor.assert("account")
- const workspaceID = Identifier.create("workspace")
- const userID = Identifier.create("user")
- await Database.transaction(async (tx) => {
- await tx.insert(WorkspaceTable).values({
- id: workspaceID,
+ export const create = fn(
+ z.object({
+ name: z.string(),
+ }),
+ async ({ name }) => {
+ const account = Actor.assert("account")
+ const workspaceID = Identifier.create("workspace")
+ const userID = Identifier.create("user")
+ await Database.transaction(async (tx) => {
+ await tx.insert(WorkspaceTable).values({
+ id: workspaceID,
+ name,
+ })
+ await tx.insert(UserTable).values({
+ workspaceID,
+ id: userID,
+ accountID: account.properties.accountID,
+ name: "",
+ role: "admin",
+ })
+ await tx.insert(BillingTable).values({
+ workspaceID,
+ id: Identifier.create("billing"),
+ balance: 0,
+ })
})
- await tx.insert(UserTable).values({
- workspaceID,
- id: userID,
- accountID: account.properties.accountID,
- name: "",
- role: "admin",
- })
- await tx.insert(BillingTable).values({
- workspaceID,
- id: Identifier.create("billing"),
- balance: 0,
- })
- })
- await Actor.provide(
- "system",
- {
- workspaceID,
- },
- () => Key.create({ userID, name: "Default API Key" }),
- )
- return workspaceID
- })
+ await Actor.provide(
+ "system",
+ {
+ workspaceID,
+ },
+ () => Key.create({ userID, name: "Default API Key" }),
+ )
+ return workspaceID
+ },
+ )
}