From 4947838945055fb664a6531986d3fbf9081c55f4 Mon Sep 17 00:00:00 2001 From: Shristi Sinha Date: Tue, 19 Mar 2024 19:49:37 +0530 Subject: [PATCH 1/7] resolve conflict --- src/services/contentMapper.service.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/services/contentMapper.service.ts b/src/services/contentMapper.service.ts index 100a4c183..32a72515a 100644 --- a/src/services/contentMapper.service.ts +++ b/src/services/contentMapper.service.ts @@ -134,7 +134,6 @@ const getFieldMapping = async (req: Request) => { const contentType = await ContentTypesMapperModel.findOne({ _id: contentTypeId, }).populate("fieldMapping"); - if (isEmpty(contentType)) { logger.error( getLogMessage( From d749e5d3bf9c14a31d533e7b7d4b162fdca7af30 Mon Sep 17 00:00:00 2001 From: Shristi Sinha Date: Tue, 19 Mar 2024 23:10:02 +0530 Subject: [PATCH 2/7] implement lowdb in contentMapper putTestData function --- src/models/contentTypesMapper-lowdb.ts | 27 ++++++++++++++++ src/services/contentMapper.service.ts | 43 ++++++++++++-------------- 2 files changed, 47 insertions(+), 23 deletions(-) create mode 100644 src/models/contentTypesMapper-lowdb.ts diff --git a/src/models/contentTypesMapper-lowdb.ts b/src/models/contentTypesMapper-lowdb.ts new file mode 100644 index 000000000..e66bf2147 --- /dev/null +++ b/src/models/contentTypesMapper-lowdb.ts @@ -0,0 +1,27 @@ +import { JSONFile } from "lowdb/node"; +import LowWithLodash from "../utils/lowdb-lodash.utils.js"; + +interface ContentTypesMapper { + id: string; + projectId: string; + otherCmsTitle: string; + otherCmsUid: string; + isUpdated: boolean; + updateAt: Date; + contentstackTitle: string; + contentstackUid: string; + fieldMapping: []; +} + +interface ContentTypeMapperDocument { + ContentTypesMappers: ContentTypesMapper[]; +} + +const defaultData: ContentTypeMapperDocument = { ContentTypesMappers: [] }; + +const db = new LowWithLodash( + new JSONFile("database/contentTypesMapper.json"), + defaultData +); + +export default db; diff --git a/src/services/contentMapper.service.ts b/src/services/contentMapper.service.ts index 32a72515a..605b9a034 100644 --- a/src/services/contentMapper.service.ts +++ b/src/services/contentMapper.service.ts @@ -23,11 +23,12 @@ import getProjectUtil from "../utils/get-project.utils.js"; import ProjectModelLowdb from "../models/project-lowdb.js"; import FieldMapperModel from "../models/FieldMapper.js"; import { v4 as uuidv4 } from "uuid"; +import ContentTypesMapperModelLowdb from "../models/contentTypesMapper-lowdb.js"; // Developer service to create dummy contentmapping data const putTestData = async (req: Request) => { const projectId = req.params.projectId; - const contentTypes = req.body; + const contentTypes = req.body.contentTypes; await FieldMapperModel.read(); contentTypes.map((type: any, index: any) => { @@ -45,29 +46,25 @@ const putTestData = async (req: Request) => { contentTypes[index].fieldMapping = fieldIds; }); - let typeIds: any = []; - - await ContentTypesMapperModel.insertMany(contentTypes, { - ordered: true, - }) - .then(async function (docs) { - // do something with docs - typeIds = docs.map((item) => { - return item._id; - }); - }) - .catch(function () { - // console.log(err) - // error handling here - }); - - const projectDetails: any = await ProjectModel.findOne({ - _id: projectId, + const typeIds: any = []; + const obj = { + id: uuidv4(), + projectId: projectId, + contentTypes: contentTypes, + }; + await ContentTypesMapperModelLowdb.read(); + await ContentTypesMapperModelLowdb.update((data: any) => { + data.ContentTypesMappers.push(obj); }); - projectDetails.content_mapper = typeIds; - projectDetails.save(); - //Add logic to get Project from DB - return projectDetails; + typeIds.push(obj.id); + await ProjectModelLowdb.read(); + const pData = ProjectModelLowdb.chain + .get("projects") + .find({ id: projectId }) + .assign({ content_mapper: typeIds }) + .value(); + + return pData; }; const getContentTypes = async (req: Request) => { From 73bb028dd8866b9ca5da3e55582cb3fce9135ed9 Mon Sep 17 00:00:00 2001 From: Shristi Sinha Date: Wed, 20 Mar 2024 12:22:26 +0530 Subject: [PATCH 3/7] refactor code for function getFieldMapping --- src/models/contentTypesMapper-lowdb.ts | 10 ++++-- src/services/contentMapper.service.ts | 47 +++++++++++++++----------- 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/src/models/contentTypesMapper-lowdb.ts b/src/models/contentTypesMapper-lowdb.ts index e66bf2147..ebf158587 100644 --- a/src/models/contentTypesMapper-lowdb.ts +++ b/src/models/contentTypesMapper-lowdb.ts @@ -1,9 +1,7 @@ import { JSONFile } from "lowdb/node"; import LowWithLodash from "../utils/lowdb-lodash.utils.js"; -interface ContentTypesMapper { - id: string; - projectId: string; +interface contentTypes { otherCmsTitle: string; otherCmsUid: string; isUpdated: boolean; @@ -13,6 +11,12 @@ interface ContentTypesMapper { fieldMapping: []; } +interface ContentTypesMapper { + id: string; + projectId: string; + contentTypes: [contentTypes]; +} + interface ContentTypeMapperDocument { ContentTypesMappers: ContentTypesMapper[]; } diff --git a/src/services/contentMapper.service.ts b/src/services/contentMapper.service.ts index 605b9a034..cd164c139 100644 --- a/src/services/contentMapper.service.ts +++ b/src/services/contentMapper.service.ts @@ -36,14 +36,12 @@ const putTestData = async (req: Request) => { const fields = type.fieldMapping.map((field: any) => { const id = uuidv4(); fieldIds.push(id); - return { id, isDeleted: false, ...field.fieldMapping }; + return { id, isDeleted: false, ...field }; }); - FieldMapperModel.update((data: any) => { data.field_mapper = [...data.field_mapper, ...fields]; }); - - contentTypes[index].fieldMapping = fieldIds; + contentTypes[index].fieldMapping = fields; }); const typeIds: any = []; @@ -124,13 +122,17 @@ const getFieldMapping = async (req: Request) => { const limit: any = req?.params?.limit; const search: string = req?.params?.searchText?.toLowerCase(); - let result = []; + let result: any[] = []; let filteredResult = []; let totalCount = 0; - const contentType = await ContentTypesMapperModel.findOne({ - _id: contentTypeId, - }).populate("fieldMapping"); + await ContentTypesMapperModelLowdb.read(); + + const contentType = ContentTypesMapperModelLowdb.chain + .get("ContentTypesMappers") + .find({ id: contentTypeId }) + .value(); + if (isEmpty(contentType)) { logger.error( getLogMessage( @@ -141,19 +143,24 @@ const getFieldMapping = async (req: Request) => { throw new BadRequestError(HTTP_TEXTS.CONTENT_TYPE_NOT_FOUND); } - const { fieldMapping }: any = contentType; - if (!isEmpty(fieldMapping)) { - if (search) { - filteredResult = fieldMapping.filter((item: any) => - item?.otherCmsField?.toLowerCase().includes(search) - ); - totalCount = filteredResult.length; - result = filteredResult.slice(skip, Number(skip) + Number(limit)); - } else { - totalCount = fieldMapping.length; - result = fieldMapping.slice(skip, Number(skip) + Number(limit)); + contentType.contentTypes.map((type: any) => { + const fieldData = type.fieldMapping.map((fields: any) => { + return fields; + }); + const fieldMapping: any = fieldData; + if (!isEmpty(fieldMapping)) { + if (search) { + filteredResult = fieldMapping.filter((item: any) => + item?.otherCmsField?.toLowerCase().includes(search) + ); + totalCount = filteredResult.length; + result = filteredResult.slice(skip, Number(skip) + Number(limit)); + } else { + totalCount = fieldMapping.length; + result = fieldMapping.slice(skip, Number(skip) + Number(limit)); + } } - } + }); return { count: totalCount, fieldMapping: result }; }; From efa16ba496070f2f3d05a5dc3df8de94319886c4 Mon Sep 17 00:00:00 2001 From: Shristi Sinha Date: Wed, 20 Mar 2024 12:56:21 +0530 Subject: [PATCH 4/7] refactor fun getExistingContentTypes in contentmapper --- src/services/contentMapper.service.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/services/contentMapper.service.ts b/src/services/contentMapper.service.ts index cd164c139..0a3feadbd 100644 --- a/src/services/contentMapper.service.ts +++ b/src/services/contentMapper.service.ts @@ -173,7 +173,11 @@ const getExistingContentTypes = async (req: Request) => { token_payload?.region, token_payload?.user_id ); - const project = await ProjectModel.findById(projectId); + await ProjectModelLowdb.read(); + const project = ProjectModelLowdb.chain + .get("projects") + .find({ id: projectId }) + .value(); const stackId = project?.destination_stack_id; const [err, res] = await safePromise( https({ From b8c3fdb8c42fb9d69634195be0e066f605dbc6cf Mon Sep 17 00:00:00 2001 From: Shristi Sinha Date: Wed, 20 Mar 2024 15:11:57 +0530 Subject: [PATCH 5/7] refactor fun getContentTypes in contentmapper --- src/services/contentMapper.service.ts | 64 +++++++++++++++------------ 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/src/services/contentMapper.service.ts b/src/services/contentMapper.service.ts index 0a3feadbd..2a3409cd1 100644 --- a/src/services/contentMapper.service.ts +++ b/src/services/contentMapper.service.ts @@ -7,7 +7,6 @@ import { ExceptionFunction, } from "../utils/custom-errors.utils.js"; import { - CONTENT_TYPE_POPULATE_FIELDS, HTTP_TEXTS, HTTP_CODES, POPULATE_CONTENT_MAPPER, @@ -72,14 +71,14 @@ const getContentTypes = async (req: Request) => { const limit: any = req?.params?.limit; const search: string = req?.params?.searchText?.toLowerCase(); - let result = []; + let result: any = []; let totalCount = 0; - const projectDetails = await ProjectModel.findOne({ - _id: projectId, - }).populate({ - path: POPULATE_CONTENT_MAPPER, - select: CONTENT_TYPE_POPULATE_FIELDS, - }); + + await ProjectModelLowdb.read(); + const projectDetails = ProjectModelLowdb.chain + .get("projects") + .find({ id: projectId }) + .value(); if (isEmpty(projectDetails)) { logger.error( @@ -90,28 +89,35 @@ const getContentTypes = async (req: Request) => { ); throw new BadRequestError(HTTP_TEXTS.PROJECT_NOT_FOUND); } - const { content_mapper }: any = projectDetails; - - if (!isEmpty(content_mapper)) { - if (search) { - const filteredResult = content_mapper - .filter((item: any) => - item?.otherCmsTitle?.toLowerCase().includes(search) - ) - ?.sort((a: any, b: any) => - a.otherCmsTitle.localeCompare(b.otherCmsTitle) - ); - totalCount = filteredResult.length; - result = filteredResult.slice(skip, Number(skip) + Number(limit)); - } else { - totalCount = content_mapper.length; - result = content_mapper - ?.sort((a: any, b: any) => - a.otherCmsTitle.localeCompare(b.otherCmsTitle) - ) - ?.slice(skip, Number(skip) + Number(limit)); + const contentMapperId = projectDetails.content_mapper; + await ContentTypesMapperModelLowdb.read(); + contentMapperId.map((data: any) => { + const contentMapperData = ContentTypesMapperModelLowdb.chain + .get("ContentTypesMappers") + .find({ id: data }) + .value(); + const content_mapper = contentMapperData.contentTypes; + if (!isEmpty(content_mapper)) { + if (search) { + const filteredResult = content_mapper + .filter((item: any) => + item?.otherCmsTitle?.toLowerCase().includes(search) + ) + ?.sort((a: any, b: any) => + a.otherCmsTitle.localeCompare(b.otherCmsTitle) + ); + totalCount = filteredResult.length; + result = filteredResult.slice(skip, Number(skip) + Number(limit)); + } else { + totalCount = content_mapper.length; + result = content_mapper + ?.sort((a: any, b: any) => + a.otherCmsTitle.localeCompare(b.otherCmsTitle) + ) + ?.slice(skip, Number(skip) + Number(limit)); + } } - } + }); return { count: totalCount, contentTypes: result }; }; From 47106156d47cd3c4a098ad3794fe43d298577f95 Mon Sep 17 00:00:00 2001 From: Shristi Sinha Date: Wed, 20 Mar 2024 21:07:42 +0530 Subject: [PATCH 6/7] refactor fun resetAllContentTypesMapping in contentmapper --- src/services/contentMapper.service.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/services/contentMapper.service.ts b/src/services/contentMapper.service.ts index 2a3409cd1..67a8ad43b 100644 --- a/src/services/contentMapper.service.ts +++ b/src/services/contentMapper.service.ts @@ -465,8 +465,10 @@ const resetAllContentTypesMapping = async (projectId: string) => { }; }) ); - await ContentTypesMapperModel.bulkWrite(contentTypesbulkWriteOperations, { - ordered: false, + + await ContentTypesMapperModelLowdb.read(); + ContentTypesMapperModelLowdb.update((data: any) => { + data.ContentTypesMappers.push(contentTypesbulkWriteOperations); }); return projectDetails; } catch (error: any) { From b26998d1989e16702be47dc7289b4cb48f2d054e Mon Sep 17 00:00:00 2001 From: Shristi Sinha Date: Wed, 20 Mar 2024 22:31:21 +0530 Subject: [PATCH 7/7] refactor fun removeMapping in contentmapper --- src/services/contentMapper.service.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/services/contentMapper.service.ts b/src/services/contentMapper.service.ts index 67a8ad43b..315d0f1d7 100644 --- a/src/services/contentMapper.service.ts +++ b/src/services/contentMapper.service.ts @@ -532,8 +532,10 @@ const removeMapping = async (projectId: string) => { }; }) ); - await ContentTypesMapperModel.bulkWrite(contentTypesbulkWriteOperations, { - ordered: false, + + await ContentTypesMapperModelLowdb.read(); + ContentTypesMapperModelLowdb.update((data: any) => { + data.ContentTypesMappers.push(contentTypesbulkWriteOperations); }); projectDetails.content_mapper = []; await projectDetails?.save();