Skip to content

Commit b3c9c54

Browse files
committed
Add migration for new fields in patient database
Pass table and model names to ModelMetadata constructor.
1 parent be30c1d commit b3c9c54

File tree

4 files changed

+39
-4
lines changed

4 files changed

+39
-4
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
const patient = require('../src/metadata/patient');
2+
const convertToSequelizeField = require('../src/metadata/convertToSequelizeField');
3+
4+
const fields = patient.getFieldHash(convertToSequelizeField);
5+
const newFields = ['treatmentNotes', 'glasgowComaScale'];
6+
const { tableName } = patient;
7+
8+
module.exports = {
9+
up: async (queryInterface, Sequelize) => {
10+
await queryInterface.sequelize.transaction(async (transaction) => {
11+
for (const fieldName of newFields) {
12+
const newField = fields[fieldName];
13+
14+
await queryInterface.addColumn(
15+
tableName,
16+
newField.field,
17+
newField,
18+
{ transaction }
19+
);
20+
}
21+
});
22+
},
23+
24+
down: async (queryInterface) => {
25+
await queryInterface.sequelize.transaction(async (transaction) => {
26+
for (const fieldName of newFields) {
27+
const newField = fields[fieldName];
28+
29+
await queryInterface.removeColumn(tableName, newField.field, { transaction });
30+
}
31+
});
32+
},
33+
};

models/patient.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ module.exports = (sequelize) => {
1919
Patient.init(patient.getFieldHash(convertToSequelizeField), {
2020
sequelize,
2121
timestamps: true,
22-
tableName: 'patient',
23-
modelName: 'Patient',
22+
tableName: patient.tableName,
23+
modelName: patient.modelName,
2424
});
2525
return Patient;
2626
};

src/metadata/ModelMetadata.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ function createParamsList(fields) {
1616
}
1717

1818
class ModelMetadata {
19-
constructor(fields) {
19+
constructor({ modelName, tableName = modelName.toLowerCase(), fields }) {
20+
this.modelName = modelName;
21+
this.tableName = tableName;
2022
this.fields = Object.freeze(fields.map((field) => new FieldMetadata(field)));
2123
this.params = createParamsList(this.fields);
2224
}

src/metadata/patient.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,4 +141,4 @@ const fields = [
141141
},
142142
];
143143

144-
module.exports = new ModelMetadata(fields);
144+
module.exports = new ModelMetadata({ modelName: 'Patient', fields });

0 commit comments

Comments
 (0)