Source code for cadrumo.adapters.persistence.profile.ledger_classification_rules
"""Encrypted persistence adapter for ledger classification rules."""from__future__importannotationsfromtypingimportoverridefrom....application.ledger.rule_repositoryimportledger_classification_rule_object_keyfrom....domain.transactions.classification_ruleimportLedgerClassificationRulefrom..storage.envelope.secure_bound_repositoryimportSecureBoundRepositoryfrom..storage.secure_object_namespacesimportLEDGER_CLASSIFICATION_RULES_NAMESPACE
[docs]classLedgerClassificationRuleRepository(SecureBoundRepository[LedgerClassificationRule]):"""Store profile-local rules through the governed encrypted namespace."""namespace=LEDGER_CLASSIFICATION_RULES_NAMESPACE.namespacesensitivity=LEDGER_CLASSIFICATION_RULES_NAMESPACE.sensitivityschema_version=LEDGER_CLASSIFICATION_RULES_NAMESPACE.schema_versionpayload_type=LedgerClassificationRule
[docs]@overridedefextract_identifier(self,payload:LedgerClassificationRule)->str:"""Return the rule's content-addressed natural key."""returnledger_classification_rule_object_key(payload)
[docs]deflist_rules(self)->tuple[LedgerClassificationRule,...]:"""Return rules in precedence order: priority, then creation time."""returntuple(sorted(self.iter_records(),key=lambdarule:(rule.priority,rule.created_at)))