schema_model/model/
relation.rs1use crate::model::types::RelationType;
2
3#[derive(Debug, Clone)]
4pub struct Relation {
5 to_table_name: String,
6 to_column_name: String,
7 from_table_name: String,
8 from_column_name: String,
9 relation_type: RelationType,
10 disable_usage_checking: bool,
11}
12impl Relation {
13 #[allow(clippy::too_many_arguments)]
14 pub fn new<SS: Into<String>>(
15 to_table_name: SS,
16 to_column_name: SS,
17 from_table_name: SS,
18 from_column_name: SS,
19 relation_type: RelationType,
20 disable_usage_checking: bool,
21 ) -> Self {
22 Self {
23 to_table_name: to_table_name.into(),
24 to_column_name: to_column_name.into(),
25 from_table_name: from_table_name.into(),
26 from_column_name: from_column_name.into(),
27 relation_type,
28 disable_usage_checking,
29 }
30 }
31 pub fn to_table_name(&self) -> &str {
32 &self.to_table_name
33 }
34 pub fn to_column_name(&self) -> &str {
35 &self.to_column_name
36 }
37 pub fn from_table_name(&self) -> &str {
38 &self.from_table_name
39 }
40 pub fn from_column_name(&self) -> &str {
41 &self.from_column_name
42 }
43 pub fn relation_type(&self) -> RelationType {
44 self.relation_type
45 }
46
47 pub fn disable_usage_checking(&self) -> bool {
48 self.disable_usage_checking
49 }
50}
51
52#[cfg(test)]
53mod tests {
54 use super::*;
55 use crate::model::types::RelationType;
56
57 #[test]
58 fn constructor_and_getters() {
59 let r = Relation::new(
60 "parent",
61 "id",
62 "child",
63 "parent_id",
64 RelationType::Cascade,
65 true,
66 );
67 assert_eq!(r.to_table_name(), "parent");
68 assert_eq!(r.to_column_name(), "id");
69 assert_eq!(r.from_table_name(), "child");
70 assert_eq!(r.from_column_name(), "parent_id");
71 assert_eq!(r.relation_type(), RelationType::Cascade);
72 assert!(r.disable_usage_checking());
73 }
74}