use db::conn::sea_orm::*; use time::OffsetDateTime; use uuid::Uuid; use crate::error::IssueResult; use crate::features::IssueService; use super::super::{IssueUserView, UpdateIssueUserOption}; use super::helpers::{load_issue_user, require_authenticated}; pub async fn update_issue_user( svc: &IssueService, actor: Uuid, channel_id: Uuid, issue_id: Uuid, uid: Uuid, input: UpdateIssueUserOption, ) -> IssueResult { require_authenticated(actor)?; crate::features::issue::usecase::load_issue(svc, channel_id, issue_id).await?; let cur = load_issue_user(svc, issue_id, uid).await?; let db = svc.db.writer(); let mut active: db::issue::issue_user::ActiveModel = cur.into(); if let Some(v) = input.is_read { active.is_read = Set(v); } if let Some(v) = input.is_mentioned { active.is_mentioned = Set(v); } let _ = OffsetDateTime::now_utc(); let saved = active.update(&db).await?; Ok(IssueUserView::from(saved)) }