From fb72927dfa306fa4de2ba10400aefbef8efe3762 Mon Sep 17 00:00:00 2001 From: Mansur Date: Thu, 17 Nov 2022 06:02:23 +0100 Subject: [PATCH 1/6] Update models to use UUIDs --- src/api/db/migrations/20221030092330-create-user.js | 4 ++-- src/api/db/migrations/20221030101534-create-notice.js | 4 ++-- .../migrations/20221030101627-create-assignment-score.js | 4 ++-- src/api/db/migrations/20221030101644-create-assignment.js | 4 ++-- src/api/db/migrations/20221030101723-create-message.js | 6 +++--- src/api/db/migrations/20221030101744-create-role.js | 4 ++-- .../db/migrations/20221030101838-create-class-teacher.js | 4 ++-- src/api/db/migrations/20221030101917-create-class.js | 4 ++-- .../db/migrations/20221030102005-create-class-student.js | 4 ++-- src/api/db/models/classstudent.js | 1 - src/api/db/models/classteacher.js | 7 ++++--- src/api/db/models/message.js | 5 +++++ src/api/db/models/notice.js | 5 +++++ 13 files changed, 33 insertions(+), 23 deletions(-) diff --git a/src/api/db/migrations/20221030092330-create-user.js b/src/api/db/migrations/20221030092330-create-user.js index b3b68d1..939e5c8 100644 --- a/src/api/db/migrations/20221030092330-create-user.js +++ b/src/api/db/migrations/20221030092330-create-user.js @@ -5,9 +5,9 @@ module.exports = { await queryInterface.createTable('Users', { id: { allowNull: false, - autoIncrement: true, primaryKey: true, - type: Sequelize.INTEGER + type: Sequelize.UUID, + defaultValue: Sequelize.UUIDV4 }, first_name: { type: Sequelize.STRING diff --git a/src/api/db/migrations/20221030101534-create-notice.js b/src/api/db/migrations/20221030101534-create-notice.js index 0546275..ce6610e 100644 --- a/src/api/db/migrations/20221030101534-create-notice.js +++ b/src/api/db/migrations/20221030101534-create-notice.js @@ -5,9 +5,9 @@ module.exports = { await queryInterface.createTable('Notices', { id: { allowNull: false, - autoIncrement: true, primaryKey: true, - type: Sequelize.INTEGER + type: Sequelize.UUID, + defaultValue: Sequelize.UUIDV4 }, notice: { type: Sequelize.STRING diff --git a/src/api/db/migrations/20221030101627-create-assignment-score.js b/src/api/db/migrations/20221030101627-create-assignment-score.js index 0bd0b09..4bfd995 100644 --- a/src/api/db/migrations/20221030101627-create-assignment-score.js +++ b/src/api/db/migrations/20221030101627-create-assignment-score.js @@ -5,9 +5,9 @@ module.exports = { await queryInterface.createTable('AssignmentScores', { id: { allowNull: false, - autoIncrement: true, primaryKey: true, - type: Sequelize.INTEGER + type: Sequelize.UUID, + defaultValue: Sequelize.UUIDV4 }, assignmentId: { type:Sequelize.STRING, diff --git a/src/api/db/migrations/20221030101644-create-assignment.js b/src/api/db/migrations/20221030101644-create-assignment.js index 2eb1c55..2a45364 100644 --- a/src/api/db/migrations/20221030101644-create-assignment.js +++ b/src/api/db/migrations/20221030101644-create-assignment.js @@ -5,9 +5,9 @@ module.exports = { await queryInterface.createTable('Assignments', { id: { allowNull: false, - autoIncrement: true, primaryKey: true, - type: Sequelize.INTEGER + type: Sequelize.UUID, + defaultValue: Sequelize.UUIDV4 }, assignment: { type: Sequelize.STRING diff --git a/src/api/db/migrations/20221030101723-create-message.js b/src/api/db/migrations/20221030101723-create-message.js index aa8ccb1..ec34991 100644 --- a/src/api/db/migrations/20221030101723-create-message.js +++ b/src/api/db/migrations/20221030101723-create-message.js @@ -5,10 +5,10 @@ module.exports = { await queryInterface.createTable('Messages', { id: { allowNull: false, - autoIncrement: true, primaryKey: true, - type: Sequelize.INTEGER - }, + type: Sequelize.UUID, + defaultValue: Sequelize.UUIDV4 + }, message: { type: Sequelize.STRING }, diff --git a/src/api/db/migrations/20221030101744-create-role.js b/src/api/db/migrations/20221030101744-create-role.js index 54efd47..59ecb5f 100644 --- a/src/api/db/migrations/20221030101744-create-role.js +++ b/src/api/db/migrations/20221030101744-create-role.js @@ -5,9 +5,9 @@ module.exports = { await queryInterface.createTable('Roles', { id: { allowNull: false, - autoIncrement: true, primaryKey: true, - type: Sequelize.INTEGER + type: Sequelize.UUID, + defaultValue: Sequelize.UUIDV4 }, role: { type: Sequelize.STRING diff --git a/src/api/db/migrations/20221030101838-create-class-teacher.js b/src/api/db/migrations/20221030101838-create-class-teacher.js index a7efd88..067931a 100644 --- a/src/api/db/migrations/20221030101838-create-class-teacher.js +++ b/src/api/db/migrations/20221030101838-create-class-teacher.js @@ -5,9 +5,9 @@ module.exports = { await queryInterface.createTable('ClassTeachers', { id: { allowNull: false, - autoIncrement: true, primaryKey: true, - type: Sequelize.INTEGER + type: Sequelize.UUID, + defaultValue: Sequelize.UUIDV4 }, classId: { type: Sequelize.STRING diff --git a/src/api/db/migrations/20221030101917-create-class.js b/src/api/db/migrations/20221030101917-create-class.js index 539d29d..cafacfe 100644 --- a/src/api/db/migrations/20221030101917-create-class.js +++ b/src/api/db/migrations/20221030101917-create-class.js @@ -5,9 +5,9 @@ module.exports = { await queryInterface.createTable('Classes', { id: { allowNull: false, - autoIncrement: true, primaryKey: true, - type: Sequelize.INTEGER + type: Sequelize.UUID, + defaultValue: Sequelize.UUIDV4 }, className: { type: Sequelize.STRING diff --git a/src/api/db/migrations/20221030102005-create-class-student.js b/src/api/db/migrations/20221030102005-create-class-student.js index a63a08b..6a56a4b 100644 --- a/src/api/db/migrations/20221030102005-create-class-student.js +++ b/src/api/db/migrations/20221030102005-create-class-student.js @@ -5,9 +5,9 @@ module.exports = { await queryInterface.createTable('ClassStudents', { id: { allowNull: false, - autoIncrement: true, primaryKey: true, - type: Sequelize.INTEGER + type: Sequelize.UUID, + defaultValue: Sequelize.UUIDV4 }, classId: { type: Sequelize.STRING diff --git a/src/api/db/models/classstudent.js b/src/api/db/models/classstudent.js index 9ba2cd3..d7685e7 100644 --- a/src/api/db/models/classstudent.js +++ b/src/api/db/models/classstudent.js @@ -20,7 +20,6 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, allowNull:false, - unique:true, primaryKey: true }, studentId:{ diff --git a/src/api/db/models/classteacher.js b/src/api/db/models/classteacher.js index 49d0dae..5f883ca 100644 --- a/src/api/db/models/classteacher.js +++ b/src/api/db/models/classteacher.js @@ -15,10 +15,11 @@ module.exports = (sequelize, DataTypes) => { } } ClassTeacher.init({ - id:{ + id: { + allowNull: false, + primaryKey: true, type: DataTypes.UUID, - allowNull:false, - primaryKey: true + defaultValue: DataTypes.UUIDV4 }, teacherId:{ type: DataTypes.UUID, diff --git a/src/api/db/models/message.js b/src/api/db/models/message.js index 95df839..68cb08c 100644 --- a/src/api/db/models/message.js +++ b/src/api/db/models/message.js @@ -16,6 +16,11 @@ module.exports = (sequelize, DataTypes) => { } } Message.init({ + id: { + allowNull: false, + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4 + }, message: { type:DataTypes.STRING, allowNull:false, diff --git a/src/api/db/models/notice.js b/src/api/db/models/notice.js index f91bab5..74b57d8 100644 --- a/src/api/db/models/notice.js +++ b/src/api/db/models/notice.js @@ -16,6 +16,11 @@ module.exports = (sequelize, DataTypes) => { } } Notice.init({ + id: { + allowNull: false, + type: DataTypes.UUID, + defaultValue: DataTypes.UUIDV4 + }, notice: { type:DataTypes.STRING, allowNull:false, From 4323f648294748625d31373db85d4d7c22046552 Mon Sep 17 00:00:00 2001 From: Mansur Date: Thu, 17 Nov 2022 17:04:42 +0100 Subject: [PATCH 2/6] create seed files --- src/api/db/config/config.example.js | 23 +++++++++++ src/api/db/config/config.js | 12 +++--- src/api/db/models/user.js | 6 +-- src/api/db/seeders/20221117052621-User.js | 39 +++++++++++++++++++ src/api/db/seeders/20221117052728-Role.js | 25 ++++++++++++ src/api/db/seeders/20221117052755-Notice.js | 25 ++++++++++++ src/api/db/seeders/20221117052807-Message.js | 25 ++++++++++++ .../db/seeders/20221117052826-ClassTeacher.js | 25 ++++++++++++ .../db/seeders/20221117052849-ClassStudent.js | 25 ++++++++++++ src/api/db/seeders/20221117052907-Class.js | 25 ++++++++++++ .../db/seeders/20221117052927-Assignment.js | 25 ++++++++++++ .../seeders/20221117052946-AssignmentScore.js | 25 ++++++++++++ 12 files changed, 271 insertions(+), 9 deletions(-) create mode 100644 src/api/db/config/config.example.js create mode 100644 src/api/db/seeders/20221117052621-User.js create mode 100644 src/api/db/seeders/20221117052728-Role.js create mode 100644 src/api/db/seeders/20221117052755-Notice.js create mode 100644 src/api/db/seeders/20221117052807-Message.js create mode 100644 src/api/db/seeders/20221117052826-ClassTeacher.js create mode 100644 src/api/db/seeders/20221117052849-ClassStudent.js create mode 100644 src/api/db/seeders/20221117052907-Class.js create mode 100644 src/api/db/seeders/20221117052927-Assignment.js create mode 100644 src/api/db/seeders/20221117052946-AssignmentScore.js diff --git a/src/api/db/config/config.example.js b/src/api/db/config/config.example.js new file mode 100644 index 0000000..f92dc29 --- /dev/null +++ b/src/api/db/config/config.example.js @@ -0,0 +1,23 @@ +module.exports = { + "development": { + "username": "root", + "password": null, + "database": "database_development", + "host": "127.0.0.1", + "dialect": "mysql" + }, + "test": { + "username": "root", + "password": null, + "database": "database_test", + "host": "127.0.0.1", + "dialect": "mysql" + }, + "production": { + "username": "root", + "password": null, + "database": "database_production", + "host": "127.0.0.1", + "dialect": "mysql" + } +} diff --git a/src/api/db/config/config.js b/src/api/db/config/config.js index f92dc29..409797b 100644 --- a/src/api/db/config/config.js +++ b/src/api/db/config/config.js @@ -1,14 +1,14 @@ module.exports = { "development": { - "username": "root", - "password": null, - "database": "database_development", + "username": "postgres", + "password": "123456789", + "database": "ClassManager", "host": "127.0.0.1", - "dialect": "mysql" + "dialect": "postgres" }, "test": { - "username": "root", - "password": null, + "username": "postgres", + "password": "123456789", "database": "database_test", "host": "127.0.0.1", "dialect": "mysql" diff --git a/src/api/db/models/user.js b/src/api/db/models/user.js index 841dbb0..33b3428 100644 --- a/src/api/db/models/user.js +++ b/src/api/db/models/user.js @@ -25,13 +25,13 @@ module.exports = (sequelize, DataTypes) => { defaultValue: DataTypes.UUIDV4, primaryKey: true }, - first_name: { + firstName: { allowNull: false, type:DataTypes.STRING }, - last_name: { + lastName: { allowNull: false, type:DataTypes.STRING }, - second_name: DataTypes.STRING, + secondName: DataTypes.STRING, email: { type:DataTypes.STRING, unique:true, diff --git a/src/api/db/seeders/20221117052621-User.js b/src/api/db/seeders/20221117052621-User.js new file mode 100644 index 0000000..503f715 --- /dev/null +++ b/src/api/db/seeders/20221117052621-User.js @@ -0,0 +1,39 @@ +'use strict'; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up (queryInterface, Sequelize) { + /** + * Add seed commands here. + * + * Example: + * await queryInterface.bulkInsert('People', [{ + * name: 'John Doe', + * isBetaMember: false + * }], {}); + */ + await queryInterface.bulkInsert('People', [{ + name: 'John Doe', + isBetaMember: false, + firstName: 'John', + lastName: 'Doe', + secondName: 'Nok', + email: 'example@example.com', + createdAt: new Date(), + updatedAt: new Date() + }], {}); + + [{ + + }] + }, + + async down (queryInterface, Sequelize) { + /** + * Add commands to revert seed here. + * + * Example: + * await queryInterface.bulkDelete('People', null, {}); + */ + } +}; diff --git a/src/api/db/seeders/20221117052728-Role.js b/src/api/db/seeders/20221117052728-Role.js new file mode 100644 index 0000000..48a68a0 --- /dev/null +++ b/src/api/db/seeders/20221117052728-Role.js @@ -0,0 +1,25 @@ +'use strict'; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up (queryInterface, Sequelize) { + /** + * Add seed commands here. + * + * Example: + * await queryInterface.bulkInsert('People', [{ + * name: 'John Doe', + * isBetaMember: false + * }], {}); + */ + }, + + async down (queryInterface, Sequelize) { + /** + * Add commands to revert seed here. + * + * Example: + * await queryInterface.bulkDelete('People', null, {}); + */ + } +}; diff --git a/src/api/db/seeders/20221117052755-Notice.js b/src/api/db/seeders/20221117052755-Notice.js new file mode 100644 index 0000000..48a68a0 --- /dev/null +++ b/src/api/db/seeders/20221117052755-Notice.js @@ -0,0 +1,25 @@ +'use strict'; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up (queryInterface, Sequelize) { + /** + * Add seed commands here. + * + * Example: + * await queryInterface.bulkInsert('People', [{ + * name: 'John Doe', + * isBetaMember: false + * }], {}); + */ + }, + + async down (queryInterface, Sequelize) { + /** + * Add commands to revert seed here. + * + * Example: + * await queryInterface.bulkDelete('People', null, {}); + */ + } +}; diff --git a/src/api/db/seeders/20221117052807-Message.js b/src/api/db/seeders/20221117052807-Message.js new file mode 100644 index 0000000..48a68a0 --- /dev/null +++ b/src/api/db/seeders/20221117052807-Message.js @@ -0,0 +1,25 @@ +'use strict'; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up (queryInterface, Sequelize) { + /** + * Add seed commands here. + * + * Example: + * await queryInterface.bulkInsert('People', [{ + * name: 'John Doe', + * isBetaMember: false + * }], {}); + */ + }, + + async down (queryInterface, Sequelize) { + /** + * Add commands to revert seed here. + * + * Example: + * await queryInterface.bulkDelete('People', null, {}); + */ + } +}; diff --git a/src/api/db/seeders/20221117052826-ClassTeacher.js b/src/api/db/seeders/20221117052826-ClassTeacher.js new file mode 100644 index 0000000..48a68a0 --- /dev/null +++ b/src/api/db/seeders/20221117052826-ClassTeacher.js @@ -0,0 +1,25 @@ +'use strict'; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up (queryInterface, Sequelize) { + /** + * Add seed commands here. + * + * Example: + * await queryInterface.bulkInsert('People', [{ + * name: 'John Doe', + * isBetaMember: false + * }], {}); + */ + }, + + async down (queryInterface, Sequelize) { + /** + * Add commands to revert seed here. + * + * Example: + * await queryInterface.bulkDelete('People', null, {}); + */ + } +}; diff --git a/src/api/db/seeders/20221117052849-ClassStudent.js b/src/api/db/seeders/20221117052849-ClassStudent.js new file mode 100644 index 0000000..48a68a0 --- /dev/null +++ b/src/api/db/seeders/20221117052849-ClassStudent.js @@ -0,0 +1,25 @@ +'use strict'; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up (queryInterface, Sequelize) { + /** + * Add seed commands here. + * + * Example: + * await queryInterface.bulkInsert('People', [{ + * name: 'John Doe', + * isBetaMember: false + * }], {}); + */ + }, + + async down (queryInterface, Sequelize) { + /** + * Add commands to revert seed here. + * + * Example: + * await queryInterface.bulkDelete('People', null, {}); + */ + } +}; diff --git a/src/api/db/seeders/20221117052907-Class.js b/src/api/db/seeders/20221117052907-Class.js new file mode 100644 index 0000000..48a68a0 --- /dev/null +++ b/src/api/db/seeders/20221117052907-Class.js @@ -0,0 +1,25 @@ +'use strict'; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up (queryInterface, Sequelize) { + /** + * Add seed commands here. + * + * Example: + * await queryInterface.bulkInsert('People', [{ + * name: 'John Doe', + * isBetaMember: false + * }], {}); + */ + }, + + async down (queryInterface, Sequelize) { + /** + * Add commands to revert seed here. + * + * Example: + * await queryInterface.bulkDelete('People', null, {}); + */ + } +}; diff --git a/src/api/db/seeders/20221117052927-Assignment.js b/src/api/db/seeders/20221117052927-Assignment.js new file mode 100644 index 0000000..48a68a0 --- /dev/null +++ b/src/api/db/seeders/20221117052927-Assignment.js @@ -0,0 +1,25 @@ +'use strict'; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up (queryInterface, Sequelize) { + /** + * Add seed commands here. + * + * Example: + * await queryInterface.bulkInsert('People', [{ + * name: 'John Doe', + * isBetaMember: false + * }], {}); + */ + }, + + async down (queryInterface, Sequelize) { + /** + * Add commands to revert seed here. + * + * Example: + * await queryInterface.bulkDelete('People', null, {}); + */ + } +}; diff --git a/src/api/db/seeders/20221117052946-AssignmentScore.js b/src/api/db/seeders/20221117052946-AssignmentScore.js new file mode 100644 index 0000000..48a68a0 --- /dev/null +++ b/src/api/db/seeders/20221117052946-AssignmentScore.js @@ -0,0 +1,25 @@ +'use strict'; + +/** @type {import('sequelize-cli').Migration} */ +module.exports = { + async up (queryInterface, Sequelize) { + /** + * Add seed commands here. + * + * Example: + * await queryInterface.bulkInsert('People', [{ + * name: 'John Doe', + * isBetaMember: false + * }], {}); + */ + }, + + async down (queryInterface, Sequelize) { + /** + * Add commands to revert seed here. + * + * Example: + * await queryInterface.bulkDelete('People', null, {}); + */ + } +}; From 4c63ed7e752770186899e53ac0d0dd3e6bc6beed Mon Sep 17 00:00:00 2001 From: Mansur Date: Thu, 17 Nov 2022 17:11:52 +0100 Subject: [PATCH 3/6] create seed files --- .gitignore | 3 +++ src/api/db/config/config.example.js | 31 ++++++++++++++-------- src/api/db/config/config.js | 41 ++++++++++++++++++----------- 3 files changed, 48 insertions(+), 27 deletions(-) diff --git a/.gitignore b/.gitignore index a8edfee..daf1ae6 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,9 @@ pids *.seed *.pid.lock +# My DB config +src/api/db/config/config.js + # Directory for instrumented libs generated by jscoverage/JSCover lib-cov diff --git a/src/api/db/config/config.example.js b/src/api/db/config/config.example.js index f92dc29..b8cd2a1 100644 --- a/src/api/db/config/config.example.js +++ b/src/api/db/config/config.example.js @@ -1,23 +1,32 @@ + module.exports = { - "development": { + development: { + database: 'development_database', + username: 'root', + password: null, + host: '127.0.0.1', + dialect: 'postgres' + }, + local: { "username": "root", "password": null, - "database": "database_development", - "host": "127.0.0.1", - "dialect": "mysql" + "database": "local_database", + "host": "", + "dialect": "postgres" }, - "test": { + test: { "username": "root", "password": null, - "database": "database_test", + "database": "test_database", "host": "127.0.0.1", - "dialect": "mysql" + "dialect": "postgres" }, - "production": { + production: { "username": "root", "password": null, - "database": "database_production", + "database": "production_database", "host": "127.0.0.1", - "dialect": "mysql" + "dialect": "postgres" } -} +}; +//export default config; diff --git a/src/api/db/config/config.js b/src/api/db/config/config.js index 409797b..e826292 100644 --- a/src/api/db/config/config.js +++ b/src/api/db/config/config.js @@ -1,23 +1,32 @@ + module.exports = { - "development": { - "username": "postgres", - "password": "123456789", - "database": "ClassManager", - "host": "127.0.0.1", + development: { + database: 'classManager', + username: 'postgres', + password: "123456789", + host: '127.0.0.1', + dialect: 'postgres' + }, + local: { + "username": "tgsowrsnnwphjg", + "password": "da09381ea24589af12153a9aca04de1d9283245434520ba084ccc6b55065520d", + "database": "d3a0e6i6blrn6p", + "host": "https://ec2-3-227-68-43.compute-1.amazonaws.com", "dialect": "postgres" }, - "test": { - "username": "postgres", - "password": "123456789", - "database": "database_test", - "host": "127.0.0.1", - "dialect": "mysql" - }, - "production": { + test: { "username": "root", "password": null, - "database": "database_production", + "database": "classManager_test", "host": "127.0.0.1", - "dialect": "mysql" + "dialect": "postgres" + }, + production: { + "username": "tgsowrsnnwphjg", + "password": "da09381ea24589af12153a9aca04de1d9283245434520ba084ccc6b55065520d", + "database": "d3a0e6i6blrn6p", + "host": "ec2-3-227-68-43.compute-1.amazonaws.com", + "dialect": "postgres" } -} +}; +//export default config; From 5aaadf4370167a28fda7a3b186846de5b2e1d7fa Mon Sep 17 00:00:00 2001 From: Ibrahim Nok Mansur Date: Mon, 28 Nov 2022 09:00:15 +0100 Subject: [PATCH 4/6] create seeders to run the seeders make sure you run the migrations: sequelize db:migrate then run the seeders: sequelize db:seed --- package-lock.json | 23 ++++++++++++----- package.json | 18 ++++++------- .../migrations/20221030092330-create-user.js | 19 +++++++++++--- .../20221030101534-create-notice.js | 10 ++++++++ .../20221030101627-create-assignment-score.js | 9 ++++--- .../20221030101644-create-assignment.js | 4 +++ .../20221030101838-create-class-teacher.js | 5 ++++ .../migrations/20221030101917-create-class.js | 4 +++ .../20221030102005-create-class-student.js | 5 ++++ src/api/db/seeders/20221117052621-User.js | 25 +++++++++++++------ src/api/db/seeders/20221117052728-Role.js | 19 ++++++++++++++ src/api/db/seeders/20221117052755-Notice.js | 15 +++++++++++ src/api/db/seeders/20221117052807-Message.js | 17 +++++++++++++ .../db/seeders/20221117052826-ClassTeacher.js | 14 +++++++++++ .../db/seeders/20221117052849-ClassStudent.js | 14 +++++++++++ src/api/db/seeders/20221117052907-Class.js | 14 +++++++++++ .../db/seeders/20221117052927-Assignment.js | 16 ++++++++++++ .../seeders/20221117052946-AssignmentScore.js | 16 ++++++++++++ src/api/services/MessageService.js | 4 +-- 19 files changed, 219 insertions(+), 32 deletions(-) diff --git a/package-lock.json b/package-lock.json index b964439..5e98c35 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,7 @@ "body-parser": "^1.20.1", "dotenv": "^16.0.3", "express": "^4.18.2", + "faker": "^5.5.3", "pg": "^8.8.0", "pg-hstore": "^2.3.4", "sequelize": "^6.25.3" @@ -4177,6 +4178,11 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "node_modules/faker": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", + "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==" + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -5433,9 +5439,9 @@ } }, "node_modules/loader-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", - "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { "big.js": "^5.2.2", @@ -11501,6 +11507,11 @@ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, + "faker": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", + "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==" + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -12405,9 +12416,9 @@ "peer": true }, "loader-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.3.tgz", - "integrity": "sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "requires": { "big.js": "^5.2.2", diff --git a/package.json b/package.json index 65bcdf8..f77fb10 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,8 @@ { "name": "class-manager", - "version": "1.0.0", - "description": "", - "main": "./src/server.js", - + "version": "1.0.0", + "description": "", + "main": "./src/server.js", "scripts": { "start": "nodemon --exec babel-node ./src/server.js", "watch:dev": "nodemon ./src/server.js", @@ -21,12 +20,12 @@ "body-parser": "^1.20.1", "dotenv": "^16.0.3", "express": "^4.18.2", + "faker": "^5.5.3", "pg": "^8.8.0", "pg-hstore": "^2.3.4", "sequelize": "^6.25.3" }, "devDependencies": { - "nodemon": "^2.0.20", "@babel/cli": "^7.19.3", "@babel/core": "^7.19.6", "@babel/node": "^7.19.1", @@ -39,12 +38,13 @@ "chai-http": "^4.3.0", "eslint": "^8.26.0", "eslint-config-airbnb-base": "^15.0.0", - "eslint-plugin-import": "^2.26.0", "eslint-config-prettier": "^8.5.0", - "eslint-plugin-prettier": "^4.2.1", "eslint-plugin": "^1.0.1", - "prettier": "^2.7.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-prettier": "^4.2.1", "mocha": "^10.1.0", - "nyc": "^15.1.0" + "nodemon": "^2.0.20", + "nyc": "^15.1.0", + "prettier": "^2.7.1" } } diff --git a/src/api/db/migrations/20221030092330-create-user.js b/src/api/db/migrations/20221030092330-create-user.js index 939e5c8..822be96 100644 --- a/src/api/db/migrations/20221030092330-create-user.js +++ b/src/api/db/migrations/20221030092330-create-user.js @@ -6,12 +6,25 @@ module.exports = { id: { allowNull: false, primaryKey: true, - type: Sequelize.UUID, - defaultValue: Sequelize.UUIDV4 + type: Sequelize.UUID }, - first_name: { + firstName: { type: Sequelize.STRING }, + lastName: { + allowNull: false, + type:Sequelize.STRING + }, + secondName: Sequelize.STRING, + email: { + type:Sequelize.STRING, + unique:true, + allowNull:false + }, + password: { + type:Sequelize.STRING, + allowNull:false + }, createdAt: { allowNull: false, type: Sequelize.DATE diff --git a/src/api/db/migrations/20221030101534-create-notice.js b/src/api/db/migrations/20221030101534-create-notice.js index ce6610e..7aa66b7 100644 --- a/src/api/db/migrations/20221030101534-create-notice.js +++ b/src/api/db/migrations/20221030101534-create-notice.js @@ -12,6 +12,16 @@ module.exports = { notice: { type: Sequelize.STRING }, + classId: { + type: Sequelize.UUID, + allowNull:false, + foreignKey:true + }, + teacherId: { + type: Sequelize.UUID, + allowNull:false, + foreignKey:true + }, createdAt: { allowNull: false, type: Sequelize.DATE diff --git a/src/api/db/migrations/20221030101627-create-assignment-score.js b/src/api/db/migrations/20221030101627-create-assignment-score.js index 4bfd995..1b4c113 100644 --- a/src/api/db/migrations/20221030101627-create-assignment-score.js +++ b/src/api/db/migrations/20221030101627-create-assignment-score.js @@ -17,11 +17,12 @@ module.exports = { type:Sequelize.STRING, allowNull:false }, - studentId: { - type:Sequelize.STRING, - allowNull:false + teacherId: { + type: Sequelize.UUID, + allowNull:false, + foreignKey:true }, - teacher: { + studentId: { type:Sequelize.STRING, allowNull:false }, diff --git a/src/api/db/migrations/20221030101644-create-assignment.js b/src/api/db/migrations/20221030101644-create-assignment.js index 2a45364..a05221e 100644 --- a/src/api/db/migrations/20221030101644-create-assignment.js +++ b/src/api/db/migrations/20221030101644-create-assignment.js @@ -16,6 +16,10 @@ module.exports = { type: Sequelize.STRING, allowNull:false }, + teacherId:{ + type: Sequelize.UUID, + allowNull:false + }, studentId:{ type: Sequelize.STRING, allowNull:false diff --git a/src/api/db/migrations/20221030101838-create-class-teacher.js b/src/api/db/migrations/20221030101838-create-class-teacher.js index 067931a..871de47 100644 --- a/src/api/db/migrations/20221030101838-create-class-teacher.js +++ b/src/api/db/migrations/20221030101838-create-class-teacher.js @@ -12,6 +12,11 @@ module.exports = { classId: { type: Sequelize.STRING }, + teacherId:{ + type: Sequelize.UUID, + allowNull:false, + foreignKey:true + }, createdAt: { allowNull: false, type: Sequelize.DATE diff --git a/src/api/db/migrations/20221030101917-create-class.js b/src/api/db/migrations/20221030101917-create-class.js index cafacfe..7938bab 100644 --- a/src/api/db/migrations/20221030101917-create-class.js +++ b/src/api/db/migrations/20221030101917-create-class.js @@ -12,6 +12,10 @@ module.exports = { className: { type: Sequelize.STRING }, + year: { + type:Sequelize.STRING, + allowNull:false + }, createdAt: { allowNull: false, type: Sequelize.DATE diff --git a/src/api/db/migrations/20221030102005-create-class-student.js b/src/api/db/migrations/20221030102005-create-class-student.js index 6a56a4b..786cf0e 100644 --- a/src/api/db/migrations/20221030102005-create-class-student.js +++ b/src/api/db/migrations/20221030102005-create-class-student.js @@ -12,6 +12,11 @@ module.exports = { classId: { type: Sequelize.STRING }, + studentId:{ + type: Sequelize.UUID, + allowNull:false, + foreignKey:true + }, createdAt: { allowNull: false, type: Sequelize.DATE diff --git a/src/api/db/seeders/20221117052621-User.js b/src/api/db/seeders/20221117052621-User.js index 503f715..5deb3f1 100644 --- a/src/api/db/seeders/20221117052621-User.js +++ b/src/api/db/seeders/20221117052621-User.js @@ -1,6 +1,7 @@ 'use strict'; /** @type {import('sequelize-cli').Migration} */ +//import bcrypt from 'bcrypt' module.exports = { async up (queryInterface, Sequelize) { /** @@ -12,20 +13,27 @@ module.exports = { * isBetaMember: false * }], {}); */ - await queryInterface.bulkInsert('People', [{ - name: 'John Doe', - isBetaMember: false, + await queryInterface.bulkInsert('Users', [{ + id: "c7a9122e-6694-11ed-9022-0242ac120005", firstName: 'John', lastName: 'Doe', secondName: 'Nok', - email: 'example@example.com', + email: 'example@example2.com', + password: 'nok', createdAt: new Date(), updatedAt: new Date() - }], {}); + }, + { + id: "c7a9122e-6694-11ed-9022-0242ac120006", + firstName: 'John', + lastName: 'Doe', + secondName: 'Nok', + email: 'example@example3.com', + password: 'nok', + createdAt: new Date(), + updatedAt: new Date() + }], {}); - [{ - - }] }, async down (queryInterface, Sequelize) { @@ -35,5 +43,6 @@ module.exports = { * Example: * await queryInterface.bulkDelete('People', null, {}); */ + await queryInterface.bulkDelete('Users', null, {}); } }; diff --git a/src/api/db/seeders/20221117052728-Role.js b/src/api/db/seeders/20221117052728-Role.js index 48a68a0..f6ccb3e 100644 --- a/src/api/db/seeders/20221117052728-Role.js +++ b/src/api/db/seeders/20221117052728-Role.js @@ -12,6 +12,24 @@ module.exports = { * isBetaMember: false * }], {}); */ + await queryInterface.bulkInsert('Roles', [{ + id: "c7a9122e-6694-11ed-9022-0242ac120001", + role: 'Admin', + createdAt: new Date(), + updatedAt: new Date() + }, + { + id: "c7a9122e-6694-11ed-9022-0242ac120002", + role: 'Student', + createdAt: new Date(), + updatedAt: new Date() + }, + { + id: "c7a9122e-6694-11ed-9022-0242ac120003", + role: 'Teacher', + createdAt: new Date(), + updatedAt: new Date() + }], {}); }, async down (queryInterface, Sequelize) { @@ -21,5 +39,6 @@ module.exports = { * Example: * await queryInterface.bulkDelete('People', null, {}); */ + await queryInterface.bulkDelete('Roles', null, {}); } }; diff --git a/src/api/db/seeders/20221117052755-Notice.js b/src/api/db/seeders/20221117052755-Notice.js index 48a68a0..c8cca3f 100644 --- a/src/api/db/seeders/20221117052755-Notice.js +++ b/src/api/db/seeders/20221117052755-Notice.js @@ -1,6 +1,19 @@ 'use strict'; /** @type {import('sequelize-cli').Migration} */ +const faker = require('faker') + +faker.seed(123); +const notices = [...Array(100)].map((notice) => ( + { + id: faker.datatype.uuid(), + notice: faker.lorem.sentences(3), + classId: faker.datatype.uuid(), + teacherId: faker.datatype.uuid(), + createdAt: new Date(), + updatedAt: new Date() + } +)) module.exports = { async up (queryInterface, Sequelize) { /** @@ -12,6 +25,7 @@ module.exports = { * isBetaMember: false * }], {}); */ + return await queryInterface.bulkInsert('Notices', notices, {}); }, async down (queryInterface, Sequelize) { @@ -21,5 +35,6 @@ module.exports = { * Example: * await queryInterface.bulkDelete('People', null, {}); */ + return await queryInterface.bulkDelete('People', null, {}); } }; diff --git a/src/api/db/seeders/20221117052807-Message.js b/src/api/db/seeders/20221117052807-Message.js index 48a68a0..ac54f37 100644 --- a/src/api/db/seeders/20221117052807-Message.js +++ b/src/api/db/seeders/20221117052807-Message.js @@ -1,7 +1,21 @@ 'use strict'; /** @type {import('sequelize-cli').Migration} */ +const faker = require('faker') + +faker.seed(123); +const messages = [...Array(100)].map((message) => ( + { + id: faker.datatype.uuid(), + message: faker.lorem.sentence(), + senderId: faker.datatype.uuid(), + receiverId: faker.datatype.uuid(), + createdAt: new Date(), + updatedAt: new Date() + } +)) module.exports = { + async up (queryInterface, Sequelize) { /** * Add seed commands here. @@ -12,6 +26,8 @@ module.exports = { * isBetaMember: false * }], {}); */ + return await queryInterface.bulkInsert('Messages', messages, {}); + }, async down (queryInterface, Sequelize) { @@ -21,5 +37,6 @@ module.exports = { * Example: * await queryInterface.bulkDelete('People', null, {}); */ + return await queryInterface.bulkDelete('Messages', null, {}); } }; diff --git a/src/api/db/seeders/20221117052826-ClassTeacher.js b/src/api/db/seeders/20221117052826-ClassTeacher.js index 48a68a0..fcea8d3 100644 --- a/src/api/db/seeders/20221117052826-ClassTeacher.js +++ b/src/api/db/seeders/20221117052826-ClassTeacher.js @@ -1,6 +1,18 @@ 'use strict'; /** @type {import('sequelize-cli').Migration} */ +const faker = require('faker') + +faker.seed(123); +const classTeachers = [...Array(100)].map((classTeacher) => ( + { + id: faker.datatype.uuid(), + teacherId: faker.datatype.uuid(), + classId: faker.datatype.uuid(), + createdAt: new Date(), + updatedAt: new Date() + } +)) module.exports = { async up (queryInterface, Sequelize) { /** @@ -12,6 +24,7 @@ module.exports = { * isBetaMember: false * }], {}); */ + return await queryInterface.bulkInsert('ClassTeachers', classTeachers, {}); }, async down (queryInterface, Sequelize) { @@ -21,5 +34,6 @@ module.exports = { * Example: * await queryInterface.bulkDelete('People', null, {}); */ + return await queryInterface.bulkDelete('ClassTeachers', null, {}); } }; diff --git a/src/api/db/seeders/20221117052849-ClassStudent.js b/src/api/db/seeders/20221117052849-ClassStudent.js index 48a68a0..1439f3c 100644 --- a/src/api/db/seeders/20221117052849-ClassStudent.js +++ b/src/api/db/seeders/20221117052849-ClassStudent.js @@ -1,6 +1,18 @@ 'use strict'; /** @type {import('sequelize-cli').Migration} */ +const faker = require('faker') + +faker.seed(123); +const classStudents = [...Array(100)].map((classStudent) => ( + { + id: faker.datatype.uuid(), + studentId: faker.datatype.uuid(), + classId: faker.datatype.uuid(), + createdAt: new Date(), + updatedAt: new Date() + } +)) module.exports = { async up (queryInterface, Sequelize) { /** @@ -12,6 +24,7 @@ module.exports = { * isBetaMember: false * }], {}); */ + return await queryInterface.bulkInsert('ClassStudents', classStudents, {}); }, async down (queryInterface, Sequelize) { @@ -21,5 +34,6 @@ module.exports = { * Example: * await queryInterface.bulkDelete('People', null, {}); */ + return await queryInterface.bulkDelete('People', null, {}); } }; diff --git a/src/api/db/seeders/20221117052907-Class.js b/src/api/db/seeders/20221117052907-Class.js index 48a68a0..fe8598c 100644 --- a/src/api/db/seeders/20221117052907-Class.js +++ b/src/api/db/seeders/20221117052907-Class.js @@ -1,6 +1,18 @@ 'use strict'; /** @type {import('sequelize-cli').Migration} */ +const faker = require('faker') + +faker.seed(123); +const classes = [...Array(100)].map((classs) => ( + { + id: faker.datatype.uuid(), + className: faker.datatype.uuid(), + year: faker.date.between(), + createdAt: new Date(), + updatedAt: new Date() + } +)) module.exports = { async up (queryInterface, Sequelize) { /** @@ -12,6 +24,7 @@ module.exports = { * isBetaMember: false * }], {}); */ + return await queryInterface.bulkInsert('Classes', classes, {}); }, async down (queryInterface, Sequelize) { @@ -21,5 +34,6 @@ module.exports = { * Example: * await queryInterface.bulkDelete('People', null, {}); */ + return await queryInterface.bulkDelete('Classes', null, {}); } }; diff --git a/src/api/db/seeders/20221117052927-Assignment.js b/src/api/db/seeders/20221117052927-Assignment.js index 48a68a0..ea6ef48 100644 --- a/src/api/db/seeders/20221117052927-Assignment.js +++ b/src/api/db/seeders/20221117052927-Assignment.js @@ -1,6 +1,20 @@ 'use strict'; /** @type {import('sequelize-cli').Migration} */ +const faker = require('faker') +faker.seed(123); + +const assignments = [...Array(100)].map((assignment) => ( + { + id: faker.datatype.uuid(), + teacherId: faker.datatype.uuid(), + classId: faker.datatype.uuid(), + studentId: faker.datatype.uuid(), + assignment: faker.system.filePath('pdf'), + createdAt: new Date(), + updatedAt: new Date() + } +)) module.exports = { async up (queryInterface, Sequelize) { /** @@ -12,6 +26,7 @@ module.exports = { * isBetaMember: false * }], {}); */ + return await queryInterface.bulkInsert('Assignments', assignments, {}); }, async down (queryInterface, Sequelize) { @@ -21,5 +36,6 @@ module.exports = { * Example: * await queryInterface.bulkDelete('People', null, {}); */ + await queryInterface.bulkDelete('Assignments', null, {}); } }; diff --git a/src/api/db/seeders/20221117052946-AssignmentScore.js b/src/api/db/seeders/20221117052946-AssignmentScore.js index 48a68a0..c8dce40 100644 --- a/src/api/db/seeders/20221117052946-AssignmentScore.js +++ b/src/api/db/seeders/20221117052946-AssignmentScore.js @@ -1,6 +1,20 @@ 'use strict'; /** @type {import('sequelize-cli').Migration} */ +const faker = require('faker') +faker.seed(123); + +const assignmentScores = [...Array(100)].map((assignmentScore) => ( + { + id: faker.datatype.uuid(), + teacherId: faker.datatype.uuid(), + assignmentId: faker.datatype.uuid(), + studentId: faker.datatype.uuid(), + score: faker.datatype.number(100), + createdAt: new Date(), + updatedAt: new Date() + } +)) module.exports = { async up (queryInterface, Sequelize) { /** @@ -12,6 +26,7 @@ module.exports = { * isBetaMember: false * }], {}); */ + await queryInterface.bulkInsert('AssignmentScores', assignmentScores, {}); }, async down (queryInterface, Sequelize) { @@ -21,5 +36,6 @@ module.exports = { * Example: * await queryInterface.bulkDelete('People', null, {}); */ + await queryInterface.bulkDelete('AssignmentScores', null, {}); } }; diff --git a/src/api/services/MessageService.js b/src/api/services/MessageService.js index b897b40..b029a35 100644 --- a/src/api/services/MessageService.js +++ b/src/api/services/MessageService.js @@ -3,7 +3,7 @@ import database from '../db/models/index.js'; class MessageService { static async getAllMessages() { try { - const result = await database.Message.findAll(); + const result = await database.Message.findAll(); return result; } catch (error) { throw error; @@ -12,7 +12,7 @@ class MessageService { static async addMessage(newMessage) { try { - const result = await database.Message.create(newMessage); + const result = await database.Message.create(newMessage); return result; } catch (error) { throw error; From d8db09a5ff760d80a3e15d097211316cec1e6aa2 Mon Sep 17 00:00:00 2001 From: Ibrahim Nok Mansur Date: Wed, 30 Nov 2022 17:49:57 +0100 Subject: [PATCH 5/6] update class student --- src/db/migrations/20221030102005-create-class-student.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/db/migrations/20221030102005-create-class-student.js b/src/db/migrations/20221030102005-create-class-student.js index a335e2e..fa01c55 100644 --- a/src/db/migrations/20221030102005-create-class-student.js +++ b/src/db/migrations/20221030102005-create-class-student.js @@ -1,7 +1,4 @@ 'use strict'; - -const { DataTypes } = require('sequelize'); - /** @type {import('sequelize-cli').Migration} */ module.exports = { async up(queryInterface, Sequelize) { From 593b1f59c9b9036dfd38040951058781b6afbe3f Mon Sep 17 00:00:00 2001 From: Ibrahim Nok Mansur Date: Thu, 1 Dec 2022 11:12:38 +0100 Subject: [PATCH 6/6] seed database feat(seed):seed database tables create seeders to populate all database tables -to run the seeders 'run npm migrate' to populate all the tables --- .env.example | 7 +++- config.example.js | 7 ---- package.json | 3 ++ src/api/db/config/config.example.js | 32 ------------------- .../migrations/20221030092330-create-user.js | 2 +- .../20221030102005-create-class-student.js | 8 ++++- src/db/models/classstudent.js | 7 +++- src/db/models/user.js | 6 ++-- .../db/seeders/20221117052621-User.js | 14 ++++---- .../db/seeders/20221117052728-Role.js | 0 .../db/seeders/20221117052755-Notice.js | 0 .../db/seeders/20221117052807-Message.js | 0 .../db/seeders/20221117052826-ClassTeacher.js | 0 .../db/seeders/20221117052849-ClassStudent.js | 0 .../db/seeders/20221117052907-Class.js | 0 .../db/seeders/20221117052927-Assignment.js | 0 .../seeders/20221117052946-AssignmentScore.js | 0 17 files changed, 34 insertions(+), 52 deletions(-) delete mode 100644 config.example.js delete mode 100644 src/api/db/config/config.example.js rename src/{api => }/db/seeders/20221117052621-User.js (78%) rename src/{api => }/db/seeders/20221117052728-Role.js (100%) rename src/{api => }/db/seeders/20221117052755-Notice.js (100%) rename src/{api => }/db/seeders/20221117052807-Message.js (100%) rename src/{api => }/db/seeders/20221117052826-ClassTeacher.js (100%) rename src/{api => }/db/seeders/20221117052849-ClassStudent.js (100%) rename src/{api => }/db/seeders/20221117052907-Class.js (100%) rename src/{api => }/db/seeders/20221117052927-Assignment.js (100%) rename src/{api => }/db/seeders/20221117052946-AssignmentScore.js (100%) diff --git a/.env.example b/.env.example index 0b33b40..548c802 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,6 @@ -PORT = \ No newline at end of file +DBNAME=database +DBUSER=postgres +DBPASSWORD=password +PORT=5432 +DBHOST=127.0.0.1 +SECRETKEY=any_secret \ No newline at end of file diff --git a/config.example.js b/config.example.js deleted file mode 100644 index 8d2620e..0000000 --- a/config.example.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - "username": "username", - "password": "password", - "database": "databaseName", - "host": "127.0.0.1", - "dialect": "postgres" -} \ No newline at end of file diff --git a/package.json b/package.json index f77fb10..f4b2dfe 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,9 @@ "scripts": { "start": "nodemon --exec babel-node ./src/server.js", "watch:dev": "nodemon ./src/server.js", + "migrate": "sequelize db:migrate", + "migrate:undo": "sequelize db:migrate:undo:all", + "seed": "sequelize db:seed:all", "build": "rm -rf ./build && babel -d ./build ./src -s", "lint": "eslint --ext .js .", "lint:check": "eslint .", diff --git a/src/api/db/config/config.example.js b/src/api/db/config/config.example.js deleted file mode 100644 index b8cd2a1..0000000 --- a/src/api/db/config/config.example.js +++ /dev/null @@ -1,32 +0,0 @@ - -module.exports = { - development: { - database: 'development_database', - username: 'root', - password: null, - host: '127.0.0.1', - dialect: 'postgres' - }, - local: { - "username": "root", - "password": null, - "database": "local_database", - "host": "", - "dialect": "postgres" - }, - test: { - "username": "root", - "password": null, - "database": "test_database", - "host": "127.0.0.1", - "dialect": "postgres" - }, - production: { - "username": "root", - "password": null, - "database": "production_database", - "host": "127.0.0.1", - "dialect": "postgres" - } -}; -//export default config; diff --git a/src/db/migrations/20221030092330-create-user.js b/src/db/migrations/20221030092330-create-user.js index fd115d6..fc40bcc 100644 --- a/src/db/migrations/20221030092330-create-user.js +++ b/src/db/migrations/20221030092330-create-user.js @@ -8,7 +8,7 @@ module.exports = { primaryKey: true, type: Sequelize.UUID }, - firstName: { + first_name: { type: Sequelize.STRING }, last_name: { diff --git a/src/db/migrations/20221030102005-create-class-student.js b/src/db/migrations/20221030102005-create-class-student.js index fa01c55..bea5287 100644 --- a/src/db/migrations/20221030102005-create-class-student.js +++ b/src/db/migrations/20221030102005-create-class-student.js @@ -6,13 +6,19 @@ module.exports = { id: { allowNull: false, primaryKey: true, - type: Sequelize.INTEGER + type: Sequelize.UUID, + defaultValue: Sequelize.UUIDV4 }, studentId:{ type: Sequelize.UUID, allowNull:false, foreignKey:true }, + classId:{ + type: Sequelize .UUID, + allowNull:false, + foreignKey:true + }, createdAt: { allowNull: false, type: Sequelize.DATE diff --git a/src/db/models/classstudent.js b/src/db/models/classstudent.js index a044b93..c4afc74 100644 --- a/src/db/models/classstudent.js +++ b/src/db/models/classstudent.js @@ -26,7 +26,12 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.UUID, allowNull:false, foreignKey:true - } + }, + classId:{ + type: DataTypes.UUID, + allowNull:false, + foreignKey:true + }, }, { sequelize, modelName: 'ClassStudent', diff --git a/src/db/models/user.js b/src/db/models/user.js index 4b7f43b..529fd28 100644 --- a/src/db/models/user.js +++ b/src/db/models/user.js @@ -24,13 +24,13 @@ module.exports = (sequelize, DataTypes) => { defaultValue: DataTypes.UUIDV4, primaryKey: true }, - firstName: { + first_name: { allowNull: false, type:DataTypes.STRING }, - lastName: { + last_name: { allowNull: false, type:DataTypes.STRING }, - secondName: DataTypes.STRING, + second_name: DataTypes.STRING, email: { type:DataTypes.STRING, unique:true, diff --git a/src/api/db/seeders/20221117052621-User.js b/src/db/seeders/20221117052621-User.js similarity index 78% rename from src/api/db/seeders/20221117052621-User.js rename to src/db/seeders/20221117052621-User.js index 5deb3f1..2f72668 100644 --- a/src/api/db/seeders/20221117052621-User.js +++ b/src/db/seeders/20221117052621-User.js @@ -15,20 +15,22 @@ module.exports = { */ await queryInterface.bulkInsert('Users', [{ id: "c7a9122e-6694-11ed-9022-0242ac120005", - firstName: 'John', - lastName: 'Doe', - secondName: 'Nok', + first_name: 'John', + last_name: 'Doe', + second_name: 'Nok', email: 'example@example2.com', + roleId:'c7a9122e-6694-11ed-9022-0242ac120001', password: 'nok', createdAt: new Date(), updatedAt: new Date() }, { id: "c7a9122e-6694-11ed-9022-0242ac120006", - firstName: 'John', - lastName: 'Doe', - secondName: 'Nok', + first_name: 'John', + last_name: 'Doe', + second_name: 'Nok', email: 'example@example3.com', + roleId: 'c7a9122e-6694-11ed-9022-0242ac120003', password: 'nok', createdAt: new Date(), updatedAt: new Date() diff --git a/src/api/db/seeders/20221117052728-Role.js b/src/db/seeders/20221117052728-Role.js similarity index 100% rename from src/api/db/seeders/20221117052728-Role.js rename to src/db/seeders/20221117052728-Role.js diff --git a/src/api/db/seeders/20221117052755-Notice.js b/src/db/seeders/20221117052755-Notice.js similarity index 100% rename from src/api/db/seeders/20221117052755-Notice.js rename to src/db/seeders/20221117052755-Notice.js diff --git a/src/api/db/seeders/20221117052807-Message.js b/src/db/seeders/20221117052807-Message.js similarity index 100% rename from src/api/db/seeders/20221117052807-Message.js rename to src/db/seeders/20221117052807-Message.js diff --git a/src/api/db/seeders/20221117052826-ClassTeacher.js b/src/db/seeders/20221117052826-ClassTeacher.js similarity index 100% rename from src/api/db/seeders/20221117052826-ClassTeacher.js rename to src/db/seeders/20221117052826-ClassTeacher.js diff --git a/src/api/db/seeders/20221117052849-ClassStudent.js b/src/db/seeders/20221117052849-ClassStudent.js similarity index 100% rename from src/api/db/seeders/20221117052849-ClassStudent.js rename to src/db/seeders/20221117052849-ClassStudent.js diff --git a/src/api/db/seeders/20221117052907-Class.js b/src/db/seeders/20221117052907-Class.js similarity index 100% rename from src/api/db/seeders/20221117052907-Class.js rename to src/db/seeders/20221117052907-Class.js diff --git a/src/api/db/seeders/20221117052927-Assignment.js b/src/db/seeders/20221117052927-Assignment.js similarity index 100% rename from src/api/db/seeders/20221117052927-Assignment.js rename to src/db/seeders/20221117052927-Assignment.js diff --git a/src/api/db/seeders/20221117052946-AssignmentScore.js b/src/db/seeders/20221117052946-AssignmentScore.js similarity index 100% rename from src/api/db/seeders/20221117052946-AssignmentScore.js rename to src/db/seeders/20221117052946-AssignmentScore.js