import "server-only"; import { Query } from "node-appwrite"; import { createAdminClient, getCurrentUser } from "./server"; import { DATABASE_ID, TABLES, type TenantKind, type TenantSettings } from "./schema"; import { getActiveTenantId, getUserTeams } from "./tenant"; export type ActiveContext = { user: { id: string; name: string; email: string }; tenantId: string; kind: TenantKind | null; settings: TenantSettings | null; }; export async function getActiveContext(): Promise { const user = await getCurrentUser(); if (!user) return null; let tenantId = await getActiveTenantId(); if (!tenantId) { const teams = await getUserTeams(); tenantId = teams?.teams[0]?.$id ?? null; } if (!tenantId) return null; let settings: TenantSettings | null = null; try { const { tablesDB } = createAdminClient(); const result = await tablesDB.listRows({ databaseId: DATABASE_ID, tableId: TABLES.tenantSettings, queries: [Query.equal("tenantId", tenantId), Query.limit(1)], }); settings = (result.rows[0] as unknown as TenantSettings) ?? null; } catch { settings = null; } return { user: { id: user.$id, name: user.name, email: user.email }, tenantId, kind: settings?.kind ?? null, settings, }; }