feat: Implement draft version of Step model
This commit is contained in:

committed by
Ömer Faruk Aydın

parent
a3dd76df21
commit
c48c905805
@@ -0,0 +1,18 @@
|
|||||||
|
import { Knex } from "knex";
|
||||||
|
|
||||||
|
export async function up(knex: Knex): Promise<void> {
|
||||||
|
return knex.schema.createTable('steps', (table) => {
|
||||||
|
table.increments('id');
|
||||||
|
table.string('key').notNullable();
|
||||||
|
table.string('app_key').notNullable();
|
||||||
|
table.string('type').notNullable();
|
||||||
|
table.integer('connection_id').references('id').inTable('connections');
|
||||||
|
table.text('parameters')
|
||||||
|
|
||||||
|
table.timestamps(true, true);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function down(knex: Knex): Promise<void> {
|
||||||
|
return knex.schema.dropTable('steps');
|
||||||
|
}
|
43
packages/backend/src/graphql/mutations/create-step.ts
Normal file
43
packages/backend/src/graphql/mutations/create-step.ts
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
import { GraphQLString, GraphQLNonNull, GraphQLInt, GraphQLEnumType } from 'graphql';
|
||||||
|
import Step from '../../models/step';
|
||||||
|
import stepType from '../types/step';
|
||||||
|
import RequestWithCurrentUser from '../../types/express/request-with-current-user';
|
||||||
|
|
||||||
|
type Params = {
|
||||||
|
key: string,
|
||||||
|
appKey: string,
|
||||||
|
type: string
|
||||||
|
connectionId: number
|
||||||
|
}
|
||||||
|
|
||||||
|
const createStepResolver = async (params: Params, req: RequestWithCurrentUser) => {
|
||||||
|
const step = await Step.query().insertAndFetch({
|
||||||
|
key: params.key,
|
||||||
|
appKey: params.appKey,
|
||||||
|
type: params.type,
|
||||||
|
connectionId: params.connectionId,
|
||||||
|
});
|
||||||
|
|
||||||
|
return step;
|
||||||
|
}
|
||||||
|
|
||||||
|
const createStep = {
|
||||||
|
type: stepType,
|
||||||
|
args: {
|
||||||
|
key: { type: GraphQLNonNull(GraphQLString) },
|
||||||
|
appKey: { type: GraphQLNonNull(GraphQLString) },
|
||||||
|
type: {
|
||||||
|
type: new GraphQLEnumType({
|
||||||
|
name: 'StepInputEnumType',
|
||||||
|
values: {
|
||||||
|
trigger: { value: 'trigger' },
|
||||||
|
action: { value: 'action' },
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
connectionId: { type: GraphQLNonNull(GraphQLInt) }
|
||||||
|
},
|
||||||
|
resolve: (_: any, params: Params, req: RequestWithCurrentUser) => createStepResolver(params, req)
|
||||||
|
};
|
||||||
|
|
||||||
|
export default createStep;
|
@@ -5,6 +5,7 @@ import updateConnection from './mutations/update-connection';
|
|||||||
import resetConnection from './mutations/reset-connection';
|
import resetConnection from './mutations/reset-connection';
|
||||||
import verifyConnection from './mutations/verify-connection';
|
import verifyConnection from './mutations/verify-connection';
|
||||||
import deleteConnection from './mutations/delete-connection';
|
import deleteConnection from './mutations/delete-connection';
|
||||||
|
import createStep from './mutations/create-step';
|
||||||
|
|
||||||
const rootMutation = new GraphQLObjectType({
|
const rootMutation = new GraphQLObjectType({
|
||||||
name: 'Mutation',
|
name: 'Mutation',
|
||||||
@@ -14,7 +15,8 @@ const rootMutation = new GraphQLObjectType({
|
|||||||
updateConnection,
|
updateConnection,
|
||||||
resetConnection,
|
resetConnection,
|
||||||
verifyConnection,
|
verifyConnection,
|
||||||
deleteConnection
|
deleteConnection,
|
||||||
|
createStep,
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
21
packages/backend/src/graphql/types/step.ts
Normal file
21
packages/backend/src/graphql/types/step.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import { GraphQLObjectType, GraphQLString, GraphQLNonNull, GraphQLEnumType, GraphQLInt } from 'graphql';
|
||||||
|
|
||||||
|
const stepType = new GraphQLObjectType({
|
||||||
|
name: 'Step',
|
||||||
|
fields: {
|
||||||
|
key: { type: GraphQLNonNull(GraphQLString) },
|
||||||
|
appKey: { type: GraphQLNonNull(GraphQLString) },
|
||||||
|
type: {
|
||||||
|
type: new GraphQLEnumType({
|
||||||
|
name: 'StepEnumType',
|
||||||
|
values: {
|
||||||
|
trigger: { value: 'trigger' },
|
||||||
|
action: { value: 'action' },
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
connectionId: { type: GraphQLNonNull(GraphQLInt) }
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
export default stepType;
|
33
packages/backend/src/models/step.ts
Normal file
33
packages/backend/src/models/step.ts
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
import Base from './base'
|
||||||
|
|
||||||
|
enum StepEnumType {
|
||||||
|
'trigger',
|
||||||
|
'action',
|
||||||
|
}
|
||||||
|
|
||||||
|
class Step extends Base {
|
||||||
|
id!: number
|
||||||
|
key!: string
|
||||||
|
appKey!: string
|
||||||
|
type!: StepEnumType
|
||||||
|
connectionId!: number
|
||||||
|
parameters: any
|
||||||
|
|
||||||
|
static tableName = 'steps';
|
||||||
|
|
||||||
|
static jsonSchema = {
|
||||||
|
type: 'object',
|
||||||
|
required: ['key', 'appKey', 'type', 'connectionId'],
|
||||||
|
|
||||||
|
properties: {
|
||||||
|
id: { type: 'integer' },
|
||||||
|
key: { type: 'string', minLength: 1, maxLength: 255 },
|
||||||
|
appKey: { type: 'string', minLength: 1, maxLength: 255 },
|
||||||
|
type: { type: "string", enum: ["action", "trigger"] },
|
||||||
|
connectionId: { type: 'integer' },
|
||||||
|
parameters: { type: 'object' },
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Step;
|
Reference in New Issue
Block a user