feat: add version migration system for schema changes (Closes #104) #114

Merged
shahondin1624 merged 1 commits from feature/issue-104-no-version-migration-system-for-schema-changes into main 2026-04-04 20:52:35 +02:00
Owner

Summary

  • Implements a version migration framework that automatically upgrades serialized character data from older schema versions to the current version on deserialization
  • Adds MigrationRegistry for chaining sequential migrations, with a concrete v0.1 -> v0.2 migration as the first entry
  • Centralizes schema version into SchemaVersion.CURRENT constant referenced by all model classes
  • Includes 17 unit tests covering migration paths, unknown field handling, missing field defaults, and error cases

Changes

New files:

  • model/migration/SchemaVersion.kt — Central version constant
  • model/migration/VersionMigration.kt — Migration interface
  • model/migration/MigrationRegistry.kt — Registry that finds and applies migration chains
  • model/migration/MigrationV01ToV02.kt — First concrete migration (adds notes/lifestyles defaults, updates version fields)
  • VersionMigrationTest.kt — 17 unit tests

Modified files:

  • DataLoader.kt — Now parses JSON to tree first, applies migrations, then decodes
  • All 5 Versionable model classes — Updated default version from hardcoded "v0.1" to SchemaVersion.CURRENT

Closes #104

## Summary - Implements a version migration framework that automatically upgrades serialized character data from older schema versions to the current version on deserialization - Adds `MigrationRegistry` for chaining sequential migrations, with a concrete v0.1 -> v0.2 migration as the first entry - Centralizes schema version into `SchemaVersion.CURRENT` constant referenced by all model classes - Includes 17 unit tests covering migration paths, unknown field handling, missing field defaults, and error cases ## Changes **New files:** - `model/migration/SchemaVersion.kt` — Central version constant - `model/migration/VersionMigration.kt` — Migration interface - `model/migration/MigrationRegistry.kt` — Registry that finds and applies migration chains - `model/migration/MigrationV01ToV02.kt` — First concrete migration (adds notes/lifestyles defaults, updates version fields) - `VersionMigrationTest.kt` — 17 unit tests **Modified files:** - `DataLoader.kt` — Now parses JSON to tree first, applies migrations, then decodes - All 5 Versionable model classes — Updated default version from hardcoded "v0.1" to `SchemaVersion.CURRENT` Closes #104
shahondin1624 added 1 commit 2026-04-04 20:52:27 +02:00
Implement a migration framework that automatically upgrades serialized
character data from older schema versions to the current version on load.
Includes MigrationRegistry for chaining migrations, a concrete v0.1->v0.2
migration, centralized SchemaVersion constant, and 17 unit tests covering
migration paths, unknown fields, missing defaults, and error handling.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
shahondin1624 merged commit 865fc40918 into main 2026-04-04 20:52:35 +02:00
shahondin1624 deleted branch feature/issue-104-no-version-migration-system-for-schema-changes 2026-04-04 20:52:35 +02:00
Sign in to join this conversation.