From efd243a340a37c54723d529546b5d8ad3be7dcde Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Thu, 10 Aug 2023 14:32:11 +0000 Subject: [PATCH] feat: create getConfig GQL query --- .../backend/src/graphql/queries/get-config.ts | 31 +++++++++++++++++++ .../backend/src/graphql/query-resolvers.ts | 10 +++--- packages/backend/src/graphql/schema.graphql | 27 ++++++++-------- .../backend/src/helpers/authentication.ts | 1 + 4 files changed, 52 insertions(+), 17 deletions(-) create mode 100644 packages/backend/src/graphql/queries/get-config.ts diff --git a/packages/backend/src/graphql/queries/get-config.ts b/packages/backend/src/graphql/queries/get-config.ts new file mode 100644 index 00000000..72aa90d8 --- /dev/null +++ b/packages/backend/src/graphql/queries/get-config.ts @@ -0,0 +1,31 @@ +import Context from '../../types/express/context'; +import Config from '../../models/config'; + +type Params = { + keys: string[]; +}; + +const getConfig = async ( + _parent: unknown, + params: Params, + context: Context +) => { + const configQuery = Config + .query(); + + if (Array.isArray(params.keys)) { + configQuery.whereIn('key', params.keys); + } + + const config = await configQuery; + + return config.reduce((computedConfig, configEntry) => { + const { key, value } = configEntry; + + computedConfig[key] = value?.data; + + return computedConfig; + }, {} as Record); +}; + +export default getConfig; diff --git a/packages/backend/src/graphql/query-resolvers.ts b/packages/backend/src/graphql/query-resolvers.ts index 41dbcc98..932a1d18 100644 --- a/packages/backend/src/graphql/query-resolvers.ts +++ b/packages/backend/src/graphql/query-resolvers.ts @@ -3,6 +3,7 @@ import getApps from './queries/get-apps'; import getAutomatischInfo from './queries/get-automatisch-info'; import getBillingAndUsage from './queries/get-billing-and-usage.ee'; import getConnectedApps from './queries/get-connected-apps'; +import getConfig from './queries/get-config'; import getCurrentUser from './queries/get-current-user'; import getDynamicData from './queries/get-dynamic-data'; import getDynamicFields from './queries/get-dynamic-fields'; @@ -11,20 +12,20 @@ import getExecutionSteps from './queries/get-execution-steps'; import getExecutions from './queries/get-executions'; import getFlow from './queries/get-flow'; import getFlows from './queries/get-flows'; -import getUser from './queries/get-user'; -import getUsers from './queries/get-users'; import getInvoices from './queries/get-invoices.ee'; import getPaddleInfo from './queries/get-paddle-info.ee'; import getPaymentPlans from './queries/get-payment-plans.ee'; import getPermissionCatalog from './queries/get-permission-catalog.ee'; import getRole from './queries/get-role.ee'; import getRoles from './queries/get-roles.ee'; -import listSamlAuthProviders from './queries/list-saml-auth-providers.ee'; import getSamlAuthProvider from './queries/get-saml-auth-provider.ee'; import getStepWithTestExecutions from './queries/get-step-with-test-executions'; import getSubscriptionStatus from './queries/get-subscription-status.ee'; import getTrialStatus from './queries/get-trial-status.ee'; +import getUser from './queries/get-user'; +import getUsers from './queries/get-users'; import healthcheck from './queries/healthcheck'; +import listSamlAuthProviders from './queries/list-saml-auth-providers.ee'; import testConnection from './queries/test-connection'; const queryResolvers = { @@ -32,6 +33,7 @@ const queryResolvers = { getApps, getAutomatischInfo, getBillingAndUsage, + getConfig, getConnectedApps, getCurrentUser, getDynamicData, @@ -47,7 +49,6 @@ const queryResolvers = { getPermissionCatalog, getRole, getRoles, - listSamlAuthProviders, getSamlAuthProvider, getStepWithTestExecutions, getSubscriptionStatus, @@ -55,6 +56,7 @@ const queryResolvers = { getUser, getUsers, healthcheck, + listSamlAuthProviders, testConnection, }; diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index 9eeadbbe..a2b189a3 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -33,22 +33,23 @@ type Query { key: String! parameters: JSONObject ): [SubstepArgument] - getCurrentUser: User - getPaymentPlans: [PaymentPlan] - getPaddleInfo: GetPaddleInfo - getBillingAndUsage: GetBillingAndUsage - getInvoices: [Invoice] getAutomatischInfo: GetAutomatischInfo - getTrialStatus: GetTrialStatus - getSubscriptionStatus: GetSubscriptionStatus - listSamlAuthProviders: [ListSamlAuthProviders] - getSamlAuthProvider: SamlAuthProvider - getUsers(limit: Int!, offset: Int!): UserConnection - getUser(id: String!): User - getRoles: [Role] - getRole(id: String!): Role + getBillingAndUsage: GetBillingAndUsage + getCurrentUser: User + getConfig(keys: [String]): JSONObject + getInvoices: [Invoice] + getPaddleInfo: GetPaddleInfo + getPaymentPlans: [PaymentPlan] getPermissionCatalog: PermissionCatalog + getRole(id: String!): Role + getRoles: [Role] + getSamlAuthProvider: SamlAuthProvider + getSubscriptionStatus: GetSubscriptionStatus + getTrialStatus: GetTrialStatus + getUser(id: String!): User + getUsers(limit: Int!, offset: Int!): UserConnection healthcheck: AppHealth + listSamlAuthProviders: [ListSamlAuthProviders] } type Mutation { diff --git a/packages/backend/src/helpers/authentication.ts b/packages/backend/src/helpers/authentication.ts index de8ab5f0..d57e80c4 100644 --- a/packages/backend/src/helpers/authentication.ts +++ b/packages/backend/src/helpers/authentication.ts @@ -36,6 +36,7 @@ const authentication = shield( getAutomatischInfo: allow, listSamlAuthProviders: allow, healthcheck: allow, + getConfig: allow, }, Mutation: { '*': isAuthenticated,