29 lines
953 B
Python
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
|