hyf

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

source.mojo (1994B)


      1 from std.collections import List, Optional
      2 
      3 
      4 @fieldwise_init
      5 struct SourceId(Copyable, Movable):
      6     var value: String
      7 
      8 
      9 @fieldwise_init
     10 struct ActorId(Copyable, Movable):
     11     var value: String
     12 
     13 
     14 @fieldwise_init
     15 struct FarmId(Copyable, Movable):
     16     var value: String
     17 
     18 
     19 @fieldwise_init
     20 struct NeedId(Copyable, Movable):
     21     var value: String
     22 
     23 
     24 @fieldwise_init
     25 struct LotId(Copyable, Movable):
     26     var value: String
     27 
     28 
     29 @fieldwise_init
     30 struct Revision(Copyable, Movable):
     31     var value: String
     32 
     33 
     34 def _require_identity(value: String, context: String) raises -> String:
     35     var trimmed = String(String(value).strip())
     36     if trimmed == "":
     37         raise Error(context + " must not be empty")
     38     if trimmed != value:
     39         raise Error(context + " must not include boundary whitespace")
     40     return trimmed^
     41 
     42 
     43 def source_id(value: String) raises -> SourceId:
     44     return SourceId(value=_require_identity(value, "source id"))
     45 
     46 
     47 def actor_id(value: String) raises -> ActorId:
     48     return ActorId(value=_require_identity(value, "actor id"))
     49 
     50 
     51 def farm_id(value: String) raises -> FarmId:
     52     return FarmId(value=_require_identity(value, "farm id"))
     53 
     54 
     55 def need_id(value: String) raises -> NeedId:
     56     return NeedId(value=_require_identity(value, "need id"))
     57 
     58 
     59 def lot_id(value: String) raises -> LotId:
     60     return LotId(value=_require_identity(value, "lot id"))
     61 
     62 
     63 def revision(value: String) raises -> Revision:
     64     return Revision(value=_require_identity(value, "revision"))
     65 
     66 
     67 @fieldwise_init
     68 struct TrustedSource(Copyable, Movable):
     69     var source_id: SourceId
     70     var revision: Revision
     71     var actor_id: ActorId
     72     var farm_id: FarmId
     73 
     74 
     75 def trusted_source(
     76     source_id_value: String,
     77     revision_value: String,
     78     actor_id_value: String,
     79     farm_id_value: String,
     80 ) raises -> TrustedSource:
     81     return TrustedSource(
     82         source_id=source_id(source_id_value),
     83         revision=revision(revision_value),
     84         actor_id=actor_id(actor_id_value),
     85         farm_id=farm_id(farm_id_value),
     86     )