easy_sqlite/traits/
table.rs

1use crate::entities::types::{SStr, SVec};
2
3pub trait ITable {
4    // const for FK
5    const PK: SStr = "";
6    // table name
7    const NAME: SStr;
8    // [(column name, column type)]
9    const COLUMNS: SVec<(SStr, SStr)>;
10    // [column name]
11    const INDEXES: SVec<SStr> = &[];
12    // [column name]
13    const UNIQUE: SVec<SStr> = &[];
14    // [(self column, ext table, ext column)]
15    const FOREIGN_KEYS: SVec<(SStr, SStr, SStr)> = &[];
16
17    fn get_columns_as_str(exclude: &[&str]) -> String {
18        Self::COLUMNS
19            .iter()
20            .filter(|(c, _)| !exclude.contains(c))
21            .map(|(c, _)| format!("`{}`", c))
22            .collect::<Vec<_>>()
23            .join(",")
24    }
25}