refactor: delete database to reset

This commit is contained in:
Stephen Zhou 2025-07-08 10:48:26 +08:00
parent 5876e94906
commit 2a9f69c26a
No known key found for this signature in database
4 changed files with 20 additions and 9 deletions

View File

@ -1,4 +1,4 @@
import { resetStore } from "@follow/store/reset"
import { deleteDB } from "@follow/database/db"
import { getStorageNS } from "@follow/utils/ns"
import { clearUISettings } from "~/atoms/settings/ui"
@ -6,7 +6,7 @@ import { clearUISettings } from "~/atoms/settings/ui"
import { clearImageDimensionsDb } from "../image/db"
export const clearLocalPersistStoreData = async () => {
await Promise.all([resetStore(), clearImageDimensionsDb()])
await Promise.all([deleteDB(), clearImageDimensionsDb()])
clearUISettings()
}

View File

@ -74,7 +74,7 @@ export async function migrateDB() {
} catch (error) {
console.error("Failed to migrate database:", error)
indexedDB.deleteDatabase(IDB_NAME)
await deleteDB()
await migrate(db, migrations)
}
}
@ -104,3 +104,7 @@ export async function exportDB() {
URL.revokeObjectURL(fileUrl)
}
export async function deleteDB() {
indexedDB.deleteDatabase(IDB_NAME)
}

View File

@ -26,12 +26,7 @@ export async function migrateDB(): Promise<void> {
await migrate(db, migrations)
} catch (error) {
console.error("Failed to migrate database:", error)
try {
await sqlite.closeAsync()
} catch {
/* empty */
}
await SQLite.deleteDatabaseAsync(SQLITE_DB_NAME)
await deleteDB()
sqlite = SQLite.openDatabaseSync(SQLITE_DB_NAME)
initializeDB()
await migrate(db, migrations)
@ -39,3 +34,11 @@ export async function migrateDB(): Promise<void> {
}
export async function exportDB() {}
export async function deleteDB() {
try {
await sqlite.closeAsync()
} catch {
/* empty */
}
await SQLite.deleteDatabaseAsync(SQLITE_DB_NAME)
}

View File

@ -5,3 +5,7 @@ export declare const db: DB
export declare function initializeDB(): Promise<void>
export declare function migrateDB(): Promise<void>
export declare function exportDB(): Promise<Blob>
/**
* Deletes the database file, normally you should reload the app after calling this function.
*/
export declare function deleteDB(): Promise<void>