fix(mobile): auto delete database when migrate fail

This commit is contained in:
Stephen Zhou 2025-06-11 11:47:42 +08:00
parent 784a95cff1
commit c2e0c3d20d
No known key found for this signature in database
1 changed files with 5 additions and 4 deletions

View File

@ -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)
}
}