@@ -3,10 +3,9 @@ import fs from "fs/promises"
33import { Filesystem } from "../util/filesystem"
44import path from "path"
55import { $ } from "bun"
6- import { db } from "../storage/db"
6+ import { Database , eq } from "../storage/db"
77import { ProjectTable } from "./project.sql"
88import { SessionTable } from "../session/session.sql"
9- import { eq } from "drizzle-orm"
109import { Log } from "../util/log"
1110import { Flag } from "@/flag/flag"
1211import { work } from "../util/queue"
@@ -199,7 +198,7 @@ export namespace Project {
199198 }
200199 } )
201200
202- const row = db ( ) . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , id ) ) . get ( )
201+ const row = Database . use ( ( db ) => db . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , id ) ) . get ( ) )
203202 const existing = await iife ( async ( ) => {
204203 if ( row ) return fromRow ( row )
205204 const fresh : Info = {
@@ -253,7 +252,9 @@ export namespace Project {
253252 time_initialized : result . time . initialized ,
254253 sandboxes : result . sandboxes ,
255254 }
256- db ( ) . insert ( ProjectTable ) . values ( insert ) . onConflictDoUpdate ( { target : ProjectTable . id , set : updateSet } ) . run ( )
255+ Database . use ( ( db ) =>
256+ db . insert ( ProjectTable ) . values ( insert ) . onConflictDoUpdate ( { target : ProjectTable . id , set : updateSet } ) . run ( ) ,
257+ )
257258 GlobalBus . emit ( "event" , {
258259 payload : {
259260 type : Event . Updated . type ,
@@ -294,10 +295,12 @@ export namespace Project {
294295 }
295296
296297 async function migrateFromGlobal ( newProjectID : string , worktree : string ) {
297- const globalRow = db ( ) . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , "global" ) ) . get ( )
298+ const globalRow = Database . use ( ( db ) => db . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , "global" ) ) . get ( ) )
298299 if ( ! globalRow ) return
299300
300- const globalSessions = db ( ) . select ( ) . from ( SessionTable ) . where ( eq ( SessionTable . projectID , "global" ) ) . all ( )
301+ const globalSessions = Database . use ( ( db ) =>
302+ db . select ( ) . from ( SessionTable ) . where ( eq ( SessionTable . projectID , "global" ) ) . all ( ) ,
303+ )
301304 if ( globalSessions . length === 0 ) return
302305
303306 log . info ( "migrating sessions from global" , { newProjectID, worktree, count : globalSessions . length } )
@@ -307,32 +310,38 @@ export namespace Project {
307310 if ( row . directory && row . directory !== worktree ) return
308311
309312 log . info ( "migrating session" , { sessionID : row . id , from : "global" , to : newProjectID } )
310- db ( ) . update ( SessionTable ) . set ( { projectID : newProjectID } ) . where ( eq ( SessionTable . id , row . id ) ) . run ( )
313+ Database . use ( ( db ) =>
314+ db . update ( SessionTable ) . set ( { projectID : newProjectID } ) . where ( eq ( SessionTable . id , row . id ) ) . run ( ) ,
315+ )
311316 } ) . catch ( ( error ) => {
312317 log . error ( "failed to migrate sessions from global to project" , { error, projectId : newProjectID } )
313318 } )
314319 }
315320
316321 export function setInitialized ( projectID : string ) {
317- db ( )
318- . update ( ProjectTable )
319- . set ( {
320- time_initialized : Date . now ( ) ,
321- } )
322- . where ( eq ( ProjectTable . id , projectID ) )
323- . run ( )
322+ Database . use ( ( db ) =>
323+ db
324+ . update ( ProjectTable )
325+ . set ( {
326+ time_initialized : Date . now ( ) ,
327+ } )
328+ . where ( eq ( ProjectTable . id , projectID ) )
329+ . run ( ) ,
330+ )
324331 }
325332
326333 export function list ( ) {
327- return db ( )
328- . select ( )
329- . from ( ProjectTable )
330- . all ( )
331- . map ( ( row ) => fromRow ( row ) )
334+ return Database . use ( ( db ) =>
335+ db
336+ . select ( )
337+ . from ( ProjectTable )
338+ . all ( )
339+ . map ( ( row ) => fromRow ( row ) ) ,
340+ )
332341 }
333342
334343 export function get ( projectID : string ) : Info | undefined {
335- const row = db ( ) . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , projectID ) ) . get ( )
344+ const row = Database . use ( ( db ) => db . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , projectID ) ) . get ( ) )
336345 if ( ! row ) return undefined
337346 return fromRow ( row )
338347 }
@@ -345,17 +354,19 @@ export namespace Project {
345354 commands : Info . shape . commands . optional ( ) ,
346355 } ) ,
347356 async ( input ) => {
348- const result = db ( )
349- . update ( ProjectTable )
350- . set ( {
351- name : input . name ,
352- icon_url : input . icon ?. url ,
353- icon_color : input . icon ?. color ,
354- time_updated : Date . now ( ) ,
355- } )
356- . where ( eq ( ProjectTable . id , input . projectID ) )
357- . returning ( )
358- . get ( )
357+ const result = Database . use ( ( db ) =>
358+ db
359+ . update ( ProjectTable )
360+ . set ( {
361+ name : input . name ,
362+ icon_url : input . icon ?. url ,
363+ icon_color : input . icon ?. color ,
364+ time_updated : Date . now ( ) ,
365+ } )
366+ . where ( eq ( ProjectTable . id , input . projectID ) )
367+ . returning ( )
368+ . get ( ) ,
369+ )
359370 if ( ! result ) throw new Error ( `Project not found: ${ input . projectID } ` )
360371 const data = fromRow ( result )
361372 GlobalBus . emit ( "event" , {
@@ -369,7 +380,7 @@ export namespace Project {
369380 )
370381
371382 export async function sandboxes ( projectID : string ) {
372- const row = db ( ) . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , projectID ) ) . get ( )
383+ const row = Database . use ( ( db ) => db . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , projectID ) ) . get ( ) )
373384 if ( ! row ) return [ ]
374385 const data = fromRow ( row )
375386 const valid : string [ ] = [ ]
@@ -381,16 +392,18 @@ export namespace Project {
381392 }
382393
383394 export async function addSandbox ( projectID : string , directory : string ) {
384- const row = db ( ) . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , projectID ) ) . get ( )
395+ const row = Database . use ( ( db ) => db . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , projectID ) ) . get ( ) )
385396 if ( ! row ) throw new Error ( `Project not found: ${ projectID } ` )
386397 const sandboxes = [ ...row . sandboxes ]
387398 if ( ! sandboxes . includes ( directory ) ) sandboxes . push ( directory )
388- const result = db ( )
389- . update ( ProjectTable )
390- . set ( { sandboxes, time_updated : Date . now ( ) } )
391- . where ( eq ( ProjectTable . id , projectID ) )
392- . returning ( )
393- . get ( )
399+ const result = Database . use ( ( db ) =>
400+ db
401+ . update ( ProjectTable )
402+ . set ( { sandboxes, time_updated : Date . now ( ) } )
403+ . where ( eq ( ProjectTable . id , projectID ) )
404+ . returning ( )
405+ . get ( ) ,
406+ )
394407 if ( ! result ) throw new Error ( `Project not found: ${ projectID } ` )
395408 const data = fromRow ( result )
396409 GlobalBus . emit ( "event" , {
@@ -403,15 +416,17 @@ export namespace Project {
403416 }
404417
405418 export async function removeSandbox ( projectID : string , directory : string ) {
406- const row = db ( ) . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , projectID ) ) . get ( )
419+ const row = Database . use ( ( db ) => db . select ( ) . from ( ProjectTable ) . where ( eq ( ProjectTable . id , projectID ) ) . get ( ) )
407420 if ( ! row ) throw new Error ( `Project not found: ${ projectID } ` )
408421 const sandboxes = row . sandboxes . filter ( ( s : string ) => s !== directory )
409- const result = db ( )
410- . update ( ProjectTable )
411- . set ( { sandboxes, time_updated : Date . now ( ) } )
412- . where ( eq ( ProjectTable . id , projectID ) )
413- . returning ( )
414- . get ( )
422+ const result = Database . use ( ( db ) =>
423+ db
424+ . update ( ProjectTable )
425+ . set ( { sandboxes, time_updated : Date . now ( ) } )
426+ . where ( eq ( ProjectTable . id , projectID ) )
427+ . returning ( )
428+ . get ( ) ,
429+ )
415430 if ( ! result ) throw new Error ( `Project not found: ${ projectID } ` )
416431 const data = fromRow ( result )
417432 GlobalBus . emit ( "event" , {
0 commit comments