Add function to update schedules for relays WsAction
This commit is contained in:
parent
dd850766fd
commit
97d9222a39
1 changed files with 17 additions and 6 deletions
|
@ -1,6 +1,6 @@
|
|||
use actix::Addr;
|
||||
use emgauwa_lib::constants::WEBSOCKET_RETRY_TIMEOUT;
|
||||
use emgauwa_lib::db::{DbController, DbRelay, DbSchedule};
|
||||
use emgauwa_lib::db::{DbController, DbJunctionRelaySchedule, DbRelay, DbSchedule};
|
||||
use emgauwa_lib::errors::{DatabaseError, EmgauwaError};
|
||||
use emgauwa_lib::models::{Controller, Relay};
|
||||
use emgauwa_lib::types::{ControllerWsAction, ScheduleUid};
|
||||
|
@ -192,13 +192,24 @@ async fn handle_relays(
|
|||
"Controller UID mismatch during relay update",
|
||||
)));
|
||||
}
|
||||
DbRelay::get_by_controller_and_num(conn, &this.c, relay.r.number)
|
||||
let db_relay = DbRelay::get_by_controller_and_num(conn, &this.c, relay.r.number)
|
||||
.await?
|
||||
.ok_or(DatabaseError::NotFound)?
|
||||
.update(conn, relay.r.name.as_str())
|
||||
.await?;
|
||||
.ok_or(DatabaseError::NotFound)?;
|
||||
|
||||
handle_schedules(conn, app_state, relay.schedules).await?;
|
||||
db_relay.update(conn, relay.r.name.as_str()).await?;
|
||||
|
||||
handle_schedules(conn, app_state, relay.schedules.clone()).await?;
|
||||
|
||||
let mut schedules = Vec::new(); // We need to get the schedules from the database to have the right IDs
|
||||
for schedule in relay.schedules {
|
||||
schedules.push(
|
||||
DbSchedule::get_by_uid(conn, &schedule.uid)
|
||||
.await?
|
||||
.ok_or(DatabaseError::NotFound)?,
|
||||
);
|
||||
}
|
||||
|
||||
DbJunctionRelaySchedule::set_schedules(conn, &db_relay, schedules.iter().collect()).await?;
|
||||
}
|
||||
|
||||
app_state.send(app_state::Reload {}).await??;
|
||||
|
|
Loading…
Reference in a new issue