35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
import { ref } from 'objection';
|
|
import ExecutionStep from '../../models/execution-step.js';
|
|
import Step from '../../models/step.js';
|
|
|
|
const getStepWithTestExecutions = async (_parent, params, context) => {
|
|
const conditions = context.currentUser.can('update', 'Flow');
|
|
const userSteps = context.currentUser.$relatedQuery('steps');
|
|
const allSteps = Step.query();
|
|
const stepBaseQuery = conditions.isCreator ? userSteps : allSteps;
|
|
|
|
const step = await stepBaseQuery
|
|
.clone()
|
|
.findOne({ 'steps.id': params.stepId })
|
|
.throwIfNotFound();
|
|
|
|
const previousStepsWithCurrentStep = await stepBaseQuery
|
|
.clone()
|
|
.withGraphJoined('executionSteps')
|
|
.where('flow_id', '=', step.flowId)
|
|
.andWhere('position', '<', step.position)
|
|
.andWhere(
|
|
'executionSteps.created_at',
|
|
'=',
|
|
ExecutionStep.query()
|
|
.max('created_at')
|
|
.where('step_id', '=', ref('steps.id'))
|
|
.andWhere('status', 'success')
|
|
)
|
|
.orderBy('steps.position', 'asc');
|
|
|
|
return previousStepsWithCurrentStep;
|
|
};
|
|
|
|
export default getStepWithTestExecutions;
|