mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-22 08:47:10 +08:00
fix(core): dependency cycle (#9628)
This commit is contained in:
@@ -7,7 +7,6 @@ import { WorkspaceDBService } from './services/db';
|
|||||||
|
|
||||||
export type { DocCustomPropertyInfo, DocProperties } from './schema';
|
export type { DocCustomPropertyInfo, DocProperties } from './schema';
|
||||||
export { WorkspaceDBService } from './services/db';
|
export { WorkspaceDBService } from './services/db';
|
||||||
export { transformWorkspaceDBLocalToCloud } from './services/db';
|
|
||||||
|
|
||||||
export function configureWorkspaceDBModule(framework: Framework) {
|
export function configureWorkspaceDBModule(framework: Framework) {
|
||||||
framework
|
framework
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import {
|
import {
|
||||||
createORMClient,
|
createORMClient,
|
||||||
type DocStorage,
|
|
||||||
ObjectPool,
|
ObjectPool,
|
||||||
Service,
|
Service,
|
||||||
YjsDBAdapter,
|
YjsDBAdapter,
|
||||||
@@ -100,29 +99,3 @@ export class WorkspaceDBService extends Service {
|
|||||||
return docId.startsWith('db$') || docId.startsWith('userdata$');
|
return docId.startsWith('db$') || docId.startsWith('userdata$');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function transformWorkspaceDBLocalToCloud(
|
|
||||||
localWorkspaceId: string,
|
|
||||||
cloudWorkspaceId: string,
|
|
||||||
localDocStorage: DocStorage,
|
|
||||||
cloudDocStorage: DocStorage,
|
|
||||||
accountId: string
|
|
||||||
) {
|
|
||||||
for (const tableName of Object.keys(AFFiNE_WORKSPACE_DB_SCHEMA)) {
|
|
||||||
const localDocName = `db$${localWorkspaceId}$${tableName}`;
|
|
||||||
const localDoc = await localDocStorage.doc.get(localDocName);
|
|
||||||
if (localDoc) {
|
|
||||||
const cloudDocName = `db$${cloudWorkspaceId}$${tableName}`;
|
|
||||||
await cloudDocStorage.doc.set(cloudDocName, localDoc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const tableName of Object.keys(AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA)) {
|
|
||||||
const localDocName = `userdata$__local__$${localWorkspaceId}$${tableName}`;
|
|
||||||
const localDoc = await localDocStorage.doc.get(localDocName);
|
|
||||||
if (localDoc) {
|
|
||||||
const cloudDocName = `userdata$${accountId}$${cloudWorkspaceId}$${tableName}`;
|
|
||||||
await cloudDocStorage.doc.set(cloudDocName, localDoc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
32
packages/frontend/core/src/modules/db/utils.ts
Normal file
32
packages/frontend/core/src/modules/db/utils.ts
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import type { DocStorage } from '@toeverything/infra';
|
||||||
|
|
||||||
|
import {
|
||||||
|
AFFiNE_WORKSPACE_DB_SCHEMA,
|
||||||
|
AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA,
|
||||||
|
} from './schema';
|
||||||
|
|
||||||
|
export async function transformWorkspaceDBLocalToCloud(
|
||||||
|
localWorkspaceId: string,
|
||||||
|
cloudWorkspaceId: string,
|
||||||
|
localDocStorage: DocStorage,
|
||||||
|
cloudDocStorage: DocStorage,
|
||||||
|
accountId: string
|
||||||
|
) {
|
||||||
|
for (const tableName of Object.keys(AFFiNE_WORKSPACE_DB_SCHEMA)) {
|
||||||
|
const localDocName = `db$${localWorkspaceId}$${tableName}`;
|
||||||
|
const localDoc = await localDocStorage.doc.get(localDocName);
|
||||||
|
if (localDoc) {
|
||||||
|
const cloudDocName = `db$${cloudWorkspaceId}$${tableName}`;
|
||||||
|
await cloudDocStorage.doc.set(cloudDocName, localDoc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (const tableName of Object.keys(AFFiNE_WORKSPACE_USERDATA_DB_SCHEMA)) {
|
||||||
|
const localDocName = `userdata$__local__$${localWorkspaceId}$${tableName}`;
|
||||||
|
const localDoc = await localDocStorage.doc.get(localDocName);
|
||||||
|
if (localDoc) {
|
||||||
|
const cloudDocName = `userdata$${accountId}$${cloudWorkspaceId}$${tableName}`;
|
||||||
|
await cloudDocStorage.doc.set(cloudDocName, localDoc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@ import { assertEquals } from '@blocksuite/affine/global/utils';
|
|||||||
import { Service } from '@toeverything/infra';
|
import { Service } from '@toeverything/infra';
|
||||||
import { applyUpdate } from 'yjs';
|
import { applyUpdate } from 'yjs';
|
||||||
|
|
||||||
import { transformWorkspaceDBLocalToCloud } from '../../db';
|
import { transformWorkspaceDBLocalToCloud } from '../../db/utils';
|
||||||
import type { Workspace } from '../entities/workspace';
|
import type { Workspace } from '../entities/workspace';
|
||||||
import type { WorkspaceMetadata } from '../metadata';
|
import type { WorkspaceMetadata } from '../metadata';
|
||||||
import type { WorkspaceDestroyService } from './destroy';
|
import type { WorkspaceDestroyService } from './destroy';
|
||||||
|
|||||||
Reference in New Issue
Block a user