fix(mobile): auto delete database when migrate fail
This commit is contained in:
parent
784a95cff1
commit
c2e0c3d20d
|
|
@ -1,14 +1,13 @@
|
|||
import type { ExpoSQLiteDatabase } from "drizzle-orm/expo-sqlite"
|
||||
import { drizzle } from "drizzle-orm/expo-sqlite"
|
||||
import { migrate } from "drizzle-orm/expo-sqlite/migrator"
|
||||
import * as FileSystem from "expo-file-system"
|
||||
import * as SQLite from "expo-sqlite"
|
||||
|
||||
import { SQLITE_DB_NAME } from "./constant"
|
||||
import migrations from "./drizzle/migrations"
|
||||
import * as schema from "./schemas"
|
||||
|
||||
export const sqlite = SQLite.openDatabaseSync(SQLITE_DB_NAME)
|
||||
export let sqlite = SQLite.openDatabaseSync(SQLITE_DB_NAME)
|
||||
|
||||
let db: ExpoSQLiteDatabase<typeof schema> & {
|
||||
$client: SQLite.SQLiteDatabase
|
||||
|
|
@ -27,8 +26,10 @@ export async function migrateDb(): Promise<void> {
|
|||
await migrate(db, migrations)
|
||||
} catch (error) {
|
||||
console.error("Failed to migrate database:", error)
|
||||
const dbPath = `${FileSystem.documentDirectory}SQLite/${SQLITE_DB_NAME}`
|
||||
await FileSystem.deleteAsync(dbPath)
|
||||
await sqlite.closeAsync()
|
||||
await SQLite.deleteDatabaseAsync(SQLITE_DB_NAME)
|
||||
sqlite = SQLite.openDatabaseSync(SQLITE_DB_NAME)
|
||||
initializeDb()
|
||||
await migrate(db, migrations)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue