hit_data/model/field_types/
field_type_reference_array.rs1use crate::{errors::ValidationError, model::field_types::ReturnHitError, HitError};
2
3use crate::model::validators::{ValidatorContext, Validators};
4use crate::model::{Model, ModelField};
5use crate::object_data::{ObjectValue, Reference};
6use std::default::Default;
7
8#[derive(Default)]
9pub struct FieldTypeReferenceArray {
10 pub name: String,
11 pub validators: Validators<Reference>,
12 pub authorized_models: Vec<String>,
13}
14
15impl ModelField for FieldTypeReferenceArray {
16 fn on_kernel_init(&mut self, model_name: &str) -> Result<(), HitError> {
17 for validator in self.validators.iter_mut() {
18 validator.on_kernel_init(&self.name, model_name)?;
19 }
20 Ok(())
21 }
22 fn accepts_for_set(&self, value: &ObjectValue, _context: &ValidatorContext) -> bool {
23 match value {
24 _ => false,
26 }
27 }
28
29 fn accepts_model(&self, _model: &Model) -> bool {
30 return false;
31 }
32
33 fn get_name(&self) -> String {
34 return String::from(&self.name);
35 }
36 fn validate(&self, value: &ObjectValue, _context: &ValidatorContext) -> ReturnHitError {
37 match value {
38 ObjectValue::Null => Ok(None),
39 ObjectValue::VecReference(_value) => {
40 let mut _errors: Vec<ValidationError> = vec![];
41 return Ok(None);
49 }
50 _ => Err(HitError::InvalidDataType()),
51 }
52 }
53 fn is_vec_reference(&self) -> bool {
54 true
55 }
56 fn is_vec_subobject(&self) -> bool {
57 false
58 }
59}