mirror of
https://github.com/Quad4-Software/MeshChatX.git
synced 2026-08-18 09:49:09 -04:00
47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
# SPDX-License-Identifier: 0BSD
|
|
|
|
"""Generate schema_v{N}.db fixtures for migration matrix tests."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
from pathlib import Path
|
|
|
|
from meshchatx.src.backend.database.provider import DatabaseProvider
|
|
from meshchatx.src.backend.database.schema import DatabaseSchema
|
|
|
|
ROOT = Path(__file__).resolve().parents[2]
|
|
FIXTURE_DIR = ROOT / "tests/backend/fixtures/schema_versions"
|
|
MANIFEST = FIXTURE_DIR / "manifest.json"
|
|
|
|
|
|
def main() -> int:
|
|
latest = DatabaseSchema.LATEST_VERSION
|
|
FIXTURE_DIR.mkdir(parents=True, exist_ok=True)
|
|
versions = [latest]
|
|
if latest >= 1:
|
|
versions.append(latest - 1)
|
|
if latest >= 2:
|
|
versions.append(latest - 2)
|
|
versions = sorted(set(versions))
|
|
|
|
manifest: dict[str, str] = {"latest_version": str(latest)}
|
|
for ver in versions:
|
|
db_path = FIXTURE_DIR / f"schema_v{ver}.db"
|
|
if db_path.exists():
|
|
db_path.unlink()
|
|
provider = DatabaseProvider(str(db_path))
|
|
schema = DatabaseSchema(provider)
|
|
schema._create_initial_tables()
|
|
schema.migrate_up_to(ver)
|
|
provider.close_all()
|
|
manifest[f"v{ver}"] = db_path.name
|
|
|
|
MANIFEST.write_text(json.dumps(manifest, indent=2) + "\n", encoding="utf-8")
|
|
print(f"Wrote fixtures for versions {versions} under {FIXTURE_DIR}")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|