1#[cfg(feature = "db-auth")]
2use crate::db_auth::{Role, User};
3use crate::{table::SchemaContent, DbError, Rows, TableDef, TableName, Value};
4use rustorm_codegen::FromDao;
5use serde::Serialize;
6
7#[derive(Serialize, FromDao)]
9pub struct DatabaseName {
10 pub(crate) name: String,
11 pub(crate) description: Option<String>,
12}
13
14pub trait Database {
15 fn begin_transaction(&mut self) -> Result<(), DbError>;
16
17 fn commit_transaction(&mut self) -> Result<(), DbError>;
18
19 fn rollback_transaction(&mut self) -> Result<(), DbError>;
20
21 fn execute_sql_with_return(&mut self, sql: &str, param: &[&Value]) -> Result<Rows, DbError>;
22
23 fn get_table(&mut self, table_name: &TableName) -> Result<Option<TableDef>, DbError>;
24
25 fn set_autoincrement_value(
26 &mut self,
27 table_name: &TableName,
28 sequence_value: i64,
29 ) -> Result<Option<i64>, DbError>;
30
31 fn get_autoincrement_last_value(
32 &mut self,
33 table_name: &TableName,
34 ) -> Result<Option<i64>, DbError>;
35
36 fn get_all_tables(&mut self) -> Result<Vec<TableDef>, DbError>;
37
38 fn get_tablenames(&mut self) -> Result<Vec<TableName>, DbError>;
39
40 fn get_grouped_tables(&mut self) -> Result<Vec<SchemaContent>, DbError>;
41
42 fn get_database_name(&mut self) -> Result<Option<DatabaseName>, DbError>;
43
44 #[cfg(feature = "db-auth")]
45 fn get_users(&mut self) -> Result<Vec<User>, DbError>;
46
47 #[cfg(feature = "db-auth")]
48 fn get_user_detail(&mut self, username: &str) -> Result<Vec<User>, DbError>;
49
50 #[cfg(feature = "db-auth")]
51 fn get_roles(&mut self, username: &str) -> Result<Vec<Role>, DbError>;
52}