diff --git a/packages/backend/src/db/migrations/20220127141941_add_position_to_steps.ts b/packages/backend/src/db/migrations/20220127141941_add_position_to_steps.ts new file mode 100644 index 00000000..fac88acb --- /dev/null +++ b/packages/backend/src/db/migrations/20220127141941_add_position_to_steps.ts @@ -0,0 +1,13 @@ +import { Knex } from 'knex'; + +export async function up(knex: Knex): Promise { + return knex.schema.table('steps', (table) => { + table.integer('position').notNullable(); + }); +} + +export async function down(knex: Knex): Promise { + return knex.schema.table('steps', (table) => { + table.dropColumn('position'); + }); +} diff --git a/packages/backend/src/graphql/mutations/create-flow.ts b/packages/backend/src/graphql/mutations/create-flow.ts index e1eb5eac..f65579e5 100644 --- a/packages/backend/src/graphql/mutations/create-flow.ts +++ b/packages/backend/src/graphql/mutations/create-flow.ts @@ -5,20 +5,22 @@ import RequestWithCurrentUser from '../../types/express/request-with-current-use const createFlowResolver = async (req: RequestWithCurrentUser) => { const flow = await Flow.query().insert({ - userId: req.currentUser.id + userId: req.currentUser.id, }); await Step.query().insert({ flowId: flow.id, - type: 'trigger' - }) + type: 'trigger', + position: 1, + }); return flow; -} +}; const createFlow = { type: flowType, - resolve: (_: any, _params: any, req: RequestWithCurrentUser) => createFlowResolver(req) + resolve: (_: any, _params: any, req: RequestWithCurrentUser) => + createFlowResolver(req), }; export default createFlow; diff --git a/packages/backend/src/graphql/types/step.ts b/packages/backend/src/graphql/types/step.ts index f0fb6809..5214971a 100644 --- a/packages/backend/src/graphql/types/step.ts +++ b/packages/backend/src/graphql/types/step.ts @@ -1,4 +1,9 @@ -import { GraphQLObjectType, GraphQLString, GraphQLEnumType, GraphQLInt } from 'graphql'; +import { + GraphQLObjectType, + GraphQLString, + GraphQLEnumType, + GraphQLInt, +} from 'graphql'; import ConnectionType from './connection'; const stepType = new GraphQLObjectType({ @@ -13,11 +18,12 @@ const stepType = new GraphQLObjectType({ values: { trigger: { value: 'trigger' }, action: { value: 'action' }, - } - }) + }, + }), }, - connection: { type: ConnectionType } - } -}) + connection: { type: ConnectionType }, + position: { type: GraphQLInt }, + }, +}); export default stepType; diff --git a/packages/backend/src/models/step.ts b/packages/backend/src/models/step.ts index 1428364c..a2817ddf 100644 --- a/packages/backend/src/models/step.ts +++ b/packages/backend/src/models/step.ts @@ -8,13 +8,14 @@ enum StepEnumType { } class Step extends Base { - id!: number - flowId!: number - key: string - appKey: string - type!: StepEnumType - connectionId!: number - parameters: any + id!: number; + flowId!: number; + key: string; + appKey: string; + type!: StepEnumType; + connectionId!: number; + position: number; + parameters: any; static tableName = 'steps'; @@ -27,11 +28,12 @@ class Step extends Base { flowId: { type: 'integer' }, key: { type: 'string', minLength: 1, maxLength: 255 }, appKey: { type: 'string', minLength: 1, maxLength: 255 }, - type: { type: "string", enum: ["action", "trigger"] }, + type: { type: 'string', enum: ['action', 'trigger'] }, connectionId: { type: 'integer' }, + position: { type: 'integer' }, parameters: { type: ['object', null] }, - } - } + }, + }; static relationMappings = () => ({ flow: { @@ -47,10 +49,10 @@ class Step extends Base { modelClass: Connection, join: { from: 'steps.connection_id', - to: 'connections.id' + to: 'connections.id', }, - } - }) + }, + }); } export default Step;