feat: Implement instructor-specific course management and refactor course creation into dedicated modules.
This commit is contained in:
parent
ec54160a5e
commit
000de75dd1
8 changed files with 103 additions and 13 deletions
|
|
@ -192,9 +192,9 @@ model CourseApproval {
|
||||||
course_id Int
|
course_id Int
|
||||||
submitted_by Int
|
submitted_by Int
|
||||||
reviewed_by Int?
|
reviewed_by Int?
|
||||||
action ApprovalAction
|
action ApprovalAction @default(SUBMITTED)
|
||||||
previous_status CourseStatus
|
previous_status CourseStatus?
|
||||||
new_status CourseStatus
|
new_status CourseStatus?
|
||||||
comment String? @db.Text
|
comment String? @db.Text
|
||||||
created_at DateTime @default(now())
|
created_at DateTime @default(now())
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { Get, Body, Post, Route, Tags, SuccessResponse, Response, Delete, Controller, Security, Request, Put, Path } from 'tsoa';
|
import { Get, Body, Post, Route, Tags, SuccessResponse, Response, Delete, Controller, Security, Request, Put, Path } from 'tsoa';
|
||||||
import { ValidationError } from '../middleware/errorHandler';
|
import { ValidationError } from '../middleware/errorHandler';
|
||||||
import { createCourse, createCourseResponse, listCourseResponse } from '../types/courses.types';
|
import { listCourseResponse } from '../types/courses.types';
|
||||||
import { CoursesService } from '../services/courses.service';
|
import { CoursesService } from '../services/courses.service';
|
||||||
import { get } from 'http';
|
import { get } from 'http';
|
||||||
|
|
||||||
|
|
|
||||||
0
Backend/src/controllers/CoursesInstructorController.ts
Normal file
0
Backend/src/controllers/CoursesInstructorController.ts
Normal file
0
Backend/src/services/CoursesInstructor.service.ts
Normal file
0
Backend/src/services/CoursesInstructor.service.ts
Normal file
|
|
@ -3,7 +3,7 @@ import { Prisma } from '@prisma/client';
|
||||||
import { config } from '../config';
|
import { config } from '../config';
|
||||||
import { logger } from '../config/logger';
|
import { logger } from '../config/logger';
|
||||||
import jwt from 'jsonwebtoken';
|
import jwt from 'jsonwebtoken';
|
||||||
import { createCourse, createCourseResponse, listCourseResponse, getCourseResponse } from '../types/courses.types';
|
import {listCourseResponse, getCourseResponse } from '../types/courses.types';
|
||||||
import { UnauthorizedError, ValidationError, ForbiddenError } from '../middleware/errorHandler';
|
import { UnauthorizedError, ValidationError, ForbiddenError } from '../middleware/errorHandler';
|
||||||
|
|
||||||
export class CoursesService {
|
export class CoursesService {
|
||||||
|
|
|
||||||
91
Backend/src/types/CoursesInstructor.types.ts
Normal file
91
Backend/src/types/CoursesInstructor.types.ts
Normal file
|
|
@ -0,0 +1,91 @@
|
||||||
|
import { Course, Prisma, User } from '@prisma/client';
|
||||||
|
|
||||||
|
export interface createCourses{
|
||||||
|
data: Prisma.CourseCreateInput;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface createCourseResponse {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
data: Course;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ListMyCourseResponse {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
data: Course[];
|
||||||
|
total: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface GetMyCourseResponse {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
data: Course;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface UpdateMyCourse{
|
||||||
|
data: Prisma.CourseUpdateInput;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface UpdateMyCourseResponse {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
data: Course;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DeleteMyCourseResponse {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface submitCourseResponse {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface submitCourse{
|
||||||
|
courseId: number;
|
||||||
|
submitted_by: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface submitCourseResponse {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface listCourseinstructorResponse {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
data: User[];
|
||||||
|
total: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface addinstructorCourse{
|
||||||
|
user_id: number;
|
||||||
|
course_id: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface addinstructorCourseResponse {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface removeinstructorCourse{
|
||||||
|
user_id: number;
|
||||||
|
course_id: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface removeinstructorCourseResponse {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface setprimaryCourseInstructor{
|
||||||
|
user_id: number;
|
||||||
|
course_id: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface setprimaryCourseInstructorResponse {
|
||||||
|
code: number;
|
||||||
|
message: string;
|
||||||
|
}
|
||||||
|
|
@ -1,16 +1,9 @@
|
||||||
import { Course, Prisma } from '@prisma/client';
|
import { Course, Prisma } from '@prisma/client';
|
||||||
|
|
||||||
// Use Prisma's CourseCreateInput for creating courses
|
// Use Prisma's CourseCreateInput for creating courses
|
||||||
export interface createCourse {
|
|
||||||
data: Prisma.CourseCreateInput;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Response type uses Prisma's Course model
|
// Response type uses Prisma's Course model
|
||||||
export interface createCourseResponse {
|
|
||||||
code: number;
|
|
||||||
message: string;
|
|
||||||
data: Course;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface listCourseResponse {
|
export interface listCourseResponse {
|
||||||
code: number;
|
code: number;
|
||||||
|
|
|
||||||
6
Backend/src/validators/CoursesInstructor.validator.ts
Normal file
6
Backend/src/validators/CoursesInstructor.validator.ts
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
import Joi from "joi";
|
||||||
|
|
||||||
|
export const addInstructorCourseValidator = Joi.object({
|
||||||
|
user_id: Joi.number().required(),
|
||||||
|
course_id: Joi.number().required(),
|
||||||
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue