Add sql transactions
This commit is contained in:
parent
f539c47e3b
commit
19e2ea003b
17 changed files with 242 additions and 240 deletions
src/models
|
@ -3,7 +3,7 @@ use std::time::Instant;
|
|||
use chrono::NaiveTime;
|
||||
use futures::executor::block_on;
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use sqlx::pool::PoolConnection;
|
||||
use sqlx::Transaction;
|
||||
use sqlx::Sqlite;
|
||||
|
||||
use crate::db::{DbController, DbJunctionRelaySchedule, DbRelay, DbSchedule};
|
||||
|
@ -32,23 +32,23 @@ impl FromDbModel for Relay {
|
|||
type DbModelCache = DbController;
|
||||
|
||||
fn from_db_model(
|
||||
conn: &mut PoolConnection<Sqlite>,
|
||||
tx: &mut Transaction<'_, Sqlite>,
|
||||
db_model: Self::DbModel,
|
||||
) -> Result<Self, DatabaseError> {
|
||||
let cache = block_on(db_model.get_controller(conn))?;
|
||||
Self::from_db_model_cache(conn, db_model, cache)
|
||||
let cache = block_on(db_model.get_controller(tx))?;
|
||||
Self::from_db_model_cache(tx, db_model, cache)
|
||||
}
|
||||
|
||||
fn from_db_model_cache(
|
||||
conn: &mut PoolConnection<Sqlite>,
|
||||
tx: &mut Transaction<'_, Sqlite>,
|
||||
db_model: Self::DbModel,
|
||||
cache: Self::DbModelCache,
|
||||
) -> Result<Self, DatabaseError> {
|
||||
let tags = block_on(db_model.get_tags(conn))?;
|
||||
let tags = block_on(db_model.get_tags(tx))?;
|
||||
let controller_id = cache.uid.clone();
|
||||
|
||||
let schedules = block_on(DbJunctionRelaySchedule::get_schedules(conn, &db_model))?;
|
||||
let active_schedule = block_on(db_model.get_active_schedule(conn))?;
|
||||
let schedules = block_on(DbJunctionRelaySchedule::get_schedules(tx, &db_model))?;
|
||||
let active_schedule = block_on(db_model.get_active_schedule(tx))?;
|
||||
|
||||
let is_on = None;
|
||||
|
||||
|
@ -66,19 +66,19 @@ impl FromDbModel for Relay {
|
|||
}
|
||||
|
||||
impl Relay {
|
||||
pub fn reload(&mut self, conn: &mut PoolConnection<Sqlite>) -> Result<(), DatabaseError> {
|
||||
self.r = block_on(self.r.reload(conn))?;
|
||||
self.schedules = block_on(DbJunctionRelaySchedule::get_schedules(conn, &self.r))?;
|
||||
self.reload_active_schedule(conn)?;
|
||||
pub fn reload(&mut self, tx: &mut Transaction<'_, Sqlite>) -> Result<(), DatabaseError> {
|
||||
self.r = block_on(self.r.reload(tx))?;
|
||||
self.schedules = block_on(DbJunctionRelaySchedule::get_schedules(tx, &self.r))?;
|
||||
self.reload_active_schedule(tx)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn reload_active_schedule(
|
||||
&mut self,
|
||||
conn: &mut PoolConnection<Sqlite>,
|
||||
tx: &mut Transaction<'_, Sqlite>,
|
||||
) -> Result<(), DatabaseError> {
|
||||
self.active_schedule = block_on(self.r.get_active_schedule(conn))?;
|
||||
self.active_schedule = block_on(self.r.get_active_schedule(tx))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue