1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use crate::{
5 ApplicabilityContextId, CompiledObligationSetId, CompositionConflictSetId,
6 CompositionReceiptId, EffectiveConstitutionId, ProfileExceptionBundleId, ProfileSetId,
7};
8
9#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
11pub struct V25ConstitutionCitation {
12 pub applicability_context_id: ApplicabilityContextId,
13 pub profile_set_id: ProfileSetId,
14 pub composition_receipt_id: CompositionReceiptId,
15 pub effective_constitution_id: EffectiveConstitutionId,
16 pub compiled_obligation_set_id: CompiledObligationSetId,
17 #[serde(default, skip_serializing_if = "Option::is_none")]
18 pub composition_conflict_set_id: Option<CompositionConflictSetId>,
19 #[serde(default)]
20 pub profile_exception_bundle_ids: Vec<ProfileExceptionBundleId>,
21}
22
23impl V25ConstitutionCitation {
24 pub fn new(
26 applicability_context_id: ApplicabilityContextId,
27 profile_set_id: ProfileSetId,
28 composition_receipt_id: CompositionReceiptId,
29 effective_constitution_id: EffectiveConstitutionId,
30 compiled_obligation_set_id: CompiledObligationSetId,
31 composition_conflict_set_id: Option<CompositionConflictSetId>,
32 profile_exception_bundle_ids: Vec<ProfileExceptionBundleId>,
33 ) -> Self {
34 Self {
35 applicability_context_id,
36 profile_set_id,
37 composition_receipt_id,
38 effective_constitution_id,
39 compiled_obligation_set_id,
40 composition_conflict_set_id,
41 profile_exception_bundle_ids,
42 }
43 }
44}
45
46impl Default for V25ConstitutionCitation {
47 fn default() -> Self {
48 Self {
49 applicability_context_id: ApplicabilityContextId::new(""),
50 profile_set_id: ProfileSetId::new(""),
51 composition_receipt_id: CompositionReceiptId::new(""),
52 effective_constitution_id: EffectiveConstitutionId::new(""),
53 compiled_obligation_set_id: CompiledObligationSetId::new(""),
54 composition_conflict_set_id: None,
55 profile_exception_bundle_ids: Vec::new(),
56 }
57 }
58}