diff --git a/src/controllers/TeacherController.js b/src/controllers/TeacherController.js
new file mode 100644
index 0000000..5f8ff22
--- /dev/null
+++ b/src/controllers/TeacherController.js
@@ -0,0 +1,123 @@
+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.message);
+ 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.message);
+ 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.message);
+ 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.message);
+ 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.message);
+ return util.send(res);
+ }
+ }
+}
+
+export default teacherController;
\ No newline at end of file
diff --git a/src/db/migrations/20221030101838-create-class-teacher.js b/src/db/migrations/20221030101838-create-class-teacher.js
index a7efd88..ad8451a 100644
--- a/src/db/migrations/20221030101838-create-class-teacher.js
+++ b/src/db/migrations/20221030101838-create-class-teacher.js
@@ -4,13 +4,20 @@ module.exports = {
async up(queryInterface, Sequelize) {
await queryInterface.createTable('ClassTeachers', {
id: {
+ type: Sequelize.UUID,
allowNull: false,
- autoIncrement: true,
- primaryKey: true,
- type: Sequelize.INTEGER
+ defaultValue:Sequelize.UUIDV4,
+
},
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/db/migrations/20221030102005-create-class-student.js b/src/db/migrations/20221030102005-create-class-student.js
index 6d4a512..b6cf2b6 100644
--- a/src/db/migrations/20221030102005-create-class-student.js
+++ b/src/db/migrations/20221030102005-create-class-student.js
@@ -8,7 +8,7 @@ module.exports = {
await queryInterface.createTable('ClassStudents', {
id: {
allowNull: false,
- autoIncrement: true,
+ // autoIncrement: true,
primaryKey: true,
type: Sequelize.UUID
},
diff --git a/src/db/models/classteacher.js b/src/db/models/classteacher.js
index 49d0dae..2ff4161 100644
--- a/src/db/models/classteacher.js
+++ b/src/db/models/classteacher.js
@@ -17,6 +17,7 @@ module.exports = (sequelize, DataTypes) => {
ClassTeacher.init({
id:{
type: DataTypes.UUID,
+ defaultValue:DataTypes.UUIDV4,
allowNull:false,
primaryKey: true
},
diff --git a/src/db/models/user.js b/src/db/models/user.js
index 529fd28..90e588b 100644
--- a/src/db/models/user.js
+++ b/src/db/models/user.js
@@ -16,6 +16,8 @@ module.exports = (sequelize, DataTypes) => {
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.hasMany(models.Class, {foreignKey: 'classId', as: 'class'});
+ User.hasMany(models.User, {foreignKey: 'teacherId', as: 'teacher'});
}
}
User.init({
diff --git a/src/index.js b/src/index.js
index 2c7c9a7..3eb809f 100644
--- a/src/index.js
+++ b/src/index.js
@@ -2,6 +2,7 @@ import express from "express";
import dotenv from "dotenv";
import messageRouter from "./routers/MessageRouter.js";
import { studentRouter } from './routers/studentsRoutes.js';
+import {teacherRouter} from "./routers/TeacherRouter.js";
const app = express();
dotenv.config();
@@ -10,6 +11,7 @@ app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use('/api/message', messageRouter);
app.use('/api/students', studentRouter);
+app.use("/api/teacher", teacherRouter)
app.get('/', (req, res) => {
diff --git a/src/routers/TeacherRouter.js b/src/routers/TeacherRouter.js
new file mode 100644
index 0000000..2e0176c
--- /dev/null
+++ b/src/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/services/TeacherServices.js b/src/services/TeacherServices.js
new file mode 100644
index 0000000..6f58930
--- /dev/null
+++ b/src/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/utils/Utils.js b/src/utils/Utils.js
index 9aa63c3..20f9b40 100644
--- a/src/utils/Utils.js
+++ b/src/utils/Utils.js
@@ -34,4 +34,6 @@ export default class Util {
message: this.message,
});
}
+
+
}
\ No newline at end of file