@@ -72,7 +72,6 @@ const arrangGroups = ({ schema, newStack }: any) => {
7272}
7373
7474const 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+
620569const 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
629594export const contenTypeMaker = async ( { contentType, destinationStackId, projectId, newStack, keyMapper, region, user_id } : any ) => {
0 commit comments