use serde::{Deserialize, Serialize};
use crate::key::Key;
use crate::ReferenceTypes;
#[derive(Clone, PartialEq, Debug, Deserialize, Serialize)]
pub struct Reference {
#[serde(rename = "type")]
pub type_: ReferenceTypes,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(rename = "referredSemanticId")]
pub referred_semantic_id: Option<Box<Reference>>,
pub keys: Vec<Key>,
}
impl Reference {
pub fn new(type_: ReferenceTypes, key: Key) -> Self {
Self {
type_,
referred_semantic_id: None,
keys: vec![key],
}
}
pub fn new_from_vec(type_: ReferenceTypes, keys: Vec<Key>) -> Self {
Self {
type_,
referred_semantic_id: None,
keys,
}
}
}