Add app_state reload util and add handler for weekday change

This commit is contained in:
Tobias Reisinger 2024-04-24 02:29:53 +02:00
parent 97d9222a39
commit 6414083af0
Signed by: serguzim
GPG key ID: 13AD60C237A28DFE
5 changed files with 51 additions and 38 deletions
emgauwa-lib/src/models

View file

@ -6,8 +6,7 @@ use sqlx::Sqlite;
use crate::db::{DbController, DbJunctionRelaySchedule, DbRelay, DbSchedule};
use crate::errors::DatabaseError;
use crate::models::FromDbModel;
use crate::types::{ControllerUid, Weekday};
use crate::utils;
use crate::types::ControllerUid;
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Relay {
@ -42,14 +41,7 @@ impl FromDbModel for Relay {
let controller_id = cache.uid.clone();
let schedules = block_on(DbJunctionRelaySchedule::get_schedules(conn, &db_model))?;
let weekday = utils::get_weekday();
let active_schedule = block_on(DbJunctionRelaySchedule::get_schedule(
conn,
&db_model,
weekday as Weekday,
))?
.ok_or(DatabaseError::NotFound)?;
let active_schedule = block_on(db_model.get_active_schedule(conn))?;
Ok(Relay {
r: db_model,
@ -66,15 +58,16 @@ 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))?;
let weekday = utils::get_weekday();
self.active_schedule = block_on(DbJunctionRelaySchedule::get_schedule(
conn,
&self.r,
weekday as Weekday,
))?
.ok_or(DatabaseError::NotFound)?;
self.reload_active_schedule(conn)?;
Ok(())
}
pub fn reload_active_schedule(
&mut self,
conn: &mut PoolConnection<Sqlite>,
) -> Result<(), DatabaseError> {
self.active_schedule = block_on(self.r.get_active_schedule(conn))?;
Ok(())
}
}