hit_data/model/
model.rs

1use linked_hash_map::LinkedHashMap;
2
3use crate::model::{Fields, ModelFieldRef};
4
5pub struct Model {
6    name: String,
7    label: String,
8    pub fields: Fields,
9    pub interfaces: Vec<String>,
10}
11
12impl Model {
13    pub fn new(name: String, label: String) -> Model {
14        return Model {
15            name: name,
16            label: label,
17            fields: LinkedHashMap::new(),
18            interfaces: vec![],
19        };
20    }
21
22    pub fn get_name(&self) -> &String {
23        &self.name
24    }
25    pub fn get_label(&self) -> &String {
26        &self.label
27    }
28
29    pub fn get_field(&self, name: &str) -> Option<&ModelFieldRef> {
30        return self.fields.get(name);
31    }
32
33    pub fn implements_interface(&self, interface: &String) -> bool {
34        return self.interfaces.contains(interface);
35    }
36
37    pub(in crate) fn get_fields(&self) -> &Fields {
38        &self.fields
39    }
40}