030e59e
zhenyi
refactor(lib): migrate storage and security tier to central lib/config (auth, cache, db, email, jwt, payment, queue, rate_limit, storage)
030e59e
use db::conn::sea_orm::*;
use uuid::Uuid;
use crate::error::IssueResult;
use crate::features::IssueService;
use crate::metrics;
use super::helpers::{load_dependency, require_authenticated};
pub async fn delete_dependency(
svc: &IssueService,
actor: Uuid,
channel_id: Uuid,
issue_id: Uuid,
dep_id: Uuid,
) -> IssueResult<()> {
let _timer = metrics::Timer::start(metrics::FEATURE_ISSUE_DEPENDENCIES_DELETE);
let result: IssueResult<()> = async {
require_authenticated(actor)?;
crate::features::issue::usecase::load_issue(svc, channel_id, issue_id).await?;
let cur = load_dependency(svc, dep_id).await?;
if cur.issue_id != issue_id {
return Err(crate::error::IssueError::NotFound(format!("dep {dep_id}")));
}
let db = svc.db.writer();
let active: db::issue::issue_dependency::ActiveModel = cur.into();
active.delete(&db).await?;
Ok(())
}
.await;
metrics::record_outcome(metrics::FEATURE_ISSUE_DEPENDENCIES_DELETE, &result);
result
}