lib/closure/src/schema/record.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

  1 const axis = @import("axis.zig");
  2 const value = @import("value.zig");
  3 
  4 pub const NodeId = u32;
  5 pub const RecordId = u32;
  6 pub const ClaimId = u32;
  7 pub const GenerationId = u64;
  8 
  9 pub const Node = extern struct {
 10     id: NodeId,
 11     descriptor: value.Descriptor,
 12     identity: value.Digest,
 13     subject_kind: axis.SubjectKind,
 14     material_role: axis.MaterialRole,
 15     origin: axis.Origin,
 16     phases: axis.PhaseSet,
 17     execution_locus: axis.ExecutionLocus,
 18     owner: value.Name,
 19     authority: axis.AuthorityClass,
 20     artifact_kind: axis.ArtifactKind,
 21 };
 22 
 23 pub const Edge = extern struct {
 24     id: RecordId,
 25     source: NodeId,
 26     target: NodeId,
 27     kind: axis.EdgeKind,
 28 };
 29 
 30 pub const Artifact = extern struct {
 31     id: RecordId,
 32     node: NodeId,
 33     byte_length: u64,
 34     digest: value.Digest,
 35     witness: axis.WitnessKind,
 36 };
 37 
 38 pub const ByteRange = extern struct {
 39     id: RecordId,
 40     artifact: RecordId,
 41     offset: u64,
 42     length: u64,
 43     digest: value.Digest,
 44     executable: bool,
 45     witness: axis.WitnessKind,
 46 };
 47 
 48 pub const DigestRecord = extern struct {
 49     id: RecordId,
 50     node: NodeId,
 51     purpose: value.Name,
 52     digest: value.Digest,
 53     witness: axis.WitnessKind,
 54 };
 55 
 56 pub const ProvenanceParent = extern struct {
 57     id: RecordId,
 58     child: NodeId,
 59     parent: NodeId,
 60 };
 61 
 62 pub const SourceRecord = extern struct {
 63     id: RecordId,
 64     node: NodeId,
 65     path: value.Descriptor,
 66     digest: value.Digest,
 67     witness: axis.WitnessKind,
 68 };
 69 
 70 pub const BuildRecord = extern struct {
 71     id: RecordId,
 72     node: NodeId,
 73     tool: NodeId,
 74     option: value.Descriptor,
 75     digest: value.Digest,
 76     witness: axis.WitnessKind,
 77 };
 78 
 79 pub const Authority = extern struct {
 80     id: RecordId,
 81     source: NodeId,
 82     target: NodeId,
 83     granted: axis.GrantedAuthority,
 84 };
 85 
 86 pub const LineageReference = extern struct {
 87     id: RecordId,
 88     node: NodeId,
 89     descriptor: value.Descriptor,
 90     digest: value.Digest,
 91     witness: axis.WitnessKind,
 92 };
 93 
 94 pub const ServiceDescriptor = extern struct {
 95     id: RecordId,
 96     node: NodeId,
 97     provider: value.Descriptor,
 98     protocol: value.Descriptor,
 99     endpoint_rule: value.Descriptor,
100     trust_anchor: value.Descriptor,
101     failure_contract: value.Descriptor,
102     requirement: axis.RequirementClass,
103 };
104 
105 pub const ResidualRoot = extern struct {
106     id: RecordId,
107     claim: ClaimId,
108     node: NodeId,
109     treatment: axis.Treatment,
110 };
111 
112 pub const Claim = extern struct {
113     id: ClaimId,
114     name: value.Name,
115     artifact: RecordId,
116     artifact_digest: value.Digest,
117     profiles: value.ProfileSet,
118     traversed_edges: axis.EdgeSet,
119 };
120 
121 pub const ClaimNode = extern struct {
122     id: RecordId,
123     claim: ClaimId,
124     node: NodeId,
125     treatment: axis.Treatment,
126 };
127 
128 pub const GenerationInput = struct {
129     id: GenerationId,
130     root: value.Digest,
131     nodes: []const Node,
132     edges: []const Edge,
133     artifacts: []const Artifact,
134     ranges: []const ByteRange,
135     digests: []const DigestRecord,
136     provenance_parents: []const ProvenanceParent,
137     source_records: []const SourceRecord,
138     build_records: []const BuildRecord,
139     authorities: []const Authority,
140     lineage_references: []const LineageReference,
141     service_descriptors: []const ServiceDescriptor,
142     residual_roots: []const ResidualRoot,
143     claims: []const Claim,
144     claim_nodes: []const ClaimNode,
145 };