import log from "electron-log"; import { db } from "../../db"; import { eq } from "drizzle-orm"; import { apps } from "../../db/schema"; import { getSupabaseClient } from "../../supabase_admin/supabase_management_client"; import { createLoggedHandler } from "./safe_handle"; const logger = log.scope("supabase_handlers"); const handle = createLoggedHandler(logger); export function registerSupabaseHandlers() { handle("supabase:list-projects", async () => { const supabase = await getSupabaseClient(); return supabase.getProjects(); }); // Set app project - links a Dyad app to a Supabase project handle( "supabase:set-app-project", async (_, { project, app }: { project: string; app: number }) => { await db .update(apps) .set({ supabaseProjectId: project }) .where(eq(apps.id, app)); logger.info(`Associated app ${app} with Supabase project ${project}`); }, ); // Unset app project - removes the link between a Dyad app and a Supabase project handle("supabase:unset-app-project", async (_, { app }: { app: number }) => { await db .update(apps) .set({ supabaseProjectId: null }) .where(eq(apps.id, app)); logger.info(`Removed Supabase project association for app ${app}`); }); }