Add sql transactions
This commit is contained in:
parent
f539c47e3b
commit
19e2ea003b
17 changed files with 242 additions and 240 deletions
src/models
|
@ -10,7 +10,7 @@ pub use macro_action::MacroAction;
|
|||
pub use r#macro::Macro;
|
||||
pub use relay::Relay;
|
||||
pub use schedule::Schedule;
|
||||
use sqlx::pool::PoolConnection;
|
||||
use sqlx::Transaction;
|
||||
use sqlx::Sqlite;
|
||||
pub use tag::Tag;
|
||||
|
||||
|
@ -21,14 +21,14 @@ pub trait FromDbModel {
|
|||
type DbModelCache: Clone;
|
||||
|
||||
fn from_db_model(
|
||||
conn: &mut PoolConnection<Sqlite>,
|
||||
tx: &mut Transaction<'_, Sqlite>,
|
||||
db_model: Self::DbModel,
|
||||
) -> Result<Self, DatabaseError>
|
||||
where
|
||||
Self: Sized;
|
||||
|
||||
fn from_db_model_cache(
|
||||
conn: &mut PoolConnection<Sqlite>,
|
||||
tx: &mut Transaction<'_, Sqlite>,
|
||||
db_model: Self::DbModel,
|
||||
cache: Self::DbModelCache,
|
||||
) -> Result<Self, DatabaseError>
|
||||
|
@ -37,15 +37,15 @@ pub trait FromDbModel {
|
|||
}
|
||||
|
||||
fn convert_db_list_generic<T: FromDbModel>(
|
||||
conn: &mut PoolConnection<Sqlite>,
|
||||
tx: &mut Transaction<'_, Sqlite>,
|
||||
db_models: Vec<T::DbModel>,
|
||||
cache: Option<T::DbModelCache>,
|
||||
) -> Result<Vec<T>, DatabaseError> {
|
||||
let mut result: Vec<T> = Vec::new();
|
||||
for db_model in db_models {
|
||||
let new = match &cache {
|
||||
Some(c) => T::from_db_model_cache(conn, db_model, c.clone()),
|
||||
None => T::from_db_model(conn, db_model),
|
||||
Some(c) => T::from_db_model_cache(tx, db_model, c.clone()),
|
||||
None => T::from_db_model(tx, db_model),
|
||||
}?;
|
||||
result.push(new);
|
||||
}
|
||||
|
@ -53,16 +53,16 @@ fn convert_db_list_generic<T: FromDbModel>(
|
|||
}
|
||||
|
||||
pub fn convert_db_list<T: FromDbModel>(
|
||||
conn: &mut PoolConnection<Sqlite>,
|
||||
tx: &mut Transaction<'_, Sqlite>,
|
||||
db_models: Vec<T::DbModel>,
|
||||
) -> Result<Vec<T>, DatabaseError> {
|
||||
convert_db_list_generic(conn, db_models, None)
|
||||
convert_db_list_generic(tx, db_models, None)
|
||||
}
|
||||
|
||||
pub fn convert_db_list_cache<T: FromDbModel>(
|
||||
conn: &mut PoolConnection<Sqlite>,
|
||||
tx: &mut Transaction<'_, Sqlite>,
|
||||
db_models: Vec<T::DbModel>,
|
||||
cache: T::DbModelCache,
|
||||
) -> Result<Vec<T>, DatabaseError> {
|
||||
convert_db_list_generic(conn, db_models, Some(cache))
|
||||
convert_db_list_generic(tx, db_models, Some(cache))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue