bitque/actors/database-actor/src/epics.rs

59 lines
1.4 KiB
Rust
Raw Normal View History

2021-04-16 15:20:25 +02:00
use derive_db_execute::Execute;
use diesel::prelude::*;
use jirs_data::{DescriptionString, Epic, EpicId, ProjectId};
use crate::{db_create, db_delete, db_load, db_update};
2021-01-19 21:57:48 +01:00
#[derive(Execute)]
#[db_exec(schema = "epics", result = "Epic", find = "epics.find(msg.epic_id)")]
pub struct FindEpic {
pub epic_id: EpicId,
}
db_load! {
LoadEpics,
msg => epics => epics.distinct_on(id).filter(project_id.eq(msg.project_id)),
Epic,
2021-01-19 21:57:48 +01:00
project_id => ProjectId
}
db_create! {
CreateEpic,
msg => epics => diesel::insert_into(epics).values((
name.eq(msg.name.as_str()),
user_id.eq(msg.user_id),
project_id.eq(msg.project_id),
2021-01-19 21:57:48 +01:00
msg.description.map(|d| description.eq(d)),
msg.description_html.map(|d| description_html.eq(d)),
)),
Epic,
user_id => i32,
project_id => i32,
2021-01-19 21:57:48 +01:00
name => String,
description => Option<DescriptionString>,
description_html => Option<DescriptionString>
}
db_update! {
UpdateEpic,
msg => epics => diesel::update(
epics
.filter(project_id.eq(msg.project_id))
.find(msg.epic_id),
).set(name.eq(msg.name)),
Epic,
epic_id => i32,
project_id => i32,
name => String
}
db_delete! {
DeleteEpic,
msg => epics => diesel::delete(
epics.filter(user_id.eq(msg.user_id)).find(msg.epic_id)
),
Epic,
user_id => i32,
epic_id => i32
}