mod crud;
use super::DAL;
use crate::database::universal_types::UniversalUuid;
use crate::error::ValidationError;
use crate::models::trigger_schedule::{NewTriggerSchedule, TriggerSchedule};
use chrono::{DateTime, Utc};
#[derive(Clone)]
pub struct TriggerScheduleDAL<'a> {
dal: &'a DAL,
}
impl<'a> TriggerScheduleDAL<'a> {
pub fn new(dal: &'a DAL) -> Self {
Self { dal }
}
pub async fn create(
&self,
new_schedule: NewTriggerSchedule,
) -> Result<TriggerSchedule, ValidationError> {
crate::dispatch_backend!(
self.dal.backend(),
self.create_postgres(new_schedule).await,
self.create_sqlite(new_schedule).await
)
}
pub async fn get_by_id(&self, id: UniversalUuid) -> Result<TriggerSchedule, ValidationError> {
crate::dispatch_backend!(
self.dal.backend(),
self.get_by_id_postgres(id).await,
self.get_by_id_sqlite(id).await
)
}
pub async fn get_by_name(
&self,
name: &str,
) -> Result<Option<TriggerSchedule>, ValidationError> {
crate::dispatch_backend!(
self.dal.backend(),
self.get_by_name_postgres(name).await,
self.get_by_name_sqlite(name).await
)
}
pub async fn get_enabled(&self) -> Result<Vec<TriggerSchedule>, ValidationError> {
crate::dispatch_backend!(
self.dal.backend(),
self.get_enabled_postgres().await,
self.get_enabled_sqlite().await
)
}
pub async fn list(
&self,
limit: i64,
offset: i64,
) -> Result<Vec<TriggerSchedule>, ValidationError> {
crate::dispatch_backend!(
self.dal.backend(),
self.list_postgres(limit, offset).await,
self.list_sqlite(limit, offset).await
)
}
pub async fn update_last_poll(
&self,
id: UniversalUuid,
last_poll_at: DateTime<Utc>,
) -> Result<(), ValidationError> {
crate::dispatch_backend!(
self.dal.backend(),
self.update_last_poll_postgres(id, last_poll_at).await,
self.update_last_poll_sqlite(id, last_poll_at).await
)
}
pub async fn enable(&self, id: UniversalUuid) -> Result<(), ValidationError> {
crate::dispatch_backend!(
self.dal.backend(),
self.enable_postgres(id).await,
self.enable_sqlite(id).await
)
}
pub async fn disable(&self, id: UniversalUuid) -> Result<(), ValidationError> {
crate::dispatch_backend!(
self.dal.backend(),
self.disable_postgres(id).await,
self.disable_sqlite(id).await
)
}
pub async fn delete(&self, id: UniversalUuid) -> Result<(), ValidationError> {
crate::dispatch_backend!(
self.dal.backend(),
self.delete_postgres(id).await,
self.delete_sqlite(id).await
)
}
pub async fn upsert(
&self,
new_schedule: NewTriggerSchedule,
) -> Result<TriggerSchedule, ValidationError> {
crate::dispatch_backend!(
self.dal.backend(),
self.upsert_postgres(new_schedule).await,
self.upsert_sqlite(new_schedule).await
)
}
}