From d5657fc40955151de44a5adb4be308cde1b4ab50 Mon Sep 17 00:00:00 2001 From: petruki <31597636+petruki@users.noreply.github.com> Date: Sat, 26 Oct 2024 11:50:38 -0700 Subject: [PATCH] Removed duplicated data fetch from resolver for Config --- src/client/resolvers.js | 25 +++++++++++++------------ src/routers/client-api.js | 4 ++-- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/src/client/resolvers.js b/src/client/resolvers.js index f61e273..7619aad 100644 --- a/src/client/resolvers.js +++ b/src/client/resolvers.js @@ -75,7 +75,7 @@ export async function resolveGroupConfig(source, _id, name, activated, context) } export async function resolveDomain(activated, context) { - let domain = await Domain.findOne({ _id: context.domain }).lean().exec(); + const domain = await Domain.findById(context.domain).lean().exec(); if (activated !== undefined) { if (domain.activated[context.environment] !== activated) { return null; @@ -85,8 +85,8 @@ export async function resolveDomain(activated, context) { return domain; } -export async function checkDomain(domainId) { - return Domain.findOne({ _id: domainId }, null, { lean: true }); +export async function findDomain(domainId) { + return Domain.findById(domainId).lean(); } /** @@ -101,7 +101,9 @@ async function resolveComponentsFirst(source, context, groups) { context._component = component?._id; for (const group of groups) { let configsLength = await Config.find({ - domain: source._id, group: group._id, components: context._component + domain: source._id, + group: group._id, + components: context._component }).countDocuments().exec(); if (configsLength) { @@ -113,12 +115,11 @@ async function resolveComponentsFirst(source, context, groups) { return groups; } -async function checkGroup(configId) { - const config = await Config.findOne({ _id: configId }, null, { lean: true }).exec(); - return GroupConfig.findOne({ _id: config.group }, null, { lean: true }); +async function findGroup(config) { + return GroupConfig.findById(config.group).lean(); } -async function checkConfigStrategies(configId, strategyFilter) { +async function findConfigStrategies(configId, strategyFilter) { return ConfigStrategy.find({ config: configId }, strategyFilter).lean(); } @@ -198,16 +199,16 @@ export async function resolveCriteria(config, context, strategyFilter) { let domain, group, strategies; await Promise.all([ - checkDomain(context.domain), - checkGroup(config._id), - checkConfigStrategies(config._id, strategyFilter) + findDomain(context.domain), + findGroup(config), + findConfigStrategies(config._id, strategyFilter) ]).then(result => { domain = result[0]; group = result[1]; strategies = result[2]; }); - let response = { + const response = { domain, group, strategies, diff --git a/src/routers/client-api.js b/src/routers/client-api.js index 862f6d7..82a3f0b 100644 --- a/src/routers/client-api.js +++ b/src/routers/client-api.js @@ -3,7 +3,7 @@ import { body, check, query, header } from 'express-validator'; import jwt from 'jsonwebtoken'; import { checkConfig, checkConfigComponent, validate } from '../middleware/validators.js'; import { appAuth, appGenerateCredentials } from '../middleware/auth.js'; -import { resolveCriteria, checkDomain } from '../client/resolvers.js'; +import { resolveCriteria, findDomain } from '../client/resolvers.js'; import { getConfigs } from '../services/config.js'; import { clientLimiter } from '../middleware/limiter.js'; import { StrategiesType } from '../models/config-strategy.js'; @@ -51,7 +51,7 @@ router.get('/criteria/snapshot_check/:version', appAuth, clientLimiter, [ check('version', 'Wrong value for domain version').isNumeric() ], validate, async (req, res) => { try { - const domain = await checkDomain(req.domain); + const domain = await findDomain(req.domain); const version = req.params.version; if (domain.lastUpdate > version) {