зеркало из https://github.com/mozilla/fxa.git
chore(contentful): Update content model
This commit is contained in:
Родитель
56026cd08e
Коммит
6f41a1e38e
|
@ -0,0 +1,201 @@
|
|||
function migrationFunction(migration, context) {
|
||||
const subGroup = migration.createContentType('subGroup');
|
||||
subGroup
|
||||
.displayField('internalName')
|
||||
.name('Sub group')
|
||||
.description('Subscription Group configuration.');
|
||||
|
||||
const subGroupInternalName = subGroup.createField('internalName');
|
||||
subGroupInternalName
|
||||
.name('Internal Name')
|
||||
.type('Symbol')
|
||||
.localized(false)
|
||||
.required(true)
|
||||
.validations([{ unique: true }])
|
||||
.disabled(false)
|
||||
.omitted(false);
|
||||
|
||||
const subGroupGroupName = subGroup.createField('groupName');
|
||||
subGroupGroupName
|
||||
.name('Group Name')
|
||||
.type('Symbol')
|
||||
.localized(false)
|
||||
.required(false)
|
||||
.validations([])
|
||||
.disabled(false)
|
||||
.omitted(false);
|
||||
|
||||
const subGroupOffering = subGroup.createField('offering');
|
||||
subGroupOffering
|
||||
.name('Offering')
|
||||
.type('Array')
|
||||
.localized(false)
|
||||
.required(true)
|
||||
.validations([])
|
||||
.disabled(false)
|
||||
.omitted(false)
|
||||
.items({ type: 'Link', validations: [], linkType: 'Entry' });
|
||||
subGroup.changeFieldControl('internalName', 'builtin', 'singleLine');
|
||||
subGroup.changeFieldControl('groupName', 'builtin', 'singleLine');
|
||||
subGroup.changeFieldControl('offering', 'builtin', 'entryLinksEditor');
|
||||
migration.deleteContentType('stripePromotionCode');
|
||||
migration.deleteContentType('stripePlan');
|
||||
|
||||
const couponConfig = migration.editContentType('couponConfig');
|
||||
const couponConfigStripePromotionCodes = couponConfig.editField(
|
||||
'stripePromotionCodes'
|
||||
);
|
||||
couponConfigStripePromotionCodes.items({ type: 'Symbol', validations: [] });
|
||||
couponConfig.changeFieldControl(
|
||||
'stripePromotionCodes',
|
||||
'builtin',
|
||||
'tagEditor'
|
||||
);
|
||||
|
||||
const purchase = migration.editContentType('purchase');
|
||||
purchase.deleteField('commonContent');
|
||||
const purchaseStripePlanChoices = purchase.editField('stripePlanChoices');
|
||||
purchaseStripePlanChoices.items({ type: 'Symbol', validations: [] });
|
||||
purchase.changeFieldControl('stripePlanChoices', 'builtin', 'tagEditor');
|
||||
|
||||
const offering = migration.editContentType('offering');
|
||||
const offeringArchivedStripePlans = offering.deleteField(
|
||||
'archivedStripePlans'
|
||||
);
|
||||
offering.deleteField('activeStripePlans');
|
||||
offering.deleteField('experimentPurchases');
|
||||
const offeringStripeProductId = offering.createField('stripeProductId');
|
||||
offeringStripeProductId
|
||||
.name('Stripe Product ID')
|
||||
.type('Symbol')
|
||||
.localized(false)
|
||||
.required(true)
|
||||
.validations([])
|
||||
.disabled(false)
|
||||
.omitted(false);
|
||||
|
||||
const offeringCountries = offering.createField('countries');
|
||||
offeringCountries
|
||||
.name('Countries')
|
||||
.type('Array')
|
||||
.localized(false)
|
||||
.required(false)
|
||||
.validations([])
|
||||
.disabled(false)
|
||||
.omitted(false)
|
||||
.items({
|
||||
type: 'Symbol',
|
||||
validations: [
|
||||
{
|
||||
in: [
|
||||
'US - United States',
|
||||
'DE - Germany',
|
||||
'CA - Canada',
|
||||
'FR - France',
|
||||
'ES - Spain',
|
||||
'IT - Italy',
|
||||
'GB - Great Britain',
|
||||
],
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
const offeringExperimentPurchase = offering.createField('experimentPurchase');
|
||||
offeringExperimentPurchase
|
||||
.name('Experiment purchase')
|
||||
.type('Array')
|
||||
.localized(false)
|
||||
.required(false)
|
||||
.validations([])
|
||||
.disabled(false)
|
||||
.omitted(false)
|
||||
.items({
|
||||
type: 'Link',
|
||||
validations: [{ linkContentType: ['purchase'] }],
|
||||
linkType: 'Entry',
|
||||
});
|
||||
offeringArchivedStripePlans.required(true);
|
||||
|
||||
const offeringCommonContent = offering.createField('commonContent');
|
||||
offeringCommonContent
|
||||
.name('Common Content')
|
||||
.type('Link')
|
||||
.localized(false)
|
||||
.required(false)
|
||||
.validations([{ linkContentType: ['commonContent'] }])
|
||||
.disabled(false)
|
||||
.omitted(false)
|
||||
.linkType('Entry');
|
||||
offering.changeFieldControl('commonContent', 'builtin', 'entryLinkEditor');
|
||||
offering.changeFieldControl('countries', 'builtin', 'tagEditor');
|
||||
offering.changeFieldControl('defaultPurchase', 'builtin', 'entryLinkEditor', {
|
||||
helpText:
|
||||
'Default purchase configuration to be used if no experiment is provided.',
|
||||
showLinkEntityAction: true,
|
||||
showCreateEntityAction: true,
|
||||
});
|
||||
offering.changeFieldControl(
|
||||
'experimentPurchase',
|
||||
'builtin',
|
||||
'entryLinksEditor',
|
||||
{
|
||||
helpText: 'Experiment purchase configurations.',
|
||||
bulkEditing: false,
|
||||
showLinkEntityAction: true,
|
||||
showCreateEntityAction: true,
|
||||
}
|
||||
);
|
||||
offering.changeFieldControl('iap', 'builtin', 'entryLinksEditor');
|
||||
offering.changeFieldControl('stripeProductId', 'builtin', 'singleLine');
|
||||
|
||||
const purchaseDetails = migration.editContentType('purchaseDetails');
|
||||
const purchaseDetailsProductName = purchaseDetails.editField('productName');
|
||||
purchaseDetailsProductName.required(true);
|
||||
purchaseDetails.changeFieldControl('details', 'builtin', 'markdown', {
|
||||
helpText:
|
||||
'Feature details for the product. Each new line will be a new point in a bullet-point list in the product.',
|
||||
});
|
||||
|
||||
const commonContent = migration.editContentType('commonContent');
|
||||
commonContent.deleteField('cancellationSurvey');
|
||||
const commonContentCancellationUrl =
|
||||
commonContent.createField('cancellationUrl');
|
||||
commonContentCancellationUrl
|
||||
.name('Cancellation URL')
|
||||
.type('Symbol')
|
||||
.localized(false)
|
||||
.required(false)
|
||||
.validations([
|
||||
{
|
||||
regexp: {
|
||||
pattern:
|
||||
'^(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-/]))?$',
|
||||
flags: null,
|
||||
},
|
||||
},
|
||||
])
|
||||
.disabled(false)
|
||||
.omitted(false);
|
||||
commonContent.changeFieldControl('cancellationUrl', 'builtin', 'singleLine');
|
||||
|
||||
const service = migration.editContentType('service');
|
||||
service.deleteField('oAuthClientId');
|
||||
const serviceOauthClientId = service.createField('oauthClientId');
|
||||
serviceOauthClientId
|
||||
.name('OAuth Client ID')
|
||||
.type('Symbol')
|
||||
.localized(false)
|
||||
.required(true)
|
||||
.validations([{ unique: true }])
|
||||
.disabled(false)
|
||||
.omitted(false);
|
||||
service.changeFieldControl('oauthClientId', 'builtin', 'singleLine', {
|
||||
helpText: 'Assigned OAuth Client ID from Account team.',
|
||||
});
|
||||
|
||||
const iap = migration.editContentType('iap');
|
||||
iap.resetFieldControl('appleProductIDs');
|
||||
iap.resetFieldControl('googleSKUs');
|
||||
iap.resetFieldControl('internalName');
|
||||
}
|
||||
module.exports = migrationFunction;
|
Загрузка…
Ссылка в новой задаче