diff --git a/.env.example b/.env.example index 0b33b40..e68b39b 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,5 @@ -PORT = \ No newline at end of file +database=classManager +username=postgres +password=123456789 +host=127.0.0.1 +dialect=postgres \ No newline at end of file diff --git a/package.json b/package.json index 139d680..65bcdf8 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "", "main": "./src/server.js", - "type": "module", + "scripts": { "start": "nodemon --exec babel-node ./src/server.js", "watch:dev": "nodemon ./src/server.js", diff --git a/src/api/controllers/MessageController.js b/src/api/controllers/MessageController.js new file mode 100644 index 0000000..79d9bd1 --- /dev/null +++ b/src/api/controllers/MessageController.js @@ -0,0 +1,106 @@ +import MessageService from '../services/MessageService.js'; +import Util from '../utils/Utils.js'; + +const util = new Util(); + +class MessageController { + static async getAllMessages(req, res) { + try { + const allMessages = await MessageService.getAllMessages(); + if (allMessages.length > 0) { + util.setSuccess(200, 'Messages retrieved', allMessages); + } else { + util.setSuccess(200, 'No Message found'); + } + return util.send(res); + } catch (error) { + util.setError(400, error); + return util.send(res); + } + } + + static async addMessage(req, res) { + if (!req.body.message || !req.body.senderId || !req.body.receiverId) { + util.setError(400, 'Please provide complete details'); + return util.send(res); + } + const newMessage = req.body; + try { + const createdMessage = await MessageService.addMessage(newMessage); + util.setSuccess(201, 'Message Added!', createdMessage); + return util.send(res); + } catch (error) { + util.setError(400, error.message); + return util.send(res); + } + } + + static async updatedMessage(req, res) { + const alteredMessage = req.body; + const { id } = req.params; + if (!Number(id)) { + util.setError(400, 'Please input a valid numeric value'); + return util.send(res); + } + try { + const updateMessage = await MessageService.updateMessage(id, alteredMessage); + if (!updateMessage) { + util.setError(404, `Cannot find Message with the id: ${id}`); + } else { + util.setSuccess(200, 'Message updated', updateMessage); + } + return util.send(res); + } catch (error) { + util.setError(404, error); + return util.send(res); + } + } + + static async getAMessage(req, res) { + const { id } = req.params; + + if (!Number(id)) { + util.setError(400, 'Please input a valid numeric value'); + return util.send(res); + } + + try { + const theMessage = await MessageService.getAMessage(id); + + if (!theMessage) { + util.setError(404, `Cannot find Message with the id ${id}`); + } else { + util.setSuccess(200, 'Found Message', theMessage); + } + return util.send(res); + } catch (error) { + util.setError(404, error); + return util.send(res); + } + } + + static async deleteMessage(req, res) { + const { id } = req.params; + + if (!Number(id)) { + util.setError(400, 'Please provide a numeric value'); + return util.send(res); + } + + try { + const MessageToDelete = await MessageService.deleteMessage(id); + + if (MessageToDelete) { + util.setSuccess(200, 'Message deleted'); + } else { + util.setError(404, `Message with the id ${id} cannot be found`); + } + return util.send(res); + } catch (error) { + util.setError(400, error); + return util.send(res); + } + } +} + +export default MessageController; \ No newline at end of file diff --git a/src/api/controllers/TeacherController.js b/src/api/controllers/TeacherController.js new file mode 100644 index 0000000..8a16af9 --- /dev/null +++ b/src/api/controllers/TeacherController.js @@ -0,0 +1,124 @@ +import { response } from 'express'; +import TeacherService from '../services/TeacherServices.js' +import Util from '../utils/Utils.js'; + +const util = new Util(); + +class teacherController { + static async home(req, res) { + res.send(`

Welcome to the teacher's Route

`) + } + + static async getAllTeachers(req, res) { + try { + const allTeacher = await TeacherService.getAllTeachers(); + if (allTeacher.length > 0) { + util.setSuccess(200, 'teachers retrieved', allTeacher); + } else { + util.setFound(400, 'No teahcer found in the database'); + } + return util.send(res); + } catch (error) { + util.setError(400, error); + return util.send(res); + } + } + + static async addTeacher(req, res) { + if (!req.body.teacherId || !req.body.classId ) { + util.setError(400, 'Please provide complete details of the teacher'); + return util.send(res); + } + const newTeacher = req.body; + try { + const createdTeacher = await TeacherService.addTeacher(newTeacher); + util.setSuccess(201, 'Teacher Added Successfully!', createdTeacher); + return util.send(res); + } catch (error) { + util.setError(400, error.teacher); + return util.send(res); + } + } + + static async updatedTeacher(req, res) { + const alteredTeacher = req.body; + const { id } = req.params; + if (!util.checkIfValidUUID(id)) { + util.setError(400, 'Please input a valid Id'); + return util.send(res); + } + try { + const updateTeacher = await TeacherService.updateTeacher(id, alteredTeacher); + if (!updateTeacher) { + util.setError(404, `Cannot find a teacher with the id: ${id}`); + } else { + util.setSuccess(200, 'Teacher updated', updateTeacher); + } + return util.send(res); + } catch (error) { + util.setError(404, error); + return util.send(res); + } + } + + static async getATeacher(req, res) { + const { id } = req.params; + + if (!util.checkIfValidUUID(id)) { + util.setError(400, 'Please input a valid numeric value'); + return util.send(res); + } + + try { + const theTeacher = await TeacherService.getATeacher(id); + + if (!theTeacher) { + util.setError(404, `Cannot find a teacher with the id ${id}`); + } else { + util.setSuccess(200, 'Found Teacher', theTeacher); + } + return util.send(res); + } catch (error) { + util.setError(404, error); + return util.send(res); + } + } + + + + + // static getATeacher = async(req, res)=> { + // try{ + // const teacherById = await TeacherService.findById(req.params.id) + // res.json(teacherById) + // }catch(err){ + // res.send('Error' + err) + // } + + // } + + static async deleteTeacher(req, res) { + const { id } = req.params; + + if (!util.checkIfValidUUID(id)) { + util.setError(400, 'Please provide a numeric value'); + return util.send(res); + } + + try { + const teacherToDelete = await TeacherService.deleteTeacher(id); + + if (teacherToDelete) { + util.setSuccess(200, `Teacher with ${id} deleted`); + } else { + util.setError(404, `Teacher with the id ${id} cannot be found`); + } + return util.send(res); + } catch (error) { + util.setError(400, error); + return util.send(res); + } + } +} + +export default teacherController; \ No newline at end of file diff --git a/src/api/db/config/config.js b/src/api/db/config/config.js index f92dc29..e299efc 100644 --- a/src/api/db/config/config.js +++ b/src/api/db/config/config.js @@ -1,23 +1,32 @@ +require("dotenv").config module.exports = { - "development": { - "username": "root", - "password": null, - "database": "database_development", - "host": "127.0.0.1", - "dialect": "mysql" + development: { + database: "classManager", + username: "postgres", + password: "15263", + host: process.env.host, + dialect: 'postgres' + }, + local: { + "username": "tgsowrsnnwphjg", + "password": "da09381ea24589af12153a9aca04de1d9283245434520ba084ccc6b55065520d", + "database": "d3a0e6i6blrn6p", + "host": "https://ec2-3-227-68-43.compute-1.amazonaws.com", + "dialect": "postgres" }, - "test": { + test: { "username": "root", "password": null, - "database": "database_test", + "database": "classManager_test", "host": "127.0.0.1", - "dialect": "mysql" + "dialect": "postgres" }, - "production": { - "username": "root", - "password": null, - "database": "database_production", - "host": "127.0.0.1", - "dialect": "mysql" + production: { + "username": "tgsowrsnnwphjg", + "password": "da09381ea24589af12153a9aca04de1d9283245434520ba084ccc6b55065520d", + "database": "d3a0e6i6blrn6p", + "host": "ec2-3-227-68-43.compute-1.amazonaws.com", + "dialect": "postgres" } -} +}; +//export default config; diff --git a/src/api/db/migrations/20221030101723-create-message.js b/src/api/db/migrations/20221030101723-create-message.js index b9f6d27..aa8ccb1 100644 --- a/src/api/db/migrations/20221030101723-create-message.js +++ b/src/api/db/migrations/20221030101723-create-message.js @@ -12,6 +12,16 @@ module.exports = { message: { type: Sequelize.STRING }, + senderId:{ + type:Sequelize.UUID, + allowNull:false, + foreignKey:true + }, + receiverId:{ + type:Sequelize.UUID, + allowNull:false, + foreignKey:true + }, createdAt: { allowNull: false, type: Sequelize.DATE diff --git a/src/api/db/migrations/20221030101838-create-class-teacher.js b/src/api/db/migrations/20221030101838-create-class-teacher.js index a7efd88..30de4c7 100644 --- a/src/api/db/migrations/20221030101838-create-class-teacher.js +++ b/src/api/db/migrations/20221030101838-create-class-teacher.js @@ -5,12 +5,19 @@ module.exports = { await queryInterface.createTable('ClassTeachers', { id: { allowNull: false, - autoIncrement: true, + defaultValue:Sequelize.UUIDV4, primaryKey: true, - type: Sequelize.INTEGER + type: Sequelize.UUID }, classId: { - type: Sequelize.STRING + type: Sequelize.UUID, + allowNull:false, + foreignKey:true + }, + teacherId:{ + type: Sequelize.UUID, + allowNull:false, + foreignKey:true }, createdAt: { allowNull: false, diff --git a/src/api/db/models/assignment.js b/src/api/db/models/assignment.js index ed997fa..0c12c0b 100644 --- a/src/api/db/models/assignment.js +++ b/src/api/db/models/assignment.js @@ -11,7 +11,7 @@ module.exports = (sequelize, DataTypes) => { */ static associate(models) { // define association here - Assignment.belongsTo(models.User, {foreignKey: 'teacherId', as: 'teacher'}); + // Assignment.belongsTo(models.User, {foreignKey: 'teacherId', as: 'teacher'}); Assignment.belongsTo(models.User, {foreignKey: 'studentId', as: 'student'}); Assignment.belongsTo(models.Class, {foreignKey: 'classId', as: 'class'}); } @@ -19,7 +19,8 @@ module.exports = (sequelize, DataTypes) => { Assignment.init({ id:{ type: DataTypes.UUID, - defaultValue: DataTypes.UUIDV4 + defaultValue: DataTypes.UUIDV4, + primaryKey: true }, assignment:{ type: DataTypes.STRING, @@ -27,15 +28,18 @@ module.exports = (sequelize, DataTypes) => { }, classId:{ type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true }, teacherId:{ type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true }, studentId:{ type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true } }, { sequelize, diff --git a/src/api/db/models/assignmentscore.js b/src/api/db/models/assignmentscore.js index be142c0..b7d4f4f 100644 --- a/src/api/db/models/assignmentscore.js +++ b/src/api/db/models/assignmentscore.js @@ -12,18 +12,20 @@ module.exports = (sequelize, DataTypes) => { static associate(models) { // define association here AssignmentScore.belongsTo(models.Assignment, {foreignKey:'assignmentId', as: 'assignment'}); - AssignmentScore.belongsTo(models.User, {foreignKey: 'studentId', as: 'student'}); + // AssignmentScore.belongsTo(models.User, {foreignKey: 'studentId', as: 'student'}); AssignmentScore.belongsTo(models.User, {foreignKey: 'teacherId', as: 'teacher'}); } } AssignmentScore.init({ id:{ type: DataTypes.UUID, - defaultValue: DataTypes.UUIDV4 + defaultValue: DataTypes.UUIDV4, + primaryKey: true }, assignmentId: { type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true }, score: { type:DataTypes.STRING, @@ -31,11 +33,13 @@ module.exports = (sequelize, DataTypes) => { }, studentId: { type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true }, teacherId: { type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true } }, { sequelize, diff --git a/src/api/db/models/class.js b/src/api/db/models/class.js index 1b83082..8cc2e45 100644 --- a/src/api/db/models/class.js +++ b/src/api/db/models/class.js @@ -11,7 +11,7 @@ module.exports = (sequelize, DataTypes) => { */ static associate(models) { // define association here - Class.hasMany(models.ClassStudent, {as: 'student'}); + // Class.hasMany(models.ClassStudent, {as: 'student'}); Class.hasMany(models.User, {as: 'teacher'}); } @@ -19,7 +19,8 @@ module.exports = (sequelize, DataTypes) => { Class.init({ id:{ type: DataTypes.UUID, - defaultValue: DataTypes.UUIDV4 + defaultValue: DataTypes.UUIDV4, + primaryKey: true }, className: { type:DataTypes.STRING, diff --git a/src/api/db/models/classstudent.js b/src/api/db/models/classstudent.js index f5df2a1..9ba2cd3 100644 --- a/src/api/db/models/classstudent.js +++ b/src/api/db/models/classstudent.js @@ -11,7 +11,8 @@ module.exports = (sequelize, DataTypes) => { */ static associate(models) { // define association here - Class.belongsTo(models.Class, {foreignKey: 'classId', as: 'class'}); + ClassStudent.belongsTo(models.Class, {foreignKey: 'classId', as: 'class'}); + ClassStudent.belongsTo(models.Class, {foreignKey: 'studentId', as: 'student'}); } } ClassStudent.init({ @@ -19,15 +20,18 @@ module.exports = (sequelize, DataTypes) => { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, allowNull:false, - unique:true + unique:true, + primaryKey: true }, studentId:{ type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true }, classId: { type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true } }, { sequelize, diff --git a/src/api/db/models/classteacher.js b/src/api/db/models/classteacher.js index c2fe1e0..2ff4161 100644 --- a/src/api/db/models/classteacher.js +++ b/src/api/db/models/classteacher.js @@ -10,22 +10,26 @@ module.exports = (sequelize, DataTypes) => { * The `models/index` file will call this method automatically. */ static associate(models) { - Class.belongsTo(models.Class, {foreignKey: 'classId', as: 'class'}); - Class.belongsTo(models.User, {foreignKey: 'teacherId', as: 'teacher'}); + ClassTeacher.belongsTo(models.Class, {foreignKey: 'classId', as: 'class'}); + ClassTeacher.belongsTo(models.User, {foreignKey: 'teacherId', as: 'teacher'}); } } ClassTeacher.init({ id:{ type: DataTypes.UUID, - allowNull:false + defaultValue:DataTypes.UUIDV4, + allowNull:false, + primaryKey: true }, teacherId:{ type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true }, classId: { type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true } }, { sequelize, diff --git a/src/api/db/models/index.js b/src/api/db/models/index.js index dd6c895..c73b52c 100644 --- a/src/api/db/models/index.js +++ b/src/api/db/models/index.js @@ -1,7 +1,7 @@ import fs from 'fs'; import path from 'path'; import Sequelize from 'sequelize'; -import configJson from '../config/config'; +import configJson from '../config/config.js'; const basename = path.basename(__filename); let env = process.env.NODE_ENV ? process.env.NODE_ENV : 'development'; diff --git a/src/api/db/models/message.js b/src/api/db/models/message.js index 44636b3..95df839 100644 --- a/src/api/db/models/message.js +++ b/src/api/db/models/message.js @@ -11,22 +11,25 @@ module.exports = (sequelize, DataTypes) => { */ static associate(models) { // define association here - Class.belongsTo(models.User, {foreignKey: 'sender', as: 'sender'}); - Class.belongsTo(models.User, {foreignKey: 'receiver', as: 'receiver'}); + Message.belongsTo(models.User, {foreignKey: 'senderId', as: 'sender'}); + Message.belongsTo(models.User, {foreignKey: 'receiverId', as: 'receiver'}); } } Message.init({ message: { type:DataTypes.STRING, - allowNull:false + allowNull:false, + primaryKey: true }, - sender:{ + senderId:{ type:DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true }, - receiver:{ + receiverId:{ type:DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true } }, { diff --git a/src/api/db/models/notice.js b/src/api/db/models/notice.js index d37bd6a..f91bab5 100644 --- a/src/api/db/models/notice.js +++ b/src/api/db/models/notice.js @@ -18,15 +18,18 @@ module.exports = (sequelize, DataTypes) => { Notice.init({ notice: { type:DataTypes.STRING, - allowNull:false + allowNull:false, + primaryKey: true }, classId: { type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true }, teacherId: { type: DataTypes.UUID, - allowNull:false + allowNull:false, + foreignKey:true } }, { sequelize, diff --git a/src/api/db/models/role.js b/src/api/db/models/role.js index 6ffc329..23ae6e2 100644 --- a/src/api/db/models/role.js +++ b/src/api/db/models/role.js @@ -17,7 +17,8 @@ module.exports = (sequelize, DataTypes) => { Role.init({ id:{ type: DataTypes.UUID, - defaultValue: DataTypes.UUIDV4 + defaultValue: DataTypes.UUIDV4, + primaryKey: true }, role: { type: DataTypes.UUID, diff --git a/src/api/db/models/user.js b/src/api/db/models/user.js index 24bb980..a43fd4e 100644 --- a/src/api/db/models/user.js +++ b/src/api/db/models/user.js @@ -14,15 +14,16 @@ module.exports = (sequelize, DataTypes) => { // define association here User.hasMany(models.Assignment, {foreignKey: 'assignmentId', as: 'assignment'}) User.hasMany(models.AssignmentScore, {foreignKey: 'assignmentScoreId', as: 'assignmentScore'}) - User.belongsTo(models.Message, {foreignKey: 'sender', as: 'sender'}); - User.belongsTo(models.Message, {foreignKey: 'receiver', as: 'receiver'}); + User.hasMany(models.Message, {foreignKey: 'senderId', as: 'sender'}); + User.hasMany(models.Message, {foreignKey: 'receiverId', as: 'receiver'}); User.belongsTo(models.Role, {foreignKey: 'roleId', as: 'role'}) } } User.init({ id:{ type: DataTypes.UUID, - defaultValue: DataTypes.UUIDV4 + defaultValue: DataTypes.UUIDV4, + primaryKey: true }, first_name: { allowNull: false, type:DataTypes.STRING diff --git a/src/api/index.js b/src/api/index.js deleted file mode 100644 index ad19a00..0000000 --- a/src/api/index.js +++ /dev/null @@ -1,25 +0,0 @@ -import config from 'dotenv'; -import express from 'express'; -config.config(); - -const app = express(); - -// when a random route is inputed -// app.get('*', (req, res) => res.status(200).send({ -// message: 'Welcome to this API.', -// })); - -app.get('/', (req, res)=>{ - res.send({ - message: 'Welcome to this API.', - }) -}) - -const port = process.env.PORT || 8000; -app.listen(process.env.port || port, ()=>{ - console.log(`Server started at port ${port}`); -}) - - - -export default app; diff --git a/src/api/routers/MessageRouter.js b/src/api/routers/MessageRouter.js new file mode 100644 index 0000000..3f307ef --- /dev/null +++ b/src/api/routers/MessageRouter.js @@ -0,0 +1,12 @@ +import { Router } from 'express'; +import MessageController from '../controllers/MessageController.js'; + +const messageRouter = Router(); + +messageRouter.get('/', MessageController.getAllMessages); +messageRouter.post('/', MessageController.addMessage); +messageRouter.get('/:id', MessageController.getAMessage); +messageRouter.put('/:id', MessageController.updatedMessage); +messageRouter.delete('/:id', MessageController.deleteMessage); + +export default messageRouter; \ No newline at end of file diff --git a/src/api/routers/TeacherRouter.js b/src/api/routers/TeacherRouter.js new file mode 100644 index 0000000..2e0176c --- /dev/null +++ b/src/api/routers/TeacherRouter.js @@ -0,0 +1,13 @@ +import { Router } from "express"; +import teacherController from '../controllers/TeacherController.js' + +const teacherRouter = Router(); + +teacherRouter.get('/', teacherController.getAllTeachers); +teacherRouter.get('/home', teacherController.home); +teacherRouter.post('/', teacherController.addTeacher); +teacherRouter.get('/:id', teacherController.getATeacher); +teacherRouter.put('/:id', teacherController.updatedTeacher); +teacherRouter.delete('/:id', teacherController.deleteTeacher); + +export { teacherRouter }; \ No newline at end of file diff --git a/src/api/services/MessageService.js b/src/api/services/MessageService.js new file mode 100644 index 0000000..b897b40 --- /dev/null +++ b/src/api/services/MessageService.js @@ -0,0 +1,68 @@ +import database from '../db/models/index.js'; + +class MessageService { + static async getAllMessages() { + try { + const result = await database.Message.findAll(); + return result; + } catch (error) { + throw error; + } + } + + static async addMessage(newMessage) { + try { + const result = await database.Message.create(newMessage); + return result; + } catch (error) { + throw error; + } + } + + static async updateMessage(id, updateMessage) { + try { + const messageToUpdate = await database.Message.findOne({ + where: { id: Number(id) } + }); + + if (messageToUpdate) { + await database.Message.update(updateMessage, { where: { id: Number(id) } }); + + return updateMessage; + } + return null; + } catch (error) { + throw error; + } + } + + static async getAMessage(id) { + try { + const aMessage = await database.Message.findOne({ + where: { id: Number(id) } + }); + + return aMessage; + } catch (error) { + throw error; + } + } + + static async deleteMessage(id) { + try { + const messageToDelete = await database.Message.findOne({ where: { id: Number(id) } }); + + if (messageToDelete) { + const deletedMessage = await database.Message.destroy({ + where: { id: Number(id) } + }); + return deletedMessage; + } + return null; + } catch (error) { + throw error; + } + } +} + +export default MessageService; diff --git a/src/api/services/TeacherServices.js b/src/api/services/TeacherServices.js new file mode 100644 index 0000000..6f58930 --- /dev/null +++ b/src/api/services/TeacherServices.js @@ -0,0 +1,68 @@ +import database from '../db/models/index.js'; + +class TeacherService { + static async getAllTeachers() { + try { + const result = await database.ClassTeacher.findAll(); + return result; + } catch (error) { + throw error; + } + } + + static async addTeacher(newTeacher) { + try { + const result = await database.ClassTeacher.create(newTeacher); + return result; + } catch (error) { + throw error; + } + } + + static async updateTeacher(id, updateTeacher) { + try { + const teacherToUpdate = await database.ClassTeacher.findOne({ + where: { id: id } + }); + + if (teacherToUpdate) { + await database.ClassTeacher.update(updateTeacher, { where: { id: id } }); + + return updateTeacher; + } + return null; + } catch (error) { + throw error; + } + } + + static async getATeacher(id) { + try { + const allTeacher = await database.ClassTeacher.findOne({ + where: { id: id } + }); + + return allTeacher; + } catch (error) { + throw error; + } + } + + static async deleteTeacher(id) { + try { + const TeacherToDelete = await database.ClassTeacher.findOne({ where: { id: id } }); + + if (TeacherToDelete) { + const deletedTeacher = await database.ClassTeacher.destroy({ + where: { id: id } + }); + return deletedTeacher; + } + return null; + } catch (error) { + throw error; + } + } +} + +export default TeacherService; \ No newline at end of file diff --git a/src/api/test/chaa.js b/src/api/test/chaa.js new file mode 100644 index 0000000..682e0df --- /dev/null +++ b/src/api/test/chaa.js @@ -0,0 +1,3 @@ +//require ('chai').should() +import chai from 'chai'; +chai.should(); diff --git a/src/api/test/test.js b/src/api/test/test.js index 8d52ec3..c876db2 100644 --- a/src/api/test/test.js +++ b/src/api/test/test.js @@ -1,8 +1,9 @@ -require ('chai').should() +//require ('chai').should() +import './chaa.js'; import chai from 'chai'; import chaiHttp from 'chai-http'; //import './chai/register-should'; -import app from '../index'; +import app from '../../index.js'; chai.use(chaiHttp); const { expect } = chai; diff --git a/src/api/utils/Utils.js b/src/api/utils/Utils.js new file mode 100644 index 0000000..f4cf815 --- /dev/null +++ b/src/api/utils/Utils.js @@ -0,0 +1,52 @@ +export default class Util { + constructor() { + this.statusCode = null; + this.type = null; + this.data = null; + this.message = null; + } + + setSuccess(statusCode, message, data) { + this.statusCode = statusCode; + this.message = message; + this.data = data; + this.type = 'success'; + } + + setError(statusCode, message) { + this.statusCode = statusCode; + this.message = message; + this.type = 'error'; + } + + setFound(statusCode, message, data){ + this.statusCode = statusCode; + this.message = message; + this.data = data; + this.type = "Record not found" + } + + send(res) { + const result = { + status: this.type, + message: this.message, + data: this.data, + }; + + if (this.type === 'success') { + return res.status(this.statusCode).json(result); + } + return res.status(this.statusCode).json({ + status: this.type, + message: this.message, + }); + } + + checkIfValidUUID(str) { + // Regular expression to check if string is a valid UUID + const regexExp = /^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/gi; + // const PWD_REGEX = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%]).{8,24}$/; + + return regexExp.test(str); + } + } \ No newline at end of file diff --git a/src/index.js b/src/index.js index b86534a..eed9970 100644 --- a/src/index.js +++ b/src/index.js @@ -1,5 +1,8 @@ import express from "express"; import dotenv from "dotenv"; +import messageRouter from "./api/routers/MessageRouter.js"; +import {teacherRouter} from "./api/routers/TeacherRouter.js"; + const app = express(); dotenv.config(); @@ -7,6 +10,16 @@ dotenv.config(); // Middlewares app.use(express.json()); app.use(express.urlencoded()); +app.use("/api/teacher", teacherRouter) +app.use('/api/message', messageRouter); + + +app +app.get('/', (req, res)=>{ + res.send({ + message: 'Welcome to this API.', + }) +}) app.get("/ping", (_req, res) => { res.status(200);