Refactor initialization of on/off schedule
This commit is contained in:
parent
5b54f40ec0
commit
a90ea25b87
4 changed files with 47 additions and 58 deletions
emgauwa-lib/src/db
|
@ -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>,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue