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