From 042802848ddd536f10076b6822db73c2a7de362d Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 2 Sep 2025 16:38:26 -0400 Subject: [PATCH] wip: zen --- cloud/app/src/context/auth.ts | 48 +++++++++++++------------ cloud/app/src/context/auth.withActor.ts | 9 ----- packages/sdk/js/src/server.ts | 2 +- 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/cloud/app/src/context/auth.ts b/cloud/app/src/context/auth.ts index 48afd4e7..e04ccdb0 100644 --- a/cloud/app/src/context/auth.ts +++ b/cloud/app/src/context/auth.ts @@ -2,7 +2,7 @@ import { getRequestEvent } from "solid-js/web" import { and, Database, eq, inArray } from "@opencode/cloud-core/drizzle/index.js" import { WorkspaceTable } from "@opencode/cloud-core/schema/workspace.sql.js" import { UserTable } from "@opencode/cloud-core/schema/user.sql.js" -import { query, redirect } from "@solidjs/router" +import { redirect } from "@solidjs/router" import { AccountTable } from "@opencode/cloud-core/schema/account.sql.js" import { Actor } from "@opencode/cloud-core/actor.js" @@ -14,7 +14,7 @@ export const AuthClient = createClient({ issuer: import.meta.env.VITE_AUTH_URL, }) -export const getActor = query(async (): Promise => { +export const getActor = async (): Promise => { "use server" const evt = getRequestEvent() if (!evt) throw new Error("No request event") @@ -53,27 +53,29 @@ export const getActor = query(async (): Promise => { } const workspaceHint = splits[1] const accounts = Object.keys(auth.data.account ?? {}) - const result = await Database.transaction(async (tx) => { - return await tx - .select({ - user: UserTable, - }) - .from(AccountTable) - .innerJoin(UserTable, and(eq(UserTable.email, AccountTable.email))) - .innerJoin(WorkspaceTable, eq(WorkspaceTable.id, UserTable.workspaceID)) - .where(and(inArray(AccountTable.id, accounts), eq(WorkspaceTable.id, workspaceHint))) - .limit(1) - .execute() - .then((x) => x[0]) - }) - if (result) { - return { - type: "user", - properties: { - userID: result.user.id, - workspaceID: result.user.workspaceID, - }, + if (accounts.length) { + const result = await Database.transaction(async (tx) => { + return await tx + .select({ + user: UserTable, + }) + .from(AccountTable) + .innerJoin(UserTable, and(eq(UserTable.email, AccountTable.email))) + .innerJoin(WorkspaceTable, eq(WorkspaceTable.id, UserTable.workspaceID)) + .where(and(inArray(AccountTable.id, accounts), eq(WorkspaceTable.id, workspaceHint))) + .limit(1) + .execute() + .then((x) => x[0]) + }) + if (result) { + return { + type: "user", + properties: { + userID: result.user.id, + workspaceID: result.user.workspaceID, + }, + } } } throw redirect("/auth/authorize") -}, "actor") +} diff --git a/cloud/app/src/context/auth.withActor.ts b/cloud/app/src/context/auth.withActor.ts index ca38be89..a61b728e 100644 --- a/cloud/app/src/context/auth.withActor.ts +++ b/cloud/app/src/context/auth.withActor.ts @@ -1,16 +1,7 @@ import { Actor } from "@opencode/cloud-core/actor.js" import { getActor } from "./auth" -import { query } from "@solidjs/router" export async function withActor(fn: () => T) { const actor = await getActor() return Actor.provide(actor.type, actor.properties, fn) } - -export function actorQuery(cb: () => T, name: string) { - "use server" - return query(async () => { - const actor = await getActor() - return withActor(cb) - }, name) -} diff --git a/packages/sdk/js/src/server.ts b/packages/sdk/js/src/server.ts index 5c8caa43..3cee6475 100644 --- a/packages/sdk/js/src/server.ts +++ b/packages/sdk/js/src/server.ts @@ -1,5 +1,5 @@ import { spawn } from "node:child_process" -import { Config } from "./gen/types.gen.js" +import { type Config } from "./gen/types.gen.js" export type ServerOptions = { hostname?: string