This caused the error "locked database".
This reverts commit 19e2ea003b
.
95 lines
2.1 KiB
Rust
95 lines
2.1 KiB
Rust
use serde_derive::{Deserialize, Serialize};
|
|
use sqlx::pool::PoolConnection;
|
|
use sqlx::Sqlite;
|
|
|
|
use crate::db::{DbPeriods, DbSchedule};
|
|
use crate::errors::DatabaseError;
|
|
use crate::types::{EmgauwaUid, ScheduleUid};
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestScheduleCreate {
|
|
pub name: String,
|
|
pub periods: DbPeriods,
|
|
pub tags: Option<Vec<String>>,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestScheduleUpdate {
|
|
pub name: Option<String>,
|
|
pub periods: Option<DbPeriods>,
|
|
pub tags: Option<Vec<String>>,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestRelayUpdate {
|
|
pub name: Option<String>,
|
|
pub active_schedule: Option<RequestScheduleId>,
|
|
pub schedules: Option<Vec<RequestScheduleId>>,
|
|
pub tags: Option<Vec<String>>,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestRelayPulse {
|
|
pub duration: Option<u32>,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestScheduleId {
|
|
pub id: ScheduleUid,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestControllerUpdate {
|
|
pub name: String,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestTagCreate {
|
|
pub tag: String,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestMacroActionRelay {
|
|
pub number: i64,
|
|
pub controller_id: EmgauwaUid,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestMacroActionSchedule {
|
|
pub id: ScheduleUid,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestMacroAction {
|
|
pub weekday: i64,
|
|
pub relay: RequestMacroActionRelay,
|
|
pub schedule: RequestMacroActionSchedule,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestMacroCreate {
|
|
pub name: String,
|
|
pub actions: Vec<RequestMacroAction>,
|
|
}
|
|
|
|
#[derive(Debug, Serialize, Deserialize)]
|
|
pub struct RequestMacroUpdate {
|
|
pub name: Option<String>,
|
|
pub actions: Option<Vec<RequestMacroAction>>,
|
|
}
|
|
|
|
#[derive(Debug, Deserialize)]
|
|
pub struct RequestMacroExecute {
|
|
pub weekday: Option<i64>,
|
|
}
|
|
|
|
impl RequestScheduleId {
|
|
pub async fn get_schedule(
|
|
&self,
|
|
conn: &mut PoolConnection<Sqlite>,
|
|
) -> Result<DbSchedule, DatabaseError> {
|
|
DbSchedule::get_by_uid(conn, &self.id)
|
|
.await?
|
|
.ok_or(DatabaseError::NotFound)
|
|
}
|
|
}
|