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);