1mod rdbhandeling;
2pub fn rdbData(name:&str) -> dataBook{
8 return returner(name);
9}
10pub fn findValue(name: &str, xs: &dataBook,typ: &str) -> usize{
11 return findValueB(name, xs, typ)
12}
13pub fn addData(name:&str,newdata:&str){
14 rdbhandeling::addData(name, newdata)
15}
16pub fn changeData(name:&str,newdata:&str,cname:&str){
17 rdbhandeling::changeData(name, newdata,cname)
18}
19pub fn removeData(name:&str,newdata:&str){
20 rdbhandeling::removeData(name, newdata)
21}
22pub struct dataBook{
23 pub NM:Vec<String>,
24 pub ND:Vec<String>,
25 pub D:Vec<i64>,
26 pub M:Vec<String>,
27 pub A:Vec<Vec<String>>,
28 pub AN:Vec<String>
29}
30
31 fn returner(name: &str) -> dataBook{
32
33 let XX:dataBook = dataBook{
34 NM : rdbhandeling::getVal_MN(name),
35 ND : rdbhandeling::getVal_ND(name),
36 D : rdbhandeling::getVal_D(name),
37 M : rdbhandeling::getVal_M(name),
38 A : rdbhandeling::getVal_A(name),
39 AN: rdbhandeling::getVal_AN(name)
40
41
42 };
43 return XX;
44}
45fn findValueB(name: &str, xs: &dataBook,typ: &str) -> usize{
46 if typ == "_D"{
48 for x in 0..xs.ND.len(){
49 if xs.ND[x] == name.to_string(){
50 return x;
51 }
52 }
53 }else if typ == "_M"{
54 for x in 0..xs.NM.len(){
55 if xs.NM[x] == name.to_string(){
56 return x;
57 }
58 }
59 }else if typ == "_A"{
60 for x in 0..xs.AN.len(){
61 if xs.AN[x] == name.to_string(){
62 return x;
63 }
64 }
65 }
66
67 return 0;
68}
69pub fn copyValueToNew(name:&str,newName:&str, copyName:&str,xx: dataBook,typ:&str){
70 let mut x: String = "".to_string();
71 if typ == "_M"{
72
73 x = "|".to_owned()+&newName+&"_M|".to_owned()+&xx.M[findValue(copyName, &xx, "_M")];
74
75 }
76 if typ == "_D"{
77
78 x = "|".to_owned()+&newName+&"_D|".to_owned()+&xx.D[findValue(copyName, &xx, "_D")].to_string();
79
80 }
81 if typ == "_A"{
82 let mut xf: String = "".to_string();
83
84 for x in &xx.A[findValue(copyName, &xx, "_A")]{
85 let xo = x.to_owned()+",";
86 xf.push_str(&xo);
87 }
88 x = "|".to_owned()+&newName+&"_A|".to_owned()+&xf;
89
90 }
91 rdbhandeling::addData(name, &x)
92}