Set options on request types

This commit is contained in:
Tobias Reisinger 2023-12-05 02:41:43 +01:00
parent 2a82cf79c4
commit e2cd84b136
Signed by: serguzim
GPG key ID: 13AD60C237A28DFE
4 changed files with 96 additions and 33 deletions
emgauwa-lib/src/types

View file

@ -1,21 +1,31 @@
use serde_derive::{Deserialize, Serialize};
use sqlx::pool::PoolConnection;
use sqlx::Sqlite;
use crate::db::DbPeriods;
use crate::db::{DbPeriods, DbSchedule};
use crate::errors::DatabaseError;
use crate::types::ScheduleUid;
#[derive(Debug, Serialize, Deserialize)]
pub struct RequestSchedule {
pub struct RequestCreateSchedule {
pub name: String,
pub periods: DbPeriods,
pub tags: Vec<String>,
pub tags: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct RequestRelay {
pub name: String,
pub struct RequestUpdateSchedule {
pub name: Option<String>,
pub periods: Option<DbPeriods>,
pub tags: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct RequestUpdateRelay {
pub name: Option<String>,
pub active_schedule: Option<RequestScheduleId>,
pub schedules: Vec<RequestScheduleId>,
pub tags: Vec<String>,
pub schedules: Option<Vec<RequestScheduleId>>,
pub tags: Option<Vec<String>>,
}
#[derive(Debug, Serialize, Deserialize)]
@ -24,6 +34,17 @@ pub struct RequestScheduleId {
}
#[derive(Debug, Serialize, Deserialize)]
pub struct RequestController {
pub struct RequestUpdateController {
pub name: String,
}
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)
}
}