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}