sql/schema/
table.rs

1use crate::schema::index::Index;
2use crate::schema::column::Column;
3
4#[derive(Debug, Clone)]
5#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
6pub struct Table {
7    pub schema: Option<String>,
8    pub name: String,
9    pub columns: Vec<Column>,
10    pub indexes: Vec<Index>,
11}
12
13impl Table {
14    pub fn primary_key(&self) -> Option<&Column> {
15        self.columns.iter().find(|c| c.primary_key)
16    }
17
18    pub fn new(name: &str) -> Table {
19        Table {
20            schema: None,
21            name: name.to_string(),
22            columns: vec![],
23            indexes: vec![],
24        }
25    }
26
27    pub fn column(mut self, column: Column) -> Self {
28        self.columns.push(column);
29        self
30    }
31
32    pub fn index(mut self, index: Index) -> Self {
33        self.indexes.push(index);
34        self
35    }
36
37    pub fn schema(mut self, schema: &str) -> Self {
38        self.schema = Some(schema.to_string());
39        self
40    }
41}