diff --git a/migrations/20190418_productTemplates_isAddOn.sql b/migrations/20190418_productTemplates_isAddOn.sql new file mode 100644 index 00000000..ee271239 --- /dev/null +++ b/migrations/20190418_productTemplates_isAddOn.sql @@ -0,0 +1,12 @@ +-- +-- UPDATE EXISTING TABLES: +-- product_templates: +-- added column `isAddOn` + +-- +-- product_templates + +-- Add new column +ALTER TABLE product_templates ADD COLUMN "isAddOn" boolean DEFAULT false; +-- Update new column +UPDATE product_templates SET "isAddOn"='true' WHERE "subCategory" != "category"; diff --git a/src/models/productTemplate.js b/src/models/productTemplate.js index f8fd7f17..9149ce04 100644 --- a/src/models/productTemplate.js +++ b/src/models/productTemplate.js @@ -18,6 +18,7 @@ module.exports = (sequelize, DataTypes) => { deletedAt: DataTypes.DATE, disabled: { type: DataTypes.BOOLEAN, defaultValue: false }, hidden: { type: DataTypes.BOOLEAN, defaultValue: false }, + isAddOn: { type: DataTypes.BOOLEAN, defaultValue: false }, createdAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, updatedAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, deletedBy: DataTypes.BIGINT, diff --git a/src/routes/productTemplates/create.js b/src/routes/productTemplates/create.js index 9907d085..aa9e4b98 100644 --- a/src/routes/productTemplates/create.js +++ b/src/routes/productTemplates/create.js @@ -26,6 +26,7 @@ const schema = { template: Joi.object().required(), disabled: Joi.boolean().optional(), hidden: Joi.boolean().optional(), + isAddOn: Joi.boolean().optional(), createdAt: Joi.any().strip(), updatedAt: Joi.any().strip(), deletedAt: Joi.any().strip(), diff --git a/src/routes/productTemplates/create.spec.js b/src/routes/productTemplates/create.spec.js index 0c283caf..fc367625 100644 --- a/src/routes/productTemplates/create.spec.js +++ b/src/routes/productTemplates/create.spec.js @@ -42,6 +42,7 @@ describe('CREATE product template', () => { aliases: ['product key 1', 'product_key_1'], disabled: true, hidden: true, + isAddOn: true, template: { template1: { name: 'template 1', diff --git a/src/routes/productTemplates/list.spec.js b/src/routes/productTemplates/list.spec.js index ae061c24..f975a3a9 100644 --- a/src/routes/productTemplates/list.spec.js +++ b/src/routes/productTemplates/list.spec.js @@ -15,7 +15,7 @@ const validateProductTemplates = (count, resJson, expectedTemplates) => { resJson.should.have.length(count); resJson.forEach((pt, idx) => { pt.should.have.all.keys('id', 'name', 'productKey', 'category', 'subCategory', 'icon', 'brief', 'details', - 'aliases', 'template', 'disabled', 'hidden', 'createdBy', 'createdAt', 'updatedBy', 'updatedAt'); + 'aliases', 'template', 'disabled', 'hidden', 'isAddOn', 'createdBy', 'createdAt', 'updatedBy', 'updatedAt'); pt.should.not.have.all.keys('deletedAt', 'deletedBy'); pt.name.should.be.eql(expectedTemplates[idx].name); pt.productKey.should.be.eql(expectedTemplates[idx].productKey); @@ -30,6 +30,7 @@ const validateProductTemplates = (count, resJson, expectedTemplates) => { pt.updatedBy.should.be.eql(expectedTemplates[idx].updatedBy); pt.disabled.should.be.eql(_.get(expectedTemplates[idx], 'disabled', false)); pt.hidden.should.be.eql(_.get(expectedTemplates[idx], 'hidden', false)); + pt.isAddOn.should.be.eql(_.get(expectedTemplates[idx], 'isAddOn', false)); }); }; @@ -52,6 +53,7 @@ describe('LIST product templates', () => { }, disabled: true, hidden: true, + isAddOn: true, template: { template1: { name: 'template 1', diff --git a/src/routes/productTemplates/update.js b/src/routes/productTemplates/update.js index 60d7f730..ad245b8e 100644 --- a/src/routes/productTemplates/update.js +++ b/src/routes/productTemplates/update.js @@ -29,6 +29,7 @@ const schema = { template: Joi.object(), disabled: Joi.boolean().optional(), hidden: Joi.boolean().optional(), + isAddOn: Joi.boolean().optional(), createdAt: Joi.any().strip(), updatedAt: Joi.any().strip(), deletedAt: Joi.any().strip(), diff --git a/src/routes/productTemplates/update.spec.js b/src/routes/productTemplates/update.spec.js index f0223d4b..a1508e2c 100644 --- a/src/routes/productTemplates/update.spec.js +++ b/src/routes/productTemplates/update.spec.js @@ -22,6 +22,7 @@ describe('UPDATE product template', () => { aliases: ['productTemplate-1', 'productTemplate_1'], disabled: true, hidden: true, + isAddOn: true, template: { template1: { name: 'template 1', diff --git a/swagger.yaml b/swagger.yaml index e8e33389..a7085701 100644 --- a/swagger.yaml +++ b/swagger.yaml @@ -3703,6 +3703,9 @@ definitions: template: type: object description: the product template template + isAddOn: + type: boolean + description: the flag that shows if the product template is an add on ProductTemplateBodyParam: title: Product template body param type: object