torc 0.22.1

Workflow management system
use super::*;
use crate::server::api::ResultsApi;

#[allow(clippy::too_many_arguments)]
impl<C> Server<C>
where
    C: Has<XSpanIdString> + Has<Option<Authorization>> + Send + Sync,
{
    pub(super) async fn transport_create_result(
        &self,
        body: models::ResultModel,
        context: &C,
    ) -> Result<CreateResultResponse, ApiError> {
        authorize_workflow!(self, body.workflow_id, context, CreateResultResponse);
        self.results_api.create_result(body, context).await
    }
    pub(super) async fn transport_delete_results(
        &self,
        workflow_id: i64,
        context: &C,
    ) -> Result<DeleteResultsResponse, ApiError> {
        authorize_workflow!(self, workflow_id, context, DeleteResultsResponse);
        self.results_api.delete_results(workflow_id, context).await
    }
    pub(super) async fn transport_list_results(
        &self,
        workflow_id: i64,
        job_id: Option<i64>,
        run_id: Option<i64>,
        return_code: Option<i64>,
        status: Option<models::JobStatus>,
        compute_node_id: Option<i64>,
        offset: Option<i64>,
        limit: Option<i64>,
        sort_by: Option<String>,
        reverse_sort: Option<bool>,
        all_runs: Option<bool>,
        context: &C,
    ) -> Result<ListResultsResponse, ApiError> {
        debug!(
            "list_results({}, {:?}, {:?}, {:?}, {:?}, compute_node_id={:?}, {:?}, {:?}, {:?}, {:?}, all_runs={:?}) - X-Span-ID: {:?}",
            workflow_id,
            job_id,
            run_id,
            return_code,
            status,
            compute_node_id,
            offset,
            limit,
            sort_by,
            reverse_sort,
            all_runs,
            Has::<XSpanIdString>::get(context).0.clone()
        );

        authorize_workflow!(self, workflow_id, context, ListResultsResponse);

        let (offset, limit) = process_pagination_params(offset, limit)?;
        self.results_api
            .list_results(
                workflow_id,
                job_id,
                run_id,
                return_code,
                status,
                compute_node_id,
                offset,
                limit,
                sort_by,
                reverse_sort,
                all_runs,
                context,
            )
            .await
    }
    pub(super) async fn transport_get_result(
        &self,
        id: i64,
        context: &C,
    ) -> Result<GetResultResponse, ApiError> {
        authorize_resource!(self, id, "result", context, GetResultResponse);
        self.results_api.get_result(id, context).await
    }
    pub(super) async fn transport_update_result(
        &self,
        id: i64,
        body: models::ResultModel,
        context: &C,
    ) -> Result<UpdateResultResponse, ApiError> {
        authorize_resource!(self, id, "result", context, UpdateResultResponse);
        self.results_api.update_result(id, body, context).await
    }
    pub(super) async fn transport_delete_result(
        &self,
        id: i64,
        context: &C,
    ) -> Result<DeleteResultResponse, ApiError> {
        authorize_resource!(self, id, "result", context, DeleteResultResponse);
        self.results_api.delete_result(id, context).await
    }
}