mirror of
https://github.com/tale/headplane.git
synced 2026-07-26 07:48:14 +00:00
29 lines
799 B
TypeScript
29 lines
799 B
TypeScript
import { mkdir } from 'node:fs/promises';
|
|
import { dirname, resolve } from 'node:path';
|
|
import { migrate } from 'drizzle-orm/libsql/migrator';
|
|
import { drizzle } from 'drizzle-orm/libsql/sqlite3';
|
|
import log from '~/utils/log';
|
|
|
|
export async function createDbClient(path: string) {
|
|
const realPath = resolve(path);
|
|
try {
|
|
await mkdir(dirname(realPath), { recursive: true });
|
|
} catch (error) {
|
|
log.error(
|
|
'server',
|
|
'Failed to create directory for database at %s: %s',
|
|
realPath,
|
|
error instanceof Error ? error.message : String(error),
|
|
);
|
|
throw new Error(`Could not create directory for database at ${realPath}`);
|
|
}
|
|
|
|
// Turn the path into a URL with the file protocol
|
|
const db = drizzle(`file://${realPath}`);
|
|
migrate(db, {
|
|
migrationsFolder: './drizzle',
|
|
});
|
|
|
|
return db;
|
|
}
|