d5939db
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<IssueUserView> {
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))
}