Skip to content

Commit bad537f

Browse files
committed
winning submission from challenge 30088714 - Topcoder Connect - Add add-ons flag
1 parent 4fc2c27 commit bad537f

File tree

8 files changed

+23
-1
lines changed

8 files changed

+23
-1
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
--
2+
-- UPDATE EXISTING TABLES:
3+
-- product_templates:
4+
-- added column `isAddOn`
5+
6+
--
7+
-- product_templates
8+
9+
-- Add new column
10+
ALTER TABLE product_templates ADD COLUMN "isAddOn" boolean DEFAULT false;
11+
-- Update new column
12+
UPDATE product_templates SET "isAddOn"='true' WHERE "subCategory" != "category";

src/models/productTemplate.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ module.exports = (sequelize, DataTypes) => {
1818
deletedAt: DataTypes.DATE,
1919
disabled: { type: DataTypes.BOOLEAN, defaultValue: false },
2020
hidden: { type: DataTypes.BOOLEAN, defaultValue: false },
21+
isAddOn: { type: DataTypes.BOOLEAN, defaultValue: false },
2122
createdAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW },
2223
updatedAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW },
2324
deletedBy: DataTypes.BIGINT,

src/routes/productTemplates/create.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const schema = {
2626
template: Joi.object().required(),
2727
disabled: Joi.boolean().optional(),
2828
hidden: Joi.boolean().optional(),
29+
isAddOn: Joi.boolean().optional(),
2930
createdAt: Joi.any().strip(),
3031
updatedAt: Joi.any().strip(),
3132
deletedAt: Joi.any().strip(),

src/routes/productTemplates/create.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ describe('CREATE product template', () => {
4242
aliases: ['product key 1', 'product_key_1'],
4343
disabled: true,
4444
hidden: true,
45+
isAddOn: true,
4546
template: {
4647
template1: {
4748
name: 'template 1',

src/routes/productTemplates/list.spec.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ const validateProductTemplates = (count, resJson, expectedTemplates) => {
1515
resJson.should.have.length(count);
1616
resJson.forEach((pt, idx) => {
1717
pt.should.have.all.keys('id', 'name', 'productKey', 'category', 'subCategory', 'icon', 'brief', 'details',
18-
'aliases', 'template', 'disabled', 'hidden', 'createdBy', 'createdAt', 'updatedBy', 'updatedAt');
18+
'aliases', 'template', 'disabled', 'hidden', 'isAddOn', 'createdBy', 'createdAt', 'updatedBy', 'updatedAt');
1919
pt.should.not.have.all.keys('deletedAt', 'deletedBy');
2020
pt.name.should.be.eql(expectedTemplates[idx].name);
2121
pt.productKey.should.be.eql(expectedTemplates[idx].productKey);
@@ -30,6 +30,7 @@ const validateProductTemplates = (count, resJson, expectedTemplates) => {
3030
pt.updatedBy.should.be.eql(expectedTemplates[idx].updatedBy);
3131
pt.disabled.should.be.eql(_.get(expectedTemplates[idx], 'disabled', false));
3232
pt.hidden.should.be.eql(_.get(expectedTemplates[idx], 'hidden', false));
33+
pt.isAddOn.should.be.eql(_.get(expectedTemplates[idx], 'isAddOn', false));
3334
});
3435
};
3536

@@ -52,6 +53,7 @@ describe('LIST product templates', () => {
5253
},
5354
disabled: true,
5455
hidden: true,
56+
isAddOn: true,
5557
template: {
5658
template1: {
5759
name: 'template 1',

src/routes/productTemplates/update.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ const schema = {
2929
template: Joi.object(),
3030
disabled: Joi.boolean().optional(),
3131
hidden: Joi.boolean().optional(),
32+
isAddOn: Joi.boolean().optional(),
3233
createdAt: Joi.any().strip(),
3334
updatedAt: Joi.any().strip(),
3435
deletedAt: Joi.any().strip(),

src/routes/productTemplates/update.spec.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ describe('UPDATE product template', () => {
2222
aliases: ['productTemplate-1', 'productTemplate_1'],
2323
disabled: true,
2424
hidden: true,
25+
isAddOn: true,
2526
template: {
2627
template1: {
2728
name: 'template 1',

swagger.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3703,6 +3703,9 @@ definitions:
37033703
template:
37043704
type: object
37053705
description: the product template template
3706+
isAddOn:
3707+
type: boolean
3708+
description: the flag that shows if the product template is an add on
37063709
ProductTemplateBodyParam:
37073710
title: Product template body param
37083711
type: object

0 commit comments

Comments
 (0)