2021-04-16 15:20:25 +02:00
|
|
|
use diesel::prelude::*;
|
|
|
|
use jirs_data::{IssueStatus, IssueStatusId, Position, ProjectId, TitleString};
|
|
|
|
|
|
|
|
use crate::{db_create, db_delete, db_load, db_update};
|
2020-12-24 16:24:04 +01:00
|
|
|
|
|
|
|
db_load! {
|
|
|
|
LoadIssueStatuses,
|
|
|
|
msg => issue_statuses => issue_statuses
|
|
|
|
.distinct_on(id)
|
|
|
|
.filter(project_id.eq(msg.project_id)),
|
|
|
|
IssueStatus,
|
|
|
|
project_id => ProjectId
|
|
|
|
}
|
|
|
|
|
|
|
|
db_create! {
|
|
|
|
CreateIssueStatus,
|
|
|
|
msg => issue_statuses => diesel::insert_into(issue_statuses).values((
|
|
|
|
project_id.eq(msg.project_id),
|
|
|
|
name.eq(msg.name),
|
|
|
|
position.eq(msg.position),
|
|
|
|
)),
|
|
|
|
IssueStatus,
|
|
|
|
project_id => ProjectId,
|
|
|
|
position => i32,
|
|
|
|
name => TitleString
|
|
|
|
}
|
|
|
|
|
|
|
|
db_delete! {
|
|
|
|
DeleteIssueStatus,
|
|
|
|
msg => issue_statuses => diesel::delete(issue_statuses)
|
|
|
|
.filter(id.eq(msg.issue_status_id))
|
|
|
|
.filter(project_id.eq(msg.project_id)
|
|
|
|
),
|
|
|
|
IssueStatus,
|
|
|
|
project_id => ProjectId,
|
|
|
|
issue_status_id => IssueStatusId
|
|
|
|
}
|
|
|
|
|
|
|
|
db_update! {
|
|
|
|
UpdateIssueStatus,
|
|
|
|
msg => issue_statuses => diesel::update(issue_statuses)
|
|
|
|
.set((
|
|
|
|
name.eq(msg.name),
|
|
|
|
position.eq(msg.position),
|
|
|
|
updated_at.eq(chrono::Utc::now().naive_utc()),
|
|
|
|
))
|
|
|
|
.filter(id.eq(msg.issue_status_id))
|
|
|
|
.filter(project_id.eq(msg.project_id)),
|
|
|
|
IssueStatus,
|
|
|
|
issue_status_id => IssueStatusId,
|
|
|
|
project_id => ProjectId,
|
|
|
|
position => Position,
|
|
|
|
name => TitleString
|
|
|
|
}
|