37 lines
997 B
TypeScript
37 lines
997 B
TypeScript
import Context from '../../types/express/context';
|
|
import paginate from '../../helpers/pagination';
|
|
import Execution from '../../models/execution';
|
|
|
|
type Params = {
|
|
executionId: string;
|
|
limit: number;
|
|
offset: number;
|
|
};
|
|
|
|
const getExecutionSteps = async (
|
|
_parent: unknown,
|
|
params: Params,
|
|
context: Context
|
|
) => {
|
|
const conditions = context.currentUser.can('read', 'Execution');
|
|
const userExecutions = context.currentUser.$relatedQuery('executions');
|
|
const allExecutions = Execution.query();
|
|
const executionBaseQuery = conditions.isCreator ? userExecutions : allExecutions;
|
|
|
|
const execution = await executionBaseQuery
|
|
.clone()
|
|
.withSoftDeleted()
|
|
.findById(params.executionId)
|
|
.throwIfNotFound();
|
|
|
|
const executionSteps = execution
|
|
.$relatedQuery('executionSteps')
|
|
.withSoftDeleted()
|
|
.withGraphFetched('step')
|
|
.orderBy('created_at', 'asc');
|
|
|
|
return paginate(executionSteps, params.limit, params.offset);
|
|
};
|
|
|
|
export default getExecutionSteps;
|