fix(topology_store): use sqlite3.Row for named column access in current()
Row unpacking by positional index breaks silently on schema changes. row_factory = sqlite3.Row gives named access with zero overhead.
This commit is contained in:
@@ -63,6 +63,7 @@ class TopologyStore:
|
|||||||
# The agent is single-process, so there's no real contention —
|
# The agent is single-process, so there's no real contention —
|
||||||
# sqlite's own connection lock is enough.
|
# sqlite's own connection lock is enough.
|
||||||
self._conn = sqlite3.connect(str(db_path), check_same_thread=False)
|
self._conn = sqlite3.connect(str(db_path), check_same_thread=False)
|
||||||
|
self._conn.row_factory = sqlite3.Row
|
||||||
self._conn.execute(
|
self._conn.execute(
|
||||||
"CREATE TABLE IF NOT EXISTS applied_topology ("
|
"CREATE TABLE IF NOT EXISTS applied_topology ("
|
||||||
" topology_id TEXT PRIMARY KEY,"
|
" topology_id TEXT PRIMARY KEY,"
|
||||||
@@ -84,11 +85,11 @@ class TopologyStore:
|
|||||||
if row is None:
|
if row is None:
|
||||||
return None
|
return None
|
||||||
return AppliedRow(
|
return AppliedRow(
|
||||||
topology_id=row[0],
|
topology_id=row["topology_id"],
|
||||||
applied_version_hash=row[1],
|
applied_version_hash=row["applied_version_hash"],
|
||||||
hydrated=json.loads(row[2]),
|
hydrated=json.loads(row["hydrated_blob_json"]),
|
||||||
applied_at=int(row[3]),
|
applied_at=int(row["applied_at"]),
|
||||||
last_error=row[4],
|
last_error=row["last_error"],
|
||||||
)
|
)
|
||||||
|
|
||||||
# ---------------------------------------------------------------- writes
|
# ---------------------------------------------------------------- writes
|
||||||
|
|||||||
Reference in New Issue
Block a user