use super::db::{DbConn, DbTx};
use super::secure_conn::{SecureConn, SecureTx};
mod sealed {
pub trait Sealed {}
}
pub enum SeaOrmRunner<'a> {
Conn(&'a sea_orm::DatabaseConnection),
Tx(&'a sea_orm::DatabaseTransaction),
}
pub trait DBRunnerInternal: sealed::Sealed + Send + Sync {
fn as_seaorm(&self) -> SeaOrmRunner<'_>;
}
#[doc(hidden)]
pub trait DBRunner: DBRunnerInternal {}
impl sealed::Sealed for DbConn<'_> {}
impl DBRunnerInternal for DbConn<'_> {
fn as_seaorm(&self) -> SeaOrmRunner<'_> {
SeaOrmRunner::Conn(self.conn)
}
}
impl DBRunner for DbConn<'_> {}
impl sealed::Sealed for DbTx<'_> {}
impl DBRunnerInternal for DbTx<'_> {
fn as_seaorm(&self) -> SeaOrmRunner<'_> {
SeaOrmRunner::Tx(self.tx)
}
}
impl DBRunner for DbTx<'_> {}
impl sealed::Sealed for SecureConn {}
impl DBRunnerInternal for SecureConn {
fn as_seaorm(&self) -> SeaOrmRunner<'_> {
SeaOrmRunner::Conn(&self.conn)
}
}
impl DBRunner for SecureConn {}
impl sealed::Sealed for SecureTx<'_> {}
impl DBRunnerInternal for SecureTx<'_> {
fn as_seaorm(&self) -> SeaOrmRunner<'_> {
SeaOrmRunner::Tx(self.tx)
}
}
impl DBRunner for SecureTx<'_> {}