Skip to content

Commit 2944096

Browse files
authored
Merge pull request #375 from contentstack/feature/minor-bugs
removed lodash for merge and aaded custom logic
2 parents 7aab5e7 + d8961ac commit 2944096

File tree

3 files changed

+43
-78
lines changed

3 files changed

+43
-78
lines changed

api/src/services/migration.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ const deleteTestStack = async (req: Request): Promise<LoginServiceType> => {
169169
.get("projects")
170170
.findIndex({ id: projectId })
171171
.value();
172-
172+
173173
if (index > -1) {
174174
ProjectModelLowdb.update((data: any) => {
175175
data.projects[index].current_test_stack_id = "";

api/src/utils/content-type-creator.utils.ts

Lines changed: 39 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ const arrangGroups = ({ schema, newStack }: any) => {
7272
}
7373

7474
const convertToSchemaFormate = ({ field, advanced = true }: any) => {
75-
7675
switch (field?.contentstackFieldType) {
7776
case 'single_line_text': {
7877
return {
@@ -168,24 +167,6 @@ const convertToSchemaFormate = ({ field, advanced = true }: any) => {
168167
"mandatory": field?.advanced?.mandatory ?? false
169168
}
170169
}
171-
172-
// return {
173-
// "display_name": name,
174-
// "extension_uid": "blta7be8bced92ddabe",
175-
// "field_metadata": {
176-
// "extension": true,
177-
// "version": 3
178-
// },
179-
// uid,
180-
// "mandatory": field?.advanced?.mandatory ?? false,
181-
// "non_localizable": false,
182-
// "unique": field?.advanced?.unique ?? false,
183-
// "config": {},
184-
// "data_type": "text",
185-
// "multiple": field?.advanced?.multiple ?? false,
186-
// "indexed": false,
187-
// "inbuilt_model": false
188-
// }
189170
}
190171

191172
case 'dropdown': {
@@ -352,21 +333,6 @@ const convertToSchemaFormate = ({ field, advanced = true }: any) => {
352333
}
353334
}
354335

355-
// case "General Link": {
356-
// return {
357-
// "display_name": name,
358-
// uid,
359-
// "data_type": "text",
360-
// "mandatory": field?.advanced?.mandatory ?? false,
361-
// "field_metadata": {
362-
// "_default": true,
363-
// default_value
364-
// },
365-
// "multiple": field?.advanced?.multiple ?? false,
366-
// "unique": field?.advanced?.unique ?? false
367-
// }
368-
// }
369-
370336
case "number": {
371337
return {
372338
"data_type": "number",
@@ -410,23 +376,6 @@ const convertToSchemaFormate = ({ field, advanced = true }: any) => {
410376
}
411377
}
412378

413-
// case "Time": {
414-
// return {
415-
// "data_type": "isodate",
416-
// "display_name": name,
417-
// uid,
418-
// "startDate": null,
419-
// "endDate": null,
420-
// "field_metadata": {
421-
// description,
422-
// "default_value": {},
423-
// },
424-
// "mandatory": field?.advanced?.mandatory ?? false,
425-
// "multiple": field?.advanced?.multiple ?? false,
426-
// "non_localizable": false,
427-
// "unique": field?.advanced?.unique ?? false
428-
// }
429-
// }
430379

431380
case 'global_field': {
432381
return {
@@ -440,27 +389,6 @@ const convertToSchemaFormate = ({ field, advanced = true }: any) => {
440389
}
441390
}
442391

443-
// case 'Grouped Droplist': {
444-
// if (choices?.length) {
445-
// return {
446-
// id,
447-
// "data_type": "text",
448-
// "display_name": name,
449-
// "display_type": "dropdown",
450-
// "enum": {
451-
// "advanced": advanced,
452-
// choices
453-
// },
454-
// "multiple": field?.advanced?.multiple ?? false,
455-
// uid,
456-
// "field_metadata": {
457-
// description,
458-
// },
459-
// "mandatory": field?.advanced?.mandatory ?? false,
460-
// "unique": field?.advanced?.unique ?? false
461-
// };
462-
// }
463-
// }
464392
case "reference": {
465393
return {
466394
data_type: "reference",
@@ -483,7 +411,7 @@ const convertToSchemaFormate = ({ field, advanced = true }: any) => {
483411
}
484412

485413
case 'html': {
486-
return {
414+
const htmlField: any = {
487415
"data_type": "text",
488416
"display_name": field?.title,
489417
"uid": field?.uid,
@@ -502,6 +430,14 @@ const convertToSchemaFormate = ({ field, advanced = true }: any) => {
502430
"unique": field?.advanced?.unique ?? false,
503431
"reference_to": field?.advanced?.embedObjects?.length ? field?.advanced?.embedObjects?.map?.((item: any) => uidCorrector({ uid: item })) : []
504432
}
433+
if ((field?.advanced?.embedObjects?.length === undefined) ||
434+
(field?.advanced?.embedObjects?.length === 0) ||
435+
(field?.advanced?.embedObjects?.length === 1 && field?.advanced?.embedObjects?.[0] === 'sys_assets')) {
436+
delete htmlField?.reference_to;
437+
delete htmlField?.field_metadata?.embed_entry;
438+
delete htmlField?.field_metadata?.ref_multiple_content_types;
439+
}
440+
return htmlField;
505441
}
506442

507443
default: {
@@ -617,13 +553,42 @@ const existingCtMapper = async ({ keyMapper, contentTypeUid, projectId, region,
617553
}
618554
}
619555

556+
const mergeArrays = async (a: any[], b: any[]) => {
557+
for await (const fieldGp of b) {
558+
const exists = a.some(fld =>
559+
fld?.uid === fieldGp?.uid &&
560+
fld?.data_type === fieldGp?.data_type
561+
);
562+
if (!exists) {
563+
a.push(fieldGp);
564+
}
565+
}
566+
return a;
567+
}
568+
620569
const mergeTwoCts = async (ct: any, mergeCts: any) => {
621570
const ctData: any = {
622571
...ct,
623572
title: mergeCts?.title,
624573
uid: mergeCts?.uid,
625574
}
626-
return _.defaultsDeep(ctData, mergeCts);
575+
for await (const field of ctData?.schema ?? []) {
576+
if (field?.data_type === 'group') {
577+
const currentGroup = mergeCts?.schema?.find((grp: any) => grp?.uid === field?.uid &&
578+
grp?.data_type === 'group');
579+
const group = [];
580+
for await (const fieldGp of currentGroup?.schema ?? []) {
581+
const fieldNst = field?.schema?.find((fld: any) => fld?.uid === fieldGp?.uid &&
582+
fld?.data_type === fieldGp?.data_type);
583+
if (fieldNst === undefined) {
584+
group?.push(fieldGp);
585+
}
586+
}
587+
field.schema = [...field?.schema ?? [], ...group];
588+
}
589+
}
590+
ctData.schema = await mergeArrays(ctData?.schema, mergeCts?.schema) ?? [];
591+
return ctData;
627592
}
628593

629594
export const contenTypeMaker = async ({ contentType, destinationStackId, projectId, newStack, keyMapper, region, user_id }: any) => {

api/src/utils/test-folder-creator.utils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,9 @@ const lookForReference = async (
173173
}
174174
})
175175
if (refs?.length === 0) {
176-
delete child.field_metadata.embed_entry;
177-
delete child.field_metadata.ref_multiple_content_types;
178-
delete child.reference_to;
176+
delete child?.field_metadata?.embed_entry;
177+
delete child?.field_metadata?.ref_multiple_content_types;
178+
delete child?.reference_to;
179179
}
180180
break;
181181
}

0 commit comments

Comments
 (0)