mod db_pool;
mod session;
pub use db_pool::{DbPool, PoolStatus};
pub use session::Session;
use sea_orm::{ConnectionTrait, TransactionTrait};
use crate::config::DbConfig;
use crate::error::DbResult;
use async_trait::async_trait;
use sea_orm::ExecResult;
#[async_trait]
pub trait ConnectionPool: Send + Sync {
async fn get_session(&self, role: &str) -> DbResult<Session>;
fn status(&self) -> PoolStatus;
fn config(&self) -> &DbConfig;
}
#[async_trait]
pub trait DatabaseSession: Send + Sync {
async fn execute(&mut self, sql: &str) -> DbResult<ExecResult>;
async fn execute_raw(&self, sql: &str) -> DbResult<ExecResult>;
async fn execute_raw_ddl(&self, sql: &str) -> DbResult<ExecResult>;
async fn begin_transaction(&mut self) -> DbResult<()>;
async fn commit(&mut self) -> DbResult<()>;
async fn rollback(&mut self) -> DbResult<()>;
fn role(&self) -> &str;
fn is_in_transaction(&self) -> bool;
}