From 93dac9c3087afa4222a241b0653d7341f7c69538 Mon Sep 17 00:00:00 2001 From: leefer Date: Sun, 2 Aug 2026 03:00:39 +0800 Subject: [PATCH] refactor: move sector phase persistence to heaven repository --- backend/features/heaven/repository.py | 29 ++++++++++++++++++++++ config/architecture-inventory.json | 4 ++-- database.py | 32 +------------------------ tests/test_preservation_slice_heaven.py | 3 +++ 4 files changed, 35 insertions(+), 33 deletions(-) diff --git a/backend/features/heaven/repository.py b/backend/features/heaven/repository.py index 0dc8115..b8d4162 100644 --- a/backend/features/heaven/repository.py +++ b/backend/features/heaven/repository.py @@ -7,6 +7,35 @@ from typing import Any class HeavenRepositoryMixin: + def list_sector_phase_overrides(self) -> dict[str, str]: + with self.connect() as connection: + rows = connection.execute( + "SELECT name, element FROM sector_phase_overrides ORDER BY updated_at DESC, name" + ).fetchall() + return {row["name"]: row["element"] for row in rows} + + def save_sector_phase_override(self, name: str, element: str) -> None: + now = datetime.now().astimezone().isoformat(timespec="seconds") + with self.connect() as connection: + connection.execute( + """ + INSERT INTO sector_phase_overrides (name, element, updated_at) + VALUES (?, ?, ?) + ON CONFLICT(name) DO UPDATE SET + element = excluded.element, + updated_at = excluded.updated_at + """, + (name, element, now), + ) + + def delete_sector_phase_override(self, name: str) -> bool: + with self.connect() as connection: + cursor = connection.execute( + "DELETE FROM sector_phase_overrides WHERE name = ?", + (name,), + ) + return cursor.rowcount > 0 + @staticmethod def _heaven_reading_dict(row: sqlite3.Row | None) -> dict[str, Any] | None: if not row: diff --git a/config/architecture-inventory.json b/config/architecture-inventory.json index 3136cf7..027a0e6 100644 --- a/config/architecture-inventory.json +++ b/config/architecture-inventory.json @@ -384,8 +384,8 @@ }, { "path": "database.py", - "bytes": 33284, - "lines": 746 + "bytes": 32073, + "lines": 716 } ] } diff --git a/database.py b/database.py index 180f691..b9c3a73 100644 --- a/database.py +++ b/database.py @@ -2,7 +2,7 @@ from __future__ import annotations import json import sqlite3 -from datetime import datetime, timezone +from datetime import datetime from pathlib import Path from typing import Any @@ -665,36 +665,6 @@ class ReviewDatabase( ) MigrationRunner().apply(connection, MIGRATIONS) - - - def list_sector_phase_overrides(self) -> dict[str, str]: - with self.connect() as connection: - rows = connection.execute( - "SELECT name, element FROM sector_phase_overrides ORDER BY updated_at DESC, name" - ).fetchall() - return {row["name"]: row["element"] for row in rows} - - def save_sector_phase_override(self, name: str, element: str) -> None: - now = datetime.now().astimezone().isoformat(timespec="seconds") - with self.connect() as connection: - connection.execute( - """ - INSERT INTO sector_phase_overrides (name, element, updated_at) - VALUES (?, ?, ?) - ON CONFLICT(name) DO UPDATE SET - element = excluded.element, - updated_at = excluded.updated_at - """, - (name, element, now), - ) - - def delete_sector_phase_override(self, name: str) -> bool: - with self.connect() as connection: - cursor = connection.execute( - "DELETE FROM sector_phase_overrides WHERE name = ?", - (name,), - ) - return cursor.rowcount > 0 def list_wencai_saved_queries( self, user_id: int, limit: int = 30 ) -> list[dict[str, Any]]: diff --git a/tests/test_preservation_slice_heaven.py b/tests/test_preservation_slice_heaven.py index 4aa489a..49d3dee 100644 --- a/tests/test_preservation_slice_heaven.py +++ b/tests/test_preservation_slice_heaven.py @@ -38,6 +38,9 @@ HEAVEN_SERVICE_METHODS = { } HEAVEN_REPOSITORY_METHODS = { + "list_sector_phase_overrides", + "save_sector_phase_override", + "delete_sector_phase_override", "_heaven_reading_dict", "save_heaven_reading", "list_heaven_readings",