Spaces:
Running
Running
import { useEffect, useState } from "react"; | |
import { createDb } from "~/duck"; | |
export const useDuckDb = () => { | |
const [db, setDb] = useState<Awaited<ReturnType<typeof createDb>> | null>( | |
null | |
); | |
useEffect(() => { | |
const status = { | |
killed: false, | |
}; | |
const initDb = async () => { | |
const db = await createDb(); | |
if (status.killed) { | |
db.terminate(); | |
return; | |
} | |
setDb(db); | |
}; | |
initDb(); | |
return () => { | |
status.killed = true; | |
setDb((db) => { | |
if (db) { | |
db.terminate(); | |
} | |
return null; | |
}); | |
}; | |
}, []); | |
return db; | |
}; | |