Skip to content

Commit c33702c

Browse files
committed
feat: properly create sqlite file
1 parent dd8078a commit c33702c

1 file changed

Lines changed: 20 additions & 2 deletions

File tree

shared/db/index.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,31 @@ import Database from 'better-sqlite3'
22
import { drizzle as drizzleSqlite } from 'drizzle-orm/better-sqlite3'
33
import { sql } from 'drizzle-orm'
44
import { drizzle as drizzlePostgres } from 'drizzle-orm/node-postgres'
5+
import { mkdirSync } from 'node:fs'
6+
import { dirname, isAbsolute, resolve } from 'node:path'
57
import { Pool } from 'pg'
68
import { envVariables } from '../env'
79
import { dbInitializationStatements } from './init'
810

11+
const isInMemorySqlitePath = (sqlitePath: string) => {
12+
return sqlitePath === ':memory:' || sqlitePath.startsWith('file::memory:')
13+
}
14+
15+
const ensureSqliteFilePath = (sqlitePath: string) => {
16+
if (isInMemorySqlitePath(sqlitePath) || sqlitePath.startsWith('file:')) {
17+
return sqlitePath
18+
}
19+
20+
const resolvedPath = isAbsolute(sqlitePath)
21+
? sqlitePath
22+
: resolve(process.cwd(), sqlitePath)
23+
mkdirSync(dirname(resolvedPath), { recursive: true })
24+
return resolvedPath
25+
}
26+
927
const sqliteClient =
1028
envVariables.dbDriver === 'sqlite'
11-
? new Database(envVariables.dbFilePath)
29+
? new Database(ensureSqliteFilePath(envVariables.dbFilePath))
1230
: null
1331

1432
const postgresClient =
@@ -42,7 +60,7 @@ export const backupDatabase = async (backupFilePath: string) => {
4260
if (envVariables.dbDriver !== 'sqlite') {
4361
throw new Error('Database backup is supported only with sqlite driver')
4462
}
45-
await sqliteClient!.backup(backupFilePath)
63+
await sqliteClient!.backup(ensureSqliteFilePath(backupFilePath))
4664
}
4765

4866
export const resetDatabaseForTests = async () => {

0 commit comments

Comments
 (0)