Calculate door lock charges

This commit is contained in:
Senad Uka
2019-06-14 17:41:09 +02:00
parent 8e4eb0cf1f
commit 393e9b8aec
37 changed files with 1736 additions and 66 deletions

View File

@@ -0,0 +1,21 @@
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.sequelize.transaction((t) => {
return Promise.all([
queryInterface.renameColumn('bookingReservations', 'resource', 'resourceId'),
queryInterface.renameColumn('doorLockIncidents', 'resource', 'resourceId'),
]);
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.sequelize.transaction((t) => {
return Promise.all([
queryInterface.renameColumn('doorLockIncidents', 'resourceId', 'resource'),
queryInterface.renameColumn('bookingReservations', 'resourceId', 'resource'),
]);
});
}
};

View File

@@ -0,0 +1,27 @@
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.sequelize.transaction((t) => {
return Promise.all([
queryInterface.addColumn('bookingReservations', 'timezone', {
type: Sequelize.TEXT,
after: 'end'
}),
queryInterface.addColumn('bookingReservations', 'canceled', {
type: Sequelize.BOOLEAN,
after: 'timezone'
})
]);
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.sequelize.transaction((t) => {
return Promise.all([
queryInterface.removeColumn('bookingReservations', 'canceled'),
queryInterface.removeColumn('bookingReservations', 'timezone')
]);
});
}
};

View File

@@ -0,0 +1,41 @@
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('officeResourceMappings', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
officeSlug: {
allowNull: false,
type: Sequelize.TEXT,
},
officeId: {
allowNull: false,
type: Sequelize.TEXT,
},
resourceSlug: {
allowNull: false,
type: Sequelize.TEXT,
},
resourceId: {
allowNull: false,
type: Sequelize.TEXT,
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('officeResourceMappings');
}
};

View File

@@ -0,0 +1,14 @@
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.addColumn('doorLockEvents', 'resourceId', {
type: Sequelize.TEXT,
after: 'memberId',
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.removeColumn('doorLockEvents', 'resourceId');
}
};

View File

@@ -0,0 +1,14 @@
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.addColumn('bookingReservations', 'officeId', {
type: Sequelize.TEXT,
after: 'memberId',
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.removeColumn('bookingReservations', 'officeId');
}
};

View File

@@ -0,0 +1,11 @@
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.renameTable('doorLockIncidents', 'unscheduledIncidents');
},
down: (queryInterface, Sequelize) => {
return queryInterface.renameTable('unscheduledIncidents', 'doorLockIncidents');
}
};

View File

@@ -0,0 +1,35 @@
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.sequelize.transaction((t) => {
return Promise.all([
queryInterface.removeColumn('unscheduledIncidents', 'chargeType'),
queryInterface.addColumn('unscheduledIncidents', 'chargePrice', {
type: Sequelize.FLOAT,
after: 'doorLockEventTimestamp'
}),
queryInterface.addColumn('unscheduledIncidents', 'timeIntervalsToCharge', {
type: Sequelize.INTEGER,
after: 'chargePrice'
}),
queryInterface.renameColumn('unscheduledIncidents', 'chargeFee', 'totalChargeFee')
]);
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.sequelize.transaction((t) => {
return Promise.all([
queryInterface.renameColumn('unscheduledIncidents', 'totalChargeFee', 'chargeFee'),
queryInterface.removeColumn('unscheduledIncidents', 'timeIntervalsToCharge'),
queryInterface.removeColumn('unscheduledIncidents', 'chargePrice'),
queryInterface.addColumn('unscheduledIncidents', 'chargeType', {
type: Sequelize.ENUM,
values: ['unlocked', 'unscheduled'],
after: 'doorLockEventTimestamp'
}),
]);
});
}
};

View File

@@ -0,0 +1,35 @@
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('unlockedIncidents', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
reservationId: Sequelize.TEXT,
memberId: Sequelize.TEXT,
resourceId: Sequelize.TEXT,
bookingStart: Sequelize.DATE,
bookingEnd: Sequelize.DATE,
incidentLevel: {
type: Sequelize.ENUM,
values: ['UNLOCKED_0', 'UNLOCKED_1', 'UNLOCKED_2', 'UNLOCKED_3', 'UNLOCKED_4', 'UNLOCKED_5']
},
incidentLevelPrice: Sequelize.FLOAT,
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('doorLockIncidents');
}
};