feat(database-migrations): implement database migration manager and related components

- Add DatabaseMigrationManager for orchestrating database migrations, including planning and executing migration steps.
- Introduce models for migration state, execution context, and migration steps.
- Implement MigrationPlanner to generate migration plans based on current and target versions.
- Create MigrationRegistry for registering and managing migration steps.
- Develop SchemaVersionResolver to determine the current database schema version.
- Add SQLiteSchemaInspector for inspecting SQLite database structures.
- Implement progress reporting tools using rich for visualizing migration progress.
- Introduce SQLiteUserVersionStore for managing schema version storage in SQLite.
This commit is contained in:
DrSmoothl
2026-03-31 09:16:25 +08:00
parent ea4cea39f2
commit c2c992ff01
15 changed files with 4025 additions and 4 deletions

View File

@@ -0,0 +1,79 @@
"""数据库迁移基础设施导出模块。"""
from .bootstrap import DatabaseMigrationBootstrapper, create_database_migration_bootstrapper
from .builtin import (
EMPTY_SCHEMA_VERSION,
LATEST_SCHEMA_VERSION,
LEGACY_V1_SCHEMA_VERSION,
build_default_migration_registry,
build_default_schema_version_resolver,
)
from .exceptions import (
DatabaseMigrationConfigurationError,
DatabaseMigrationError,
DatabaseMigrationExecutionError,
DatabaseMigrationPlanningError,
DatabaseMigrationVersionError,
MissingMigrationStepError,
UnrecognizedDatabaseSchemaError,
UnsupportedMigrationDirectionError,
)
from .manager import DatabaseMigrationManager
from .models import (
ColumnSchema,
DatabaseMigrationState,
DatabaseSchemaSnapshot,
MigrationExecutionContext,
MigrationPlan,
MigrationStep,
ResolvedSchemaVersion,
SchemaVersionSource,
TableSchema,
)
from .planner import MigrationPlanner
from .progress import (
BaseMigrationProgressReporter,
RichMigrationProgressReporter,
create_rich_migration_progress_reporter,
)
from .registry import MigrationRegistry
from .resolver import BaseSchemaVersionDetector, SchemaVersionResolver
from .schema import SQLiteSchemaInspector
from .version_store import SQLiteUserVersionStore
__all__ = [
"BaseSchemaVersionDetector",
"BaseMigrationProgressReporter",
"build_default_migration_registry",
"build_default_schema_version_resolver",
"ColumnSchema",
"create_database_migration_bootstrapper",
"create_rich_migration_progress_reporter",
"DatabaseMigrationConfigurationError",
"DatabaseMigrationError",
"DatabaseMigrationBootstrapper",
"DatabaseMigrationExecutionError",
"DatabaseMigrationManager",
"DatabaseMigrationPlanningError",
"DatabaseMigrationState",
"DatabaseMigrationVersionError",
"DatabaseSchemaSnapshot",
"EMPTY_SCHEMA_VERSION",
"LATEST_SCHEMA_VERSION",
"LEGACY_V1_SCHEMA_VERSION",
"MigrationExecutionContext",
"MigrationPlan",
"MigrationPlanner",
"MigrationRegistry",
"MigrationStep",
"MissingMigrationStepError",
"ResolvedSchemaVersion",
"RichMigrationProgressReporter",
"SchemaVersionResolver",
"SchemaVersionSource",
"SQLiteSchemaInspector",
"SQLiteUserVersionStore",
"TableSchema",
"UnrecognizedDatabaseSchemaError",
"UnsupportedMigrationDirectionError",
]