From 9882af5d01536aeee09b0bf8d863ccf13c66b38d Mon Sep 17 00:00:00 2001 From: fundon Date: Fri, 10 Jan 2025 07:37:13 +0000 Subject: [PATCH] fix(core): dependency cycle (#9628) --- .../frontend/core/src/modules/db/index.ts | 1 - .../core/src/modules/db/services/db.ts | 27 ---------------- .../frontend/core/src/modules/db/utils.ts | 32 +++++++++++++++++++ .../modules/workspace/services/transform.ts | 2 +- 4 files changed, 33 insertions(+), 29 deletions(-) create mode 100644 packages/frontend/core/src/modules/db/utils.ts diff --git a/packages/frontend/core/src/modules/db/index.ts b/packages/frontend/core/src/modules/db/index.ts index 7b62456b3b..7fc1c5ceb9 100644 --- a/packages/frontend/core/src/modules/db/index.ts +++ b/packages/frontend/core/src/modules/db/index.ts @@ -7,7 +7,6 @@ import { WorkspaceDBService } from './services/db'; export type { DocCustomPropertyInfo, DocProperties } from './schema'; export { WorkspaceDBService } from './services/db'; -export { transformWorkspaceDBLocalToCloud } from './services/db'; export function configureWorkspaceDBModule(framework: Framework) { framework diff --git a/packages/frontend/core/src/modules/db/services/db.ts b/packages/frontend/core/src/modules/db/services/db.ts index 624924caaa..41138c5d85 100644 --- a/packages/frontend/core/src/modules/db/services/db.ts +++ b/packages/frontend/core/src/modules/db/services/db.ts @@ -1,6 +1,5 @@ import { createORMClient, - type DocStorage, ObjectPool, Service, YjsDBAdapter, @@ -100,29 +99,3 @@ export class WorkspaceDBService extends Service { 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); - } - } -} diff --git a/packages/frontend/core/src/modules/db/utils.ts b/packages/frontend/core/src/modules/db/utils.ts new file mode 100644 index 0000000000..a55891a42b --- /dev/null +++ b/packages/frontend/core/src/modules/db/utils.ts @@ -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); + } + } +} diff --git a/packages/frontend/core/src/modules/workspace/services/transform.ts b/packages/frontend/core/src/modules/workspace/services/transform.ts index dc5ecad53e..27d97cfac2 100644 --- a/packages/frontend/core/src/modules/workspace/services/transform.ts +++ b/packages/frontend/core/src/modules/workspace/services/transform.ts @@ -2,7 +2,7 @@ import { assertEquals } from '@blocksuite/affine/global/utils'; import { Service } from '@toeverything/infra'; import { applyUpdate } from 'yjs'; -import { transformWorkspaceDBLocalToCloud } from '../../db'; +import { transformWorkspaceDBLocalToCloud } from '../../db/utils'; import type { Workspace } from '../entities/workspace'; import type { WorkspaceMetadata } from '../metadata'; import type { WorkspaceDestroyService } from './destroy';