rustorm/
database.rs

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/// The current database name and its comment
8#[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}