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
|
||||
submitted_by Int
|
||||
reviewed_by Int?
|
||||
action ApprovalAction
|
||||
previous_status CourseStatus
|
||||
new_status CourseStatus
|
||||
action ApprovalAction @default(SUBMITTED)
|
||||
previous_status CourseStatus?
|
||||
new_status CourseStatus?
|
||||
comment String? @db.Text
|
||||
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 { 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 { 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 { logger } from '../config/logger';
|
||||
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';
|
||||
|
||||
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';
|
||||
|
||||
// Use Prisma's CourseCreateInput for creating courses
|
||||
export interface createCourse {
|
||||
data: Prisma.CourseCreateInput;
|
||||
}
|
||||
|
||||
// Response type uses Prisma's Course model
|
||||
export interface createCourseResponse {
|
||||
code: number;
|
||||
message: string;
|
||||
data: Course;
|
||||
}
|
||||
|
||||
|
||||
export interface listCourseResponse {
|
||||
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