1use crate::column::ColumnDef;
2use crate::index::IndexDef;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
6pub struct TableDef {
7 pub name: String,
8 pub columns: Vec<ColumnDef>,
9 #[serde(default)]
10 pub indexes: Vec<IndexDef>,
11 #[serde(default)]
12 pub strict: bool,
13}
14
15impl TableDef {
16 pub fn find_column(&self, name: &str) -> Option<&ColumnDef> {
17 self.columns.iter().find(|c| c.name == name)
18 }
19}
20
21pub trait TableSchema {
22 fn table_def() -> TableDef;
23}