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