from __future__ import annotations from dataclasses import dataclass from .ledger import SQLiteLedger from .models import AnchorRecord @dataclass(frozen=True) class AnchorStore: ledger: SQLiteLedger def record(self, method: str, reference: str, metadata: dict[str, str] | None = None) -> AnchorRecord: anchored_hash = self.ledger.anchor_head(method=method, reference=reference, metadata=metadata) return AnchorRecord(method=method, reference=reference, anchored_hash=anchored_hash, metadata=metadata or {}) def all(self) -> list[AnchorRecord]: records: list[AnchorRecord] = [] for row in self.ledger.anchors(): records.append( AnchorRecord( method=row["method"], reference=row["reference"], anchored_hash=row["anchored_hash"], metadata={}, ) ) return records