Skip to content
Clone

feat(issues): add issue_user usecase update

zhenyi committed
parent 67618e6 commit 496c4bb Browse files

1 file changed

+33 −0

Added lib/issues/features/issue_user/usecase/update.rs View lib/issues/features/issue_user/usecase/update.rs
@@ -0,0 +1,33 @@
1use db::conn::sea_orm::*;
2use time::OffsetDateTime;
3use uuid::Uuid;
4
5use crate::error::IssueResult;
6use crate::features::IssueService;
7
8use super::super::types::{IssueUserView, UpdateIssueUserOption};
9use super::helpers::{load_issue_user, require_authenticated};
10
11pub async fn update_issue_user(
12 svc: &IssueService,
13 actor: Uuid,
14 channel_id: Uuid,
15 issue_id: Uuid,
16 uid: Uuid,
17 input: UpdateIssueUserOption,
18) -> IssueResult<IssueUserView> {
19 require_authenticated(actor)?;
20 crate::features::issue::usecase::load_issue(svc, channel_id, issue_id).await?;
21 let cur = load_issue_user(svc, issue_id, uid).await?;
22 let db = svc.db.writer();
23 let mut active: db::issue::issue_user::ActiveModel = cur.into();
24 if let Some(v) = input.is_read {
25 active.is_read = Set(v);
26 }
27 if let Some(v) = input.is_mentioned {
28 active.is_mentioned = Set(v);
29 }
30 let _ = OffsetDateTime::now_utc();
31 let saved = active.update(&db).await?;
32 Ok(IssueUserView::from(saved))
33}