Skip to content

Commit f163803

Browse files
committed
feat(shared): reduce repeated model files and add db indexing
1 parent b857d8e commit f163803

File tree

64 files changed

+2825
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+2825
-0
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const path=require("path");
2+
3+
module.exports={
4+
config:path.resolve("src/config/config.js"),
5+
"models-path":path.resolve("src/models"),
6+
"migrations-path":path.resolve("migrations"),
7+
"seeders-path":path.resolve("seeders")
8+
};
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
2+
> @repo/shared-database@1.0.0 build C:\Users\mindfire intern 1\Patient Appointment and Clinical Intelligence System\packages\shared-database
3+
> tsc
4+
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
'use strict';
2+
3+
module.exports = {
4+
async up(queryInterface, Sequelize) {
5+
await queryInterface.createTable('users', {
6+
id: {
7+
type: Sequelize.UUID,
8+
defaultValue: Sequelize.UUIDV4,
9+
primaryKey: true,
10+
},
11+
full_name: {
12+
type: Sequelize.STRING,
13+
allowNull: false,
14+
},
15+
email: {
16+
type: Sequelize.STRING,
17+
allowNull: false,
18+
unique: true,
19+
},
20+
phone: {
21+
type: Sequelize.STRING,
22+
allowNull: true,
23+
},
24+
gender: {
25+
type: Sequelize.STRING,
26+
allowNull: true,
27+
},
28+
date_of_birth: {
29+
type: Sequelize.DATE,
30+
allowNull: true,
31+
},
32+
passwordHash: {
33+
type: Sequelize.STRING,
34+
allowNull: false,
35+
},
36+
isActive: {
37+
type: Sequelize.BOOLEAN,
38+
defaultValue: true,
39+
},
40+
createdAt: {
41+
allowNull: false,
42+
type: Sequelize.DATE,
43+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
44+
},
45+
updatedAt: {
46+
allowNull: false,
47+
type: Sequelize.DATE,
48+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
49+
},
50+
});
51+
},
52+
53+
async down(queryInterface) {
54+
await queryInterface.dropTable('users');
55+
},
56+
};
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
'use strict';
2+
3+
module.exports = {
4+
async up(queryInterface, Sequelize) {
5+
await queryInterface.createTable('roles', {
6+
id: {
7+
type: Sequelize.UUID,
8+
defaultValue: Sequelize.UUIDV4,
9+
primaryKey: true,
10+
},
11+
name: {
12+
type: Sequelize.STRING,
13+
allowNull: false,
14+
unique: true,
15+
},
16+
is_active: Sequelize.BOOLEAN,
17+
createdAt: {
18+
allowNull: false,
19+
type: Sequelize.DATE,
20+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
21+
},
22+
updatedAt: {
23+
allowNull: false,
24+
type: Sequelize.DATE,
25+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
26+
},
27+
});
28+
},
29+
30+
async down(queryInterface) {
31+
await queryInterface.dropTable('roles');
32+
},
33+
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
'use strict';
2+
3+
module.exports = {
4+
async up(queryInterface, Sequelize) {
5+
await queryInterface.createTable('permissions', {
6+
id: {
7+
type: Sequelize.UUID,
8+
defaultValue: Sequelize.UUIDV4,
9+
primaryKey: true,
10+
},
11+
name: {
12+
type: Sequelize.STRING,
13+
allowNull: false,
14+
unique: true,
15+
},
16+
createdAt: {
17+
allowNull: false,
18+
type: Sequelize.DATE,
19+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
20+
},
21+
updatedAt: {
22+
allowNull: false,
23+
type: Sequelize.DATE,
24+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
25+
},
26+
});
27+
},
28+
29+
async down(queryInterface) {
30+
await queryInterface.dropTable('permissions');
31+
},
32+
};
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
'use strict';
2+
3+
module.exports = {
4+
async up(queryInterface, Sequelize) {
5+
await queryInterface.createTable('user_roles', {
6+
id: {
7+
type: Sequelize.UUID,
8+
defaultValue: Sequelize.UUIDV4,
9+
primaryKey: true,
10+
},
11+
userId: {
12+
type: Sequelize.UUID,
13+
allowNull: false,
14+
references: {
15+
model: 'users',
16+
key: 'id',
17+
},
18+
onDelete: 'CASCADE',
19+
},
20+
roleId: {
21+
type: Sequelize.UUID,
22+
allowNull: false,
23+
references: {
24+
model: 'roles',
25+
key: 'id',
26+
},
27+
onDelete: 'CASCADE',
28+
},
29+
});
30+
},
31+
32+
async down(queryInterface) {
33+
await queryInterface.dropTable('user_roles');
34+
},
35+
};
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
'use strict';
2+
3+
/** @type {import('sequelize-cli').Migration} */
4+
module.exports = {
5+
async up(queryInterface, Sequelize) {
6+
await queryInterface.createTable('role_permissions', {
7+
id: {
8+
type: Sequelize.UUID,
9+
defaultValue: Sequelize.UUIDV4,
10+
primaryKey: true,
11+
},
12+
roleId: {
13+
type: Sequelize.UUID,
14+
allowNull: false,
15+
references: {
16+
model: 'roles',
17+
key: 'id',
18+
},
19+
onDelete: 'CASCADE',
20+
},
21+
permissionId: {
22+
type: Sequelize.UUID,
23+
allowNull: false,
24+
references: {
25+
model: 'permissions',
26+
key: 'id',
27+
},
28+
onDelete: 'CASCADE',
29+
},
30+
createdAt: {
31+
allowNull: false,
32+
type: Sequelize.DATE,
33+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
34+
},
35+
});
36+
},
37+
38+
async down(queryInterface, Sequelize) {
39+
await queryInterface.dropTable('role_permissions');
40+
},
41+
};
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
'use strict';
2+
3+
/** @type {import('sequelize-cli').Migration} */
4+
module.exports = {
5+
async up(queryInterface, Sequelize) {
6+
await queryInterface.createTable('doctors', {
7+
id: {
8+
type: Sequelize.UUID,
9+
defaultValue: Sequelize.UUIDV4,
10+
primaryKey: true,
11+
},
12+
userId: {
13+
type: Sequelize.UUID,
14+
allowNull: false,
15+
unique: true,
16+
references: {
17+
model: 'users',
18+
key: 'id',
19+
},
20+
onDelete: 'CASCADE',
21+
},
22+
specialization: {
23+
type: Sequelize.STRING,
24+
allowNull: false,
25+
},
26+
licence_no: {
27+
type: Sequelize.STRING,
28+
allowNull: false,
29+
unique: true,
30+
},
31+
consultation_fee: {
32+
type: Sequelize.INTEGER,
33+
allowNull: false,
34+
},
35+
is_active: {
36+
type: Sequelize.BOOLEAN,
37+
defaultValue: true,
38+
},
39+
createdAt: {
40+
allowNull: false,
41+
type: Sequelize.DATE,
42+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
43+
},
44+
updatedAt: {
45+
allowNull: false,
46+
type: Sequelize.DATE,
47+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
48+
},
49+
});
50+
},
51+
52+
async down(queryInterface, Sequelize) {
53+
/**
54+
* Add reverting commands here.
55+
*
56+
* Example:
57+
* await queryInterface.dropTable('users');
58+
*/
59+
},
60+
};
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
'use strict';
2+
3+
module.exports = {
4+
async up(queryInterface, Sequelize) {
5+
await queryInterface.createTable('patients', {
6+
id: {
7+
type: Sequelize.UUID,
8+
defaultValue: Sequelize.UUIDV4,
9+
primaryKey: true,
10+
},
11+
userId: {
12+
type: Sequelize.UUID,
13+
allowNull: false,
14+
references: {
15+
model: 'users',
16+
key: 'id',
17+
},
18+
onDelete: 'CASCADE',
19+
},
20+
address: {
21+
type: Sequelize.STRING,
22+
allowNull: true,
23+
},
24+
emergencyContact: {
25+
type: Sequelize.STRING,
26+
allowNull: false,
27+
},
28+
isActive: {
29+
type: Sequelize.BOOLEAN,
30+
defaultValue: true,
31+
},
32+
createdAt: {
33+
allowNull: false,
34+
type: Sequelize.DATE,
35+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
36+
},
37+
updatedAt: {
38+
allowNull: false,
39+
type: Sequelize.DATE,
40+
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
41+
},
42+
});
43+
},
44+
45+
async down(queryInterface) {
46+
await queryInterface.dropTable('patients');
47+
},
48+
};
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
'use strict';
2+
3+
const { toDefaultValue } = require('sequelize/lib/utils');
4+
5+
module.exports = {
6+
async up(queryInterface, Sequelize) {
7+
await queryInterface.addColumn('role_permissions', 'updatedAt', {
8+
type: Sequelize.DATE,
9+
//allowNull:false,
10+
toDefaultValue: Sequelize.NOW,
11+
});
12+
},
13+
14+
async down(queryInterface, Sequelize) {
15+
await queryInterface.removeColumn('role_permissions', 'updatedAt');
16+
},
17+
};

0 commit comments

Comments
 (0)