idea33-buildledger-verifiab.../buildledger/anchors.py

29 lines
953 B
Python

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