pub trait Model { type T; fn create_table_sql() -> &'static str; fn optimize_table_sql() -> &'static str; fn table_name() -> &'static str; fn column_names() -> Vec<&'static str>; fn to_row(&self) -> (Vec<&'static str>, Vec); fn insert_query(&self) -> String; fn batch_insert_query(items: &[Self::T]) -> String; fn build_select_query( where_clause: Option<&str>, limit: Option, offset: Option, ) -> String; }