Skip to content
Clone
main
30 lines 1.0 KB Rust
pub mod link_issue_pull;
pub mod list_issue_pulls;
pub mod unlink_issue_pull;
use issues::services::issues::IssuePath;
use crate::errors::{ApiError, PullError};
use crate::services::service::PullService;
/// 校验空间成员与看板/工单可读性,返回工单与其所属空间。
pub(crate) async fn resolve_issue(
service: &PullService,
uid: i64,
path: &IssuePath,
) -> Result<(uuid::Uuid, uuid::Uuid, uuid::Uuid), ApiError> {
let issues = &service.issues;
let space = issues::share::lookup::lookup_space_by_name(issues, &path.space_name)
.await
.map_err(PullError::from)?;
issues::share::lookup::require_member(issues, &space, uid)
.await
.map_err(PullError::from)?;
let board = issues::share::lookup::lookup_board(issues, &space, path.board_id, uid)
.await
.map_err(PullError::from)?;
let issue = issues::share::lookup::lookup_issue_by_ref(issues, &board, &path.issue_id)
.await
.map_err(PullError::from)?;
Ok((space.id(), board.id, issue.id))
}