37 lines
891 B
Rust
37 lines
891 B
Rust
use chrono::{DateTime, Local, Utc};
|
|
use sea_orm::{
|
|
ActiveModelTrait, ActiveValue::Set, ColumnTrait, ConnectionTrait, DbErr, EntityTrait, QueryFilter
|
|
};
|
|
|
|
use crate::model::{self, alarm};
|
|
|
|
pub async fn create_alarm<C: ConnectionTrait>(
|
|
db: &C,
|
|
title: &str,
|
|
time: DateTime<Utc>,
|
|
) -> Result<alarm::Model, DbErr> {
|
|
let alarm_to_create = model::alarm::ActiveModel {
|
|
title: Set(title.to_string()),
|
|
time: Set(time.naive_utc()),
|
|
enabled: Set(true),
|
|
..Default::default()
|
|
};
|
|
|
|
Ok(alarm_to_create.insert(db).await?)
|
|
}
|
|
|
|
pub async fn get_alarms<C: ConnectionTrait>(db: &C, enabled: Option<bool>) -> Result<Vec<alarm::Model>, DbErr> {
|
|
let query = model::alarm::Entity::find();
|
|
|
|
let query = match enabled {
|
|
Some(enabled) => {
|
|
query.filter(model::alarm::Column::Enabled.eq(enabled))
|
|
},
|
|
None => {
|
|
query
|
|
}
|
|
};
|
|
|
|
query.all(db).await
|
|
}
|