Skip to content

Commit c37dab7

Browse files
Updated code
1 parent 8885fa5 commit c37dab7

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

packages/contentstack-import/src/import/modules/base-class.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { RoleData } from '@contentstack/management/types/stack/role';
1919

2020
import { log } from '../../utils';
2121
import { ImportConfig, ModuleClassParams } from '../../types';
22+
const nestedGlobalFieldsVersion = '3.2';
2223

2324
export type AdditionalKeys = {
2425
backupDir: string;
@@ -316,7 +317,7 @@ export default abstract class BaseClass {
316317
case 'update-cts':
317318
return apiData.update().then(onSuccess).catch(onReject);
318319
case 'create-gfs':
319-
return this.stack.globalField().create(apiData).then(onSuccess).catch(onReject);
320+
return this.stack.globalField({api_version: nestedGlobalFieldsVersion}).create(apiData).then(onSuccess).catch(onReject);
320321
case 'update-gfs':
321322
return apiData.update().then(onSuccess).catch(onReject);
322323
case 'create-environments':

packages/contentstack-import/src/import/modules/global-fields.ts

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ export default class ImportGlobalFields extends BaseClass {
3333
private reqConcurrency: number;
3434
private installedExtensions: Record<string, unknown>;
3535
private existingGFs: Record<string, any>[];
36-
private fieldRules: Array<Record<string, unknown>>;
3736
private gFsConfig: {
3837
dirName: string;
3938
fileName: string;
@@ -52,7 +51,6 @@ export default class ImportGlobalFields extends BaseClass {
5251
this.failedGFs = [];
5352
this.pendingGFs = [];
5453
this.existingGFs = [];
55-
this.fieldRules = [];
5654
this.reqConcurrency = this.gFsConfig.writeConcurrency || this.config.writeConcurrency;
5755
this.gFsMapperPath = path.resolve(sanitizePath(this.config.data), 'mapper', 'global_fields');
5856
this.gFsFolderPath = path.resolve(sanitizePath(this.config.data), sanitizePath(this.gFsConfig.dirName));
@@ -101,7 +99,7 @@ export default class ImportGlobalFields extends BaseClass {
10199
const onSuccess = ({ response: globalField, apiData: { uid } = undefined }: any) => {
102100
this.createdGFs.push(globalField);
103101
this.gFsUidMapper[uid] = globalField;
104-
log(this.importConfig, `${uid} Global field seeded`, 'info');
102+
log(this.importConfig, `${globalField.uid} Global field seeded`, 'info');
105103
};
106104
const onReject = ({ error, apiData: globalField = undefined }: any) => {
107105
const uid = globalField.uid;
@@ -110,7 +108,7 @@ export default class ImportGlobalFields extends BaseClass {
110108
this.existingGFs.push(globalField);
111109
}
112110
if (!this.importConfig.skipExisting) {
113-
log(this.importConfig, `Global fields '${uid}' already exist`, 'info');
111+
log(this.importConfig, `Global fields '${globalField.uid}' already exist`, 'info');
114112
}
115113
} else {
116114
log(this.importConfig, `Global fields '${uid}' failed to import`, 'error');
@@ -153,11 +151,12 @@ export default class ImportGlobalFields extends BaseClass {
153151
const onReject = ({ error, apiData: { uid } = undefined }: any) => {
154152
log(this.importConfig, `Failed to update the global field '${uid}' ${formatError(error)}`, 'error');
155153
};
154+
156155
return await this.makeConcurrentCall({
157156
processName: 'Update Global Fields',
158157
apiContent: this.gFs,
159158
apiParams: {
160-
serializeData: this.serializeReplaceGFs.bind(this),
159+
serializeData: this.serializeUpdateGFs.bind(this),
161160
reject: onReject.bind(this),
162161
resolve: onSuccess.bind(this),
163162
entity: 'update-gfs',
@@ -167,6 +166,27 @@ export default class ImportGlobalFields extends BaseClass {
167166
});
168167
}
169168

169+
/**
170+
* @method serializeUpdateGFs
171+
* @param {ApiOptions} apiOptions ApiOptions
172+
* @returns {ApiOptions} ApiOptions
173+
*/
174+
serializeUpdateGFs(apiOptions: ApiOptions): ApiOptions {
175+
const { apiData: globalField } = apiOptions;
176+
lookupExtension(this.config, globalField.schema, this.config.preserveStackVersion, this.installedExtensions);
177+
let flag = { supressed: false };
178+
removeReferenceFields(globalField.schema, flag, this.stack);
179+
if (flag.supressed) {
180+
this.pendingGFs.push(globalField.uid);
181+
}
182+
const globalFieldPayload = this.stack.globalField(globalField.uid, { api_version: nestedGlobalFieldsVersion });
183+
Object.assign(globalFieldPayload, cloneDeep(globalField), {
184+
stackHeaders: globalFieldPayload.stackHeaders,
185+
});
186+
apiOptions.apiData = globalFieldPayload;
187+
return apiOptions;
188+
}
189+
170190
async replaceGFs(): Promise<any> {
171191
const onSuccess = ({ response: globalField, apiData: { uid } = { uid: null } }: any) => {
172192
this.createdGFs.push(globalField);

0 commit comments

Comments
 (0)