secondme-api / scripts /downgrade_migration.py
Gemini
feat: add detailed logging
01d5a5d
raw
history blame
1.8 kB
#!/usr/bin/env python
"""
Database Migration Downgrade Tool
Usage:
python downgrade_migration.py [version]
Arguments:
version: Optional, version to downgrade to (inclusive).
If not provided, all migrations will be downgraded.
"""
import os
import sys
import sqlite3
import importlib.util
from pathlib import Path
# Add project root to Python path
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, project_root)
# Import migration manager
from lpm_kernel.database.migration_manager import MigrationManager
from lpm_kernel.configs.config import Config
def main():
# Get database path
config = Config.from_env()
db_path = config.database.db_file
print(f"Database path: {db_path}")
# Create migration manager
manager = MigrationManager(db_path)
# Get applied migrations
applied = manager.get_applied_migrations()
print(f"Applied migrations: {', '.join(applied) if applied else 'none'}")
if not applied:
print("No migrations to downgrade")
return
# Check command line arguments
if len(sys.argv) > 1:
target_version = sys.argv[1]
if target_version not in applied:
print(f"Error: Version {target_version} is not applied, cannot downgrade to this version")
return
print(f"Downgrading to version {target_version}...")
downgraded = manager.downgrade_to_version(target_version)
else:
print("Downgrading all migrations...")
downgraded = manager.downgrade_to_version()
if downgraded:
print(f"Successfully downgraded migrations: {', '.join(downgraded)}")
else:
print("No migrations were downgraded")
if __name__ == "__main__":
main()