From 1ea19adfec63a6004b1d6183a23c63810880e7ec Mon Sep 17 00:00:00 2001 From: fullex <0xfullex@gmail.com> Date: Thu, 20 Nov 2025 22:42:43 +0800 Subject: [PATCH] refactor: update migration types and imports for consistency - Replaced core types with shared types in migration files to ensure consistency across the application. - Deleted obsolete core types file and updated imports in migrator and window components to reference the new shared types. - Enhanced the migration process by streamlining type definitions and improving code maintainability. --- .../shared/data/migration/v2}/types.ts | 2 +- .../data/migration/v2/core/MigrationEngine.ts | 12 ++--- src/main/data/migration/v2/index.ts | 2 +- .../v2/migrators/AssistantMigrator.ts | 2 +- .../migration/v2/migrators/BaseMigrator.ts | 3 +- .../migration/v2/migrators/ChatMigrator.ts | 2 +- .../v2/migrators/KnowledgeMigrator.ts | 2 +- .../v2/migrators/PreferencesMigrator.ts | 2 +- .../v2/window/MigrationIpcHandler.ts | 2 +- .../src/windows/migrationV2/MigrationApp.tsx | 2 +- .../migrationV2/components/ActionButtons.tsx | 3 +- .../components/MigratorProgress.tsx | 3 +- .../migrationV2/components/StageIndicator.tsx | 3 +- .../migrationV2/hooks/useMigrationProgress.ts | 8 ++- .../src/windows/migrationV2/i18n/locales.ts | 3 +- src/renderer/src/windows/migrationV2/types.ts | 51 ------------------- 16 files changed, 26 insertions(+), 76 deletions(-) rename {src/main/data/migration/v2/core => packages/shared/data/migration/v2}/types.ts (98%) delete mode 100644 src/renderer/src/windows/migrationV2/types.ts diff --git a/src/main/data/migration/v2/core/types.ts b/packages/shared/data/migration/v2/types.ts similarity index 98% rename from src/main/data/migration/v2/core/types.ts rename to packages/shared/data/migration/v2/types.ts index ecc91c07a5..688fd0ea60 100644 --- a/src/main/data/migration/v2/core/types.ts +++ b/packages/shared/data/migration/v2/types.ts @@ -1,5 +1,5 @@ /** - * Core type definitions for the migration system + * Shared type definitions for the migration system */ // Migration stages for UI flow diff --git a/src/main/data/migration/v2/core/MigrationEngine.ts b/src/main/data/migration/v2/core/MigrationEngine.ts index a0a0bf79b2..428c0633b1 100644 --- a/src/main/data/migration/v2/core/MigrationEngine.ts +++ b/src/main/data/migration/v2/core/MigrationEngine.ts @@ -7,11 +7,6 @@ import { dbService } from '@data/db/DbService' import { appStateTable } from '@data/db/schemas/appState' import { preferenceTable } from '@data/db/schemas/preference' import { loggerService } from '@logger' -import { eq, sql } from 'drizzle-orm' -import fs from 'fs/promises' - -import type { BaseMigrator } from '../migrators/BaseMigrator' -import { createMigrationContext } from './MigrationContext' import type { MigrationProgress, MigrationResult, @@ -20,7 +15,12 @@ import type { MigratorResult, MigratorStatus, ValidateResult -} from './types' +} from '@shared/data/migration/v2/types' +import { eq, sql } from 'drizzle-orm' +import fs from 'fs/promises' + +import type { BaseMigrator } from '../migrators/BaseMigrator' +import { createMigrationContext } from './MigrationContext' // TODO: Import these tables when they are created in user data schema // import { assistantTable } from '../../db/schemas/assistant' diff --git a/src/main/data/migration/v2/index.ts b/src/main/data/migration/v2/index.ts index 7c0e661b4d..5d0b6d095a 100644 --- a/src/main/data/migration/v2/index.ts +++ b/src/main/data/migration/v2/index.ts @@ -5,7 +5,7 @@ // Core export { createMigrationContext, type MigrationContext } from './core/MigrationContext' export { MigrationEngine, migrationEngine } from './core/MigrationEngine' -export * from './core/types' +export * from '@shared/data/migration/v2/types' // Migrators export { getAllMigrators } from './migrators' diff --git a/src/main/data/migration/v2/migrators/AssistantMigrator.ts b/src/main/data/migration/v2/migrators/AssistantMigrator.ts index e41d762bcf..a0c2afd1ac 100644 --- a/src/main/data/migration/v2/migrators/AssistantMigrator.ts +++ b/src/main/data/migration/v2/migrators/AssistantMigrator.ts @@ -7,8 +7,8 @@ */ import { loggerService } from '@logger' +import type { ExecuteResult, PrepareResult, ValidateResult } from '@shared/data/migration/v2/types' -import type { ExecuteResult, PrepareResult, ValidateResult } from '../core/types' import { BaseMigrator } from './BaseMigrator' const logger = loggerService.withContext('AssistantMigrator') diff --git a/src/main/data/migration/v2/migrators/BaseMigrator.ts b/src/main/data/migration/v2/migrators/BaseMigrator.ts index b8e80c1c99..b29275b013 100644 --- a/src/main/data/migration/v2/migrators/BaseMigrator.ts +++ b/src/main/data/migration/v2/migrators/BaseMigrator.ts @@ -3,8 +3,9 @@ * Each migrator handles migration of a specific business domain */ +import type { ExecuteResult, PrepareResult, ValidateResult } from '@shared/data/migration/v2/types' + import type { MigrationContext } from '../core/MigrationContext' -import type { ExecuteResult, PrepareResult, ValidateResult } from '../core/types' export abstract class BaseMigrator { // Metadata - must be implemented by subclasses diff --git a/src/main/data/migration/v2/migrators/ChatMigrator.ts b/src/main/data/migration/v2/migrators/ChatMigrator.ts index ae58be9631..5a9b845a00 100644 --- a/src/main/data/migration/v2/migrators/ChatMigrator.ts +++ b/src/main/data/migration/v2/migrators/ChatMigrator.ts @@ -10,8 +10,8 @@ */ import { loggerService } from '@logger' +import type { ExecuteResult, PrepareResult, ValidateResult } from '@shared/data/migration/v2/types' -import type { ExecuteResult, PrepareResult, ValidateResult } from '../core/types' import { BaseMigrator } from './BaseMigrator' const logger = loggerService.withContext('ChatMigrator') diff --git a/src/main/data/migration/v2/migrators/KnowledgeMigrator.ts b/src/main/data/migration/v2/migrators/KnowledgeMigrator.ts index 53fdac66ff..898220c78e 100644 --- a/src/main/data/migration/v2/migrators/KnowledgeMigrator.ts +++ b/src/main/data/migration/v2/migrators/KnowledgeMigrator.ts @@ -10,8 +10,8 @@ */ import { loggerService } from '@logger' +import type { ExecuteResult, PrepareResult, ValidateResult } from '@shared/data/migration/v2/types' -import type { ExecuteResult, PrepareResult, ValidateResult } from '../core/types' import { BaseMigrator } from './BaseMigrator' const logger = loggerService.withContext('KnowledgeMigrator') diff --git a/src/main/data/migration/v2/migrators/PreferencesMigrator.ts b/src/main/data/migration/v2/migrators/PreferencesMigrator.ts index ad4cf90fe4..e5c36f91b1 100644 --- a/src/main/data/migration/v2/migrators/PreferencesMigrator.ts +++ b/src/main/data/migration/v2/migrators/PreferencesMigrator.ts @@ -5,11 +5,11 @@ import { preferenceTable } from '@data/db/schemas/preference' import { loggerService } from '@logger' import { configManager } from '@main/services/ConfigManager' +import type { ExecuteResult, PrepareResult, ValidateResult, ValidationError } from '@shared/data/migration/v2/types' import { DefaultPreferences } from '@shared/data/preference/preferenceSchemas' import { and, eq, sql } from 'drizzle-orm' import type { MigrationContext } from '../core/MigrationContext' -import type { ExecuteResult, PrepareResult, ValidateResult, ValidationError } from '../core/types' import { BaseMigrator } from './BaseMigrator' import { ELECTRON_STORE_MAPPINGS, REDUX_STORE_MAPPINGS } from './mappings/PreferencesMappings' diff --git a/src/main/data/migration/v2/window/MigrationIpcHandler.ts b/src/main/data/migration/v2/window/MigrationIpcHandler.ts index b77efaa3dd..749ffb29c4 100644 --- a/src/main/data/migration/v2/window/MigrationIpcHandler.ts +++ b/src/main/data/migration/v2/window/MigrationIpcHandler.ts @@ -4,12 +4,12 @@ import { loggerService } from '@logger' import BackupManager from '@main/services/BackupManager' +import { MigrationIpcChannels, type MigrationProgress } from '@shared/data/migration/v2/types' import { app, dialog, ipcMain } from 'electron' import fs from 'fs/promises' import path from 'path' import { migrationEngine } from '../core/MigrationEngine' -import { MigrationIpcChannels, type MigrationProgress } from '../core/types' import { migrationWindowManager } from './MigrationWindowManager' const logger = loggerService.withContext('MigrationIpcHandler') diff --git a/src/renderer/src/windows/migrationV2/MigrationApp.tsx b/src/renderer/src/windows/migrationV2/MigrationApp.tsx index 8a547a3322..e4036482ba 100644 --- a/src/renderer/src/windows/migrationV2/MigrationApp.tsx +++ b/src/renderer/src/windows/migrationV2/MigrationApp.tsx @@ -1,6 +1,7 @@ import { Button, Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@cherrystudio/ui' import { AppLogo } from '@renderer/config/env' import { loggerService } from '@renderer/services/LoggerService' +import { MigrationIpcChannels } from '@shared/data/migration/v2/types' import { Progress, Space, Steps } from 'antd' import { AlertTriangle, CheckCircle, CheckCircle2, Database, Loader2, Rocket } from 'lucide-react' import React, { useMemo, useState } from 'react' @@ -10,7 +11,6 @@ import styled from 'styled-components' import { MigratorProgressList } from './components' import { DexieExporter, ReduxExporter } from './exporters' import { useMigrationActions, useMigrationProgress } from './hooks/useMigrationProgress' -import { MigrationIpcChannels } from './types' const logger = loggerService.withContext('MigrationApp') diff --git a/src/renderer/src/windows/migrationV2/components/ActionButtons.tsx b/src/renderer/src/windows/migrationV2/components/ActionButtons.tsx index 5dffd9f9c4..5b1faf0dc0 100644 --- a/src/renderer/src/windows/migrationV2/components/ActionButtons.tsx +++ b/src/renderer/src/windows/migrationV2/components/ActionButtons.tsx @@ -3,10 +3,9 @@ */ import { Button } from '@cherrystudio/ui' +import type { MigrationStage } from '@shared/data/migration/v2/types' import React from 'react' -import type { MigrationStage } from '../types' - interface Props { stage: MigrationStage onProceedToBackup: () => void diff --git a/src/renderer/src/windows/migrationV2/components/MigratorProgress.tsx b/src/renderer/src/windows/migrationV2/components/MigratorProgress.tsx index 65b7a40d82..e05597d9b7 100644 --- a/src/renderer/src/windows/migrationV2/components/MigratorProgress.tsx +++ b/src/renderer/src/windows/migrationV2/components/MigratorProgress.tsx @@ -3,13 +3,12 @@ * Shows the status of each migrator */ +import type { MigratorProgress as MigratorProgressType, MigratorStatus } from '@shared/data/migration/v2/types' import { CheckCircle2, Circle, Loader2, XCircle } from 'lucide-react' import React from 'react' import { useTranslation } from 'react-i18next' import styled, { keyframes } from 'styled-components' -import type { MigratorProgress as MigratorProgressType, MigratorStatus } from '../types' - interface Props { migrators: MigratorProgressType[] overallProgress: number diff --git a/src/renderer/src/windows/migrationV2/components/StageIndicator.tsx b/src/renderer/src/windows/migrationV2/components/StageIndicator.tsx index 69b0061d75..9ac0ec853b 100644 --- a/src/renderer/src/windows/migrationV2/components/StageIndicator.tsx +++ b/src/renderer/src/windows/migrationV2/components/StageIndicator.tsx @@ -3,11 +3,10 @@ * Shows the current migration stage in a stepper format */ +import type { MigrationStage } from '@shared/data/migration/v2/types' import { CheckCircle2, Database, FileArchive, Rocket } from 'lucide-react' import React from 'react' -import type { MigrationStage } from '../types' - interface Props { stage: MigrationStage } diff --git a/src/renderer/src/windows/migrationV2/hooks/useMigrationProgress.ts b/src/renderer/src/windows/migrationV2/hooks/useMigrationProgress.ts index de6943898d..cbf0e99b1e 100644 --- a/src/renderer/src/windows/migrationV2/hooks/useMigrationProgress.ts +++ b/src/renderer/src/windows/migrationV2/hooks/useMigrationProgress.ts @@ -2,10 +2,14 @@ * Hook for subscribing to migration progress updates */ +import { + MigrationIpcChannels, + type MigrationProgress, + type MigrationStage, + type MigratorStatus +} from '@shared/data/migration/v2/types' import { useCallback, useEffect, useState } from 'react' -import { MigrationIpcChannels, type MigrationProgress, type MigrationStage, type MigratorStatus } from '../types' - // Re-export types for convenience export type { MigrationProgress, MigrationStage, MigratorStatus } diff --git a/src/renderer/src/windows/migrationV2/i18n/locales.ts b/src/renderer/src/windows/migrationV2/i18n/locales.ts index 99e32d5fa6..6678c2e12f 100644 --- a/src/renderer/src/windows/migrationV2/i18n/locales.ts +++ b/src/renderer/src/windows/migrationV2/i18n/locales.ts @@ -33,8 +33,7 @@ export const zhCN = { }, introduction: { title: '将数据迁移到新的架构中', - description_1: - 'Cherry Studio对数据的存储和使用方式进行了重大重构,在新的架构下,效率和安全性将会得到极大提升。', + description_1: 'Cherry Studio对数据的存储和使用方式进行了重大重构,在新的架构下,效率和安全性将会得到极大提升。', description_2: '数据必须进行迁移,才能在新版本中使用。', description_3: '我们会指导你完成迁移,迁移过程不会损坏原来的数据,你随时可以取消迁移,并继续使用旧版本。' }, diff --git a/src/renderer/src/windows/migrationV2/types.ts b/src/renderer/src/windows/migrationV2/types.ts deleted file mode 100644 index 79c0b6bd21..0000000000 --- a/src/renderer/src/windows/migrationV2/types.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * Migration types for Renderer process - * Duplicated from Main to avoid cross-process imports - */ - -export type MigrationStage = - | 'introduction' - | 'backup_required' - | 'backup_progress' - | 'backup_confirmed' - | 'migration' - | 'migration_completed' - | 'completed' - | 'error' - -export type MigratorStatus = 'pending' | 'running' | 'completed' | 'failed' - -export interface MigratorProgress { - id: string - name: string - status: MigratorStatus - error?: string -} - -export interface MigrationProgress { - stage: MigrationStage - overallProgress: number - currentMessage: string - migrators: MigratorProgress[] - error?: string -} - -// IPC channel names -export const MigrationIpcChannels = { - CheckNeeded: 'migration:check-needed', - GetProgress: 'migration:get-progress', - GetLastError: 'migration:get-last-error', - GetUserDataPath: 'migration:get-user-data-path', - Start: 'migration:start', - ProceedToBackup: 'migration:proceed-to-backup', - ShowBackupDialog: 'migration:show-backup-dialog', - BackupCompleted: 'migration:backup-completed', - StartMigration: 'migration:start-migration', - Retry: 'migration:retry', - Cancel: 'migration:cancel', - Restart: 'migration:restart', - SendReduxData: 'migration:send-redux-data', - DexieExportCompleted: 'migration:dexie-export-completed', - Progress: 'migration:progress', - ExportProgress: 'migration:export-progress' -} as const