mirror of
https://github.com/toeverything/AFFiNE.git
synced 2024-11-24 03:26:31 +03:00
fix(core): find lost data (#4035)
This commit is contained in:
parent
cbb5b6e4a5
commit
02bd9fc2d1
@ -1,5 +1,10 @@
|
||||
import { type InsertRow, SqliteConnection } from '@affine/native';
|
||||
import {
|
||||
type InsertRow,
|
||||
SqliteConnection,
|
||||
ValidationResult,
|
||||
} from '@affine/native';
|
||||
|
||||
import { migrateToLatestDatabase } from '../db/migration';
|
||||
import { logger } from '../logger';
|
||||
|
||||
/**
|
||||
@ -13,6 +18,10 @@ export abstract class BaseSQLiteAdapter {
|
||||
|
||||
async connectIfNeeded() {
|
||||
if (!this.db) {
|
||||
const validation = await SqliteConnection.validate(this.path);
|
||||
if (validation === ValidationResult.MissingVersionColumn) {
|
||||
await migrateToLatestDatabase(this.path);
|
||||
}
|
||||
this.db = new SqliteConnection(this.path);
|
||||
await this.db.connect();
|
||||
logger.info(`[SQLiteAdapter:${this.role}]`, 'connected:', this.path);
|
||||
|
@ -98,10 +98,17 @@ export const CRUD: WorkspaceCRUD<WorkspaceFlavour.LOCAL> = {
|
||||
list: async () => {
|
||||
logger.debug('list');
|
||||
const storage = getStorage();
|
||||
const allWorkspaceIDs: string[] = storage.getItem(kStoreKey, []) as z.infer<
|
||||
let allWorkspaceIDs: string[] = storage.getItem(kStoreKey, []) as z.infer<
|
||||
typeof schema
|
||||
>;
|
||||
|
||||
// fixme: remove this once desktop data migration is done
|
||||
if (window.apis && environment.isDesktop) {
|
||||
const desktopIds = (await window.apis.workspace.list()).map(v => v[0]);
|
||||
allWorkspaceIDs = [...new Set([...allWorkspaceIDs, ...desktopIds])];
|
||||
storage.setItem(kStoreKey, allWorkspaceIDs);
|
||||
}
|
||||
|
||||
const workspaces = (
|
||||
await Promise.all(allWorkspaceIDs.map(id => CRUD.get(id)))
|
||||
).filter(item => item !== null) as LocalWorkspace[];
|
||||
|
Loading…
Reference in New Issue
Block a user