common/src/types/request.rs
Tobias Reisinger fc4c1df09a
Revert "Add sql transactions"
This caused the error "locked database".
This reverts commit 19e2ea003b.
2024-05-02 19:35:22 +02:00

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)
}
}