"""База хаба версии 6 для тестов миграции v7: схема и умолчания настроек берутся из замороженных эталонов (tests/fixtures/schema_v6.json, settings_v6.json), а не из кода, который со временем уйдёт вперёд.""" import json import sqlite3 from pathlib import Path FIXTURES = Path(__file__).parent / "fixtures" def make_v6_db(path, *, agent_token="T-agent", client_token="T-client") -> None: schema = json.loads((FIXTURES / "schema_v6.json").read_text(encoding="utf-8")) defaults = json.loads((FIXTURES / "settings_v6.json").read_text(encoding="utf-8"))["defaults"] conn = sqlite3.connect(str(path), isolation_level=None) try: for kind in ("table", "index"): # индексы — после таблиц for typ, _name, sql in schema["objects"]: if typ == kind and sql: conn.execute(sql) values = {**defaults, "schema_version": 6, "tokens": {"agent": agent_token, "client": client_token}} for key, value in values.items(): conn.execute("INSERT INTO setting(key, value) VALUES (?, ?)", (key, json.dumps(value, ensure_ascii=False))) conn.execute("INSERT INTO agent_status(id, agent_version) VALUES (1, '14')") conn.execute("INSERT INTO project(label, name, board_id, board_type, created_at) VALUES " "('AWPCA', 'АРМ КА', 4216, 'scrum', '2026-10-01T00:00:00+00:00')") conn.execute("INSERT INTO project(label, name, board_id, board_type, created_at) VALUES " "('sfm_kedr', 'sfm_kedr', NULL, NULL, '2026-10-02T00:00:00+00:00')") finally: conn.close()