From ef9359b208e3e841502933b82ce1b4e47b6fc527 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Thu, 10 Aug 2023 14:32:22 +0000 Subject: [PATCH] feat: write updateConfig GQL mutation --- .../backend/src/graphql/mutation-resolvers.ts | 8 ++-- .../src/graphql/mutations/update-config.ts | 44 +++++++++++++++++++ packages/backend/src/graphql/schema.graphql | 3 +- 3 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 packages/backend/src/graphql/mutations/update-config.ts diff --git a/packages/backend/src/graphql/mutation-resolvers.ts b/packages/backend/src/graphql/mutation-resolvers.ts index 044b9f87..bd5e180c 100644 --- a/packages/backend/src/graphql/mutation-resolvers.ts +++ b/packages/backend/src/graphql/mutation-resolvers.ts @@ -17,6 +17,7 @@ import login from './mutations/login'; import registerUser from './mutations/register-user.ee'; import resetConnection from './mutations/reset-connection'; import resetPassword from './mutations/reset-password.ee'; +import updateConfig from './mutations/update-config'; import updateConnection from './mutations/update-connection'; import updateCurrentUser from './mutations/update-current-user'; import updateFlow from './mutations/update-flow'; @@ -24,8 +25,8 @@ import updateFlowStatus from './mutations/update-flow-status'; import updateRole from './mutations/update-role.ee'; import updateStep from './mutations/update-step'; import updateUser from './mutations/update-user.ee'; -import verifyConnection from './mutations/verify-connection'; import upsertSamlAuthProvider from './mutations/upsert-saml-auth-provider.ee'; +import verifyConnection from './mutations/verify-connection'; const mutationResolvers = { createConnection, @@ -47,15 +48,16 @@ const mutationResolvers = { registerUser, resetConnection, resetPassword, + updateConfig, updateConnection, updateCurrentUser, - updateUser, updateFlow, updateFlowStatus, updateRole, updateStep, - verifyConnection, + updateUser, upsertSamlAuthProvider, + verifyConnection, }; export default mutationResolvers; diff --git a/packages/backend/src/graphql/mutations/update-config.ts b/packages/backend/src/graphql/mutations/update-config.ts new file mode 100644 index 00000000..867897da --- /dev/null +++ b/packages/backend/src/graphql/mutations/update-config.ts @@ -0,0 +1,44 @@ +import type { IJSONValue } from '@automatisch/types'; +import Config from '../../models/config'; +import Context from '../../types/express/context'; + +type Params = { + input: { + [index: string]: IJSONValue; + }; +}; + +const updateConfig = async (_parent: unknown, params: Params, context: Context) => { + context.currentUser.can('update', 'Config'); + + const config = params.input; + const configKeys = Object.keys(config); + const updates = []; + + for (const key of configKeys) { + const newValue = config[key]; + + const entryUpdate = Config + .query() + .insert({ + key, + value: { + data: newValue + } + }) + .onConflict('key') + .merge({ + value: { + data: newValue + } + }); + + updates.push(entryUpdate); + } + + await Promise.all(updates); + + return config; +}; + +export default updateConfig; diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index a2b189a3..ce93a5be 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -72,6 +72,7 @@ type Mutation { registerUser(input: RegisterUserInput): User resetConnection(input: ResetConnectionInput): Connection resetPassword(input: ResetPasswordInput): Boolean + updateConfig(input: JSONObject): JSONObject updateConnection(input: UpdateConnectionInput): Connection updateCurrentUser(input: UpdateCurrentUserInput): User updateFlow(input: UpdateFlowInput): Flow @@ -79,8 +80,8 @@ type Mutation { updateRole(input: UpdateRoleInput): Role updateStep(input: UpdateStepInput): Step updateUser(input: UpdateUserInput): User - verifyConnection(input: VerifyConnectionInput): Connection upsertSamlAuthProvider(input: UpsertSamlAuthProviderInput): SamlAuthProvider + verifyConnection(input: VerifyConnectionInput): Connection } """