schema_model/model/
procedure.rs1use crate::model::types::DatabaseType;
2
3#[derive(Debug, Clone)]
4pub struct Procedure {
5 schema_name: Option<String>,
6 name: String,
7 database_type: DatabaseType,
8 sql: String,
9}
10
11impl Procedure {
12 pub fn new<S: Into<String>>(
13 schema_name: Option<S>,
14 name: S,
15 database_type: DatabaseType,
16 sql: S,
17 ) -> Self {
18 Self {
19 schema_name: schema_name.map(|s| s.into()),
20 name: name.into(),
21 database_type,
22 sql: sql.into(),
23 }
24 }
25
26 pub fn schema_name(&self) -> Option<&str> {
27 self.schema_name.as_deref()
28 }
29
30 pub fn name(&self) -> &str {
31 &self.name
32 }
33
34 pub fn database_type(&self) -> DatabaseType {
35 self.database_type
36 }
37
38 pub fn sql(&self) -> &str {
39 &self.sql
40 }
41}
42
43#[cfg(test)]
44mod tests {
45 use super::*;
46 use crate::model::types::DatabaseType;
47
48 #[test]
49 fn constructor_and_getters() {
50 let procedure = Procedure::new(Some("public"), "p1", DatabaseType::Postgresql, "begin end");
51 assert_eq!(procedure.schema_name().unwrap(), "public");
52 assert_eq!(procedure.name(), "p1");
53 assert_eq!(procedure.database_type(), DatabaseType::Postgresql);
54 assert_eq!(procedure.sql(), "begin end");
55 }
56}