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
use crate::{
table::SchemaContent,
users::{
Role,
User,
},
EntityManager,
Rows,
Table,
TableName,
Value,
};
use serde::Serialize;
use crate::DbError;
use rustorm_codegen::FromDao;
#[derive(Serialize, FromDao)]
pub struct DatabaseName {
name: String,
description: Option<String>,
}
pub trait Database {
fn execute_sql_with_return(&self, sql: &str, param: &[&Value]) -> Result<Rows, DbError>;
fn get_table(&self, em: &EntityManager, table_name: &TableName) -> Result<Table, DbError>;
fn get_all_tables(&self, em: &EntityManager) -> Result<Vec<Table>, DbError>;
fn get_grouped_tables(&self, em: &EntityManager) -> Result<Vec<SchemaContent>, DbError>;
fn get_users(&self, em: &EntityManager) -> Result<Vec<User>, DbError>;
fn get_roles(&self, em: &EntityManager, username: &str) -> Result<Vec<Role>, DbError>;
fn get_database_name(&self, em: &EntityManager) -> Result<Option<DatabaseName>, DbError>;
}