diff --git a/packages/backend/src/graphql/queries/get-executions.ts b/packages/backend/src/graphql/queries/get-executions.ts new file mode 100644 index 00000000..ed635650 --- /dev/null +++ b/packages/backend/src/graphql/queries/get-executions.ts @@ -0,0 +1,16 @@ +import Context from '../../types/express/context'; + +const getExecutions = async ( + _parent: unknown, + _params: unknown, + context: Context +) => { + const executions = await context.currentUser + .$relatedQuery('executions') + .withGraphFetched('flow') + .orderBy('created_at', 'asc'); + + return executions; +}; + +export default getExecutions; diff --git a/packages/backend/src/graphql/query-resolvers.ts b/packages/backend/src/graphql/query-resolvers.ts index 8b91ce15..680671fc 100644 --- a/packages/backend/src/graphql/query-resolvers.ts +++ b/packages/backend/src/graphql/query-resolvers.ts @@ -6,6 +6,7 @@ import testConnection from './queries/test-connection'; import getFlow from './queries/get-flow'; import getFlows from './queries/get-flows'; import getStepWithTestExecutions from './queries/get-step-with-test-executions'; +import getExecutions from './queries/get-executions'; const queryResolvers = { getApps, @@ -16,6 +17,7 @@ const queryResolvers = { getFlow, getFlows, getStepWithTestExecutions, + getExecutions, }; export default queryResolvers; diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index af127724..50b68224 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -7,6 +7,7 @@ type Query { getFlow(id: String!): Flow getFlows: [Flow] getStepWithTestExecutions(stepId: String!): [Step] + getExecutions: [Execution] } type Mutation { @@ -168,6 +169,14 @@ type Flow { steps: [Step] } +type Execution { + id: String + testRun: Boolean + createdAt: String + updatedAt: String + flow: Flow +} + input CreateConnectionInput { key: AvailableAppsEnumType! formattedData: JSONObject! diff --git a/packages/backend/src/models/flow.ts b/packages/backend/src/models/flow.ts index 5d994664..45acc283 100644 --- a/packages/backend/src/models/flow.ts +++ b/packages/backend/src/models/flow.ts @@ -1,6 +1,7 @@ import { ValidationError } from 'objection'; import Base from './base'; import Step from './step'; +import Execution from './execution'; class Flow extends Base { id!: string; @@ -31,6 +32,14 @@ class Flow extends Base { to: 'steps.flow_id', }, }, + executions: { + relation: Base.HasManyRelation, + modelClass: Execution, + join: { + from: 'flows.id', + to: 'executions.flow_id', + }, + }, }); async $beforeUpdate(): Promise { diff --git a/packages/backend/src/models/user.ts b/packages/backend/src/models/user.ts index 6fa30489..f753b889 100644 --- a/packages/backend/src/models/user.ts +++ b/packages/backend/src/models/user.ts @@ -3,6 +3,7 @@ import Base from './base'; import Connection from './connection'; import Flow from './flow'; import Step from './step'; +import Execution from './execution'; import bcrypt from 'bcrypt'; class User extends Base { @@ -55,6 +56,18 @@ class User extends Base { to: 'steps.flow_id', }, }, + executions: { + relation: Base.ManyToManyRelation, + modelClass: Execution, + join: { + from: 'users.id', + through: { + from: 'flows.user_id', + to: 'flows.id', + }, + to: 'executions.flow_id', + }, + }, }); login(password: string) {