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 actix::Addr;
|
||||||
use emgauwa_lib::constants::WEBSOCKET_RETRY_TIMEOUT;
|
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::errors::{DatabaseError, EmgauwaError};
|
||||||
use emgauwa_lib::models::{Controller, Relay};
|
use emgauwa_lib::models::{Controller, Relay};
|
||||||
use emgauwa_lib::types::{ControllerWsAction, ScheduleUid};
|
use emgauwa_lib::types::{ControllerWsAction, ScheduleUid};
|
||||||
|
@ -192,13 +192,24 @@ async fn handle_relays(
|
||||||
"Controller UID mismatch during relay update",
|
"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?
|
.await?
|
||||||
.ok_or(DatabaseError::NotFound)?
|
.ok_or(DatabaseError::NotFound)?;
|
||||||
.update(conn, relay.r.name.as_str())
|
|
||||||
.await?;
|
|
||||||
|
|
||||||
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??;
|
app_state.send(app_state::Reload {}).await??;
|
||||||
|
|
Loading…
Reference in a new issue