Refactor initialization of on/off schedule

This commit is contained in:
Tobias Reisinger 2023-11-29 17:55:49 +01:00
parent 5b54f40ec0
commit a90ea25b87
Signed by: serguzim
GPG key ID: 13AD60C237A28DFE
4 changed files with 47 additions and 58 deletions
emgauwa-lib/src/db

View file

@ -88,14 +88,14 @@ impl DbSchedule {
pub async fn create(
conn: &mut PoolConnection<Sqlite>,
new_uid: ScheduleUid,
new_name: &str,
new_periods: &DbPeriods,
) -> Result<DbSchedule, DatabaseError> {
let uid = ScheduleUid::default();
sqlx::query_as!(
DbSchedule,
"INSERT INTO schedules (uid, name, periods) VALUES (?, ?, ?) RETURNING *",
uid,
new_uid,
new_name,
new_periods,
)
@ -104,6 +104,22 @@ impl DbSchedule {
.ok_or(DatabaseError::InsertGetError)
}
pub async fn get_on(conn: &mut PoolConnection<Sqlite>) -> Result<DbSchedule, DatabaseError> {
if let Some(schedule) = DbSchedule::get_by_uid(conn, &ScheduleUid::On).await? {
return Ok(schedule);
}
let periods = DbPeriods(vec![Period::new_on()]);
Self::create(conn, ScheduleUid::On, "On", &periods).await
}
pub async fn get_off(conn: &mut PoolConnection<Sqlite>) -> Result<DbSchedule, DatabaseError> {
if let Some(schedule) = DbSchedule::get_by_uid(conn, &ScheduleUid::Off).await? {
return Ok(schedule);
}
let periods = DbPeriods(vec![]);
Self::create(conn, ScheduleUid::Off, "Off", &periods).await
}
pub async fn update(
&self,
conn: &mut PoolConnection<Sqlite>,