42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
用户表软删除字段迁移脚本
|
|
|
|
该脚本用于为历史数据库添加 `is_deleted` 与 `deleted_at` 字段,
|
|
同时会执行现有的数据库迁移逻辑,确保用户表结构与最新模型保持一致。
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
# 将项目根目录加入到 Python 路径,便于脚本在容器中执行
|
|
PROJECT_ROOT = Path(__file__).resolve().parent.parent
|
|
if str(PROJECT_ROOT) not in sys.path:
|
|
sys.path.insert(0, str(PROJECT_ROOT))
|
|
|
|
from server.utils.migrate import DatabaseMigrator # noqa: E402
|
|
from src import config # noqa: E402
|
|
|
|
|
|
def main() -> None:
|
|
db_path = Path(config.save_dir) / "database" / "server.db"
|
|
migrator = DatabaseMigrator(str(db_path))
|
|
|
|
print(f"检测数据库: {db_path}")
|
|
current_version = migrator.get_current_version()
|
|
latest_version = migrator.get_latest_migration_version()
|
|
print(f"当前迁移版本: v{current_version}, 最新版本: v{latest_version}")
|
|
|
|
try:
|
|
migrator.run_migrations()
|
|
print("✅ 迁移完成,数据库结构已更新")
|
|
except Exception as exc:
|
|
print(f"❌ 迁移失败: {exc}")
|
|
raise
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|