Back to Cherry Studio

TranslateMigrator

src/main/data/migration/v2/migrators/README-TranslateMigrator.md

2.0.02.6 KB
Original Source

TranslateMigrator

The TranslateMigrator handles migration of translate history and custom languages from Dexie/IndexedDB to SQLite.

Data Sources

DataSourceFile/Path
Translate history recordsDexie translate_history tabletranslate_history.json
Custom translate languagesDexie translate_languages tabletranslate_languages.json

Translate History

Data Quality Handling

IssueDetectionHandling
Missing required fields!id, !sourceText, !targetText, !sourceLanguage, !targetLanguageSkip record, increment skippedCount, log warning
Invalid/missing createdAtnew Date(value).getTime() returns NaN or falsyFallback to Date.now()
Missing star fieldold.star is undefinedDefault to false
Missing updatedAtNot present in old dataSet to same value as createdAt

Field Mappings

Source (Dexie)Target (translateHistoryTable)Notes
ididDirect copy
sourceTextsourceTextDirect copy
targetTexttargetTextDirect copy
sourceLanguagesourceLanguageDirect copy
targetLanguagetargetLanguageDirect copy
starstarDefault false if missing
createdAtcreatedAtISO string → integer timestamp, fallback Date.now()
(none)updatedAtGenerated, same value as createdAt

Dropped fields: None

Translate Languages

Data Quality Handling

IssueDetectionHandling
Missing required fields!id, !langCode, !value, !emojiSkip record, increment skippedCount, log warning

Field Mappings

Source (Dexie)Target (translateLanguageTable)Notes
ididDirect copy
langCodelangCodeDirect copy, unique constraint
valuevalueDirect copy
emojiemojiDirect copy
(none)createdAtGenerated as Date.now(), consistent across batch
(none)updatedAtGenerated as Date.now(), consistent across batch

Dropped fields: None

Implementation Files

  • TranslateMigrator.ts - Single migrator class handling both tables with prepare/execute/validate phases

Code Quality

All implementation code includes detailed comments:

  • File-level comments: Describe purpose, data sources, and transformations
  • Function-level comments: Purpose and transformation logic
  • Validation comments: Skip conditions and fallback behavior