hyf

Context-aware query service for Radroots
git clone https://radroots.dev/git/hyf.git
Log | Files | Refs | README | LICENSE

authority_sim.mojo (1178B)


      1 from std.collections import List
      2 
      3 
      4 @fieldwise_init
      5 struct AuthoritySimulation(Copyable, Movable):
      6     var accepted_changes: Int
      7     var requires_confirmation: Bool
      8     var applied_revisions: List[String]
      9     var duplicate_rejections: Int
     10     var stale_rejections: Int
     11     var hyf_business_writes: Int
     12 
     13 
     14 def new_authority_simulation() -> AuthoritySimulation:
     15     return AuthoritySimulation(
     16         accepted_changes=0,
     17         requires_confirmation=True,
     18         applied_revisions=List[String](),
     19         duplicate_rejections=0,
     20         stale_rejections=0,
     21         hyf_business_writes=0,
     22     )
     23 
     24 
     25 def apply_expected_version(
     26     mut simulation: AuthoritySimulation,
     27     source_revision: String,
     28     expected_revision: String,
     29     current_revision: String,
     30 ) raises:
     31     if expected_revision != current_revision:
     32         simulation.stale_rejections += 1
     33         raise Error("stale_acceptance")
     34     for applied in simulation.applied_revisions:
     35         if applied == source_revision:
     36             simulation.duplicate_rejections += 1
     37             raise Error("duplicate_acceptance")
     38     simulation.applied_revisions.append(String(source_revision))
     39     simulation.accepted_changes += 1