File tree Expand file tree Collapse file tree 2 files changed +54
-0
lines changed Expand file tree Collapse file tree 2 files changed +54
-0
lines changed Original file line number Diff line number Diff line change 1+ import { NextFunction , Request , Response } from "express" ;
2+ import { logger } from "../logger" ;
3+ import { isInteger } from "../utils" ;
4+ import { AppDataSource } from "../data-source" ;
5+ import { Lesson } from "../models/lesson" ;
6+ import { Course } from "../models/course" ;
7+
8+
9+ export async function deleteCourseAndLessons (
10+ request : Request , response : Response , next :NextFunction ) {
11+
12+ try {
13+
14+ logger . debug ( `Called deleteCourseAndLessons()` ) ;
15+
16+ const courseId = request . params . courseId ;
17+
18+ if ( ! isInteger ( courseId ) ) {
19+ throw `Invalid courseId ${ courseId } ` ;
20+ }
21+
22+ await AppDataSource . manager . transaction (
23+ async ( transactionalEntityManager ) => {
24+
25+ await transactionalEntityManager
26+ . createQueryBuilder ( )
27+ . delete ( )
28+ . from ( Lesson )
29+ . where ( "courseId = :courseId" , { courseId} )
30+ . execute ( ) ;
31+
32+ await transactionalEntityManager
33+ . createQueryBuilder ( )
34+ . delete ( )
35+ . from ( Course )
36+ . where ( "id = :courseId" , { courseId} )
37+ . execute ( ) ;
38+ }
39+ ) ;
40+
41+ response . status ( 200 ) . json ( {
42+ message : `Course deleted successfully ${ courseId } `
43+ } ) ;
44+
45+ }
46+ catch ( error ) {
47+ logger . error ( `Error calling deleteCourseAndLessons()` ) ;
48+ return next ( error ) ;
49+ }
50+
51+ }
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ import {findCourseByUrl} from "./routes/find-course-by-url";
1919import { findLessonsForCourse } from "./routes/find-lessons-for-course" ;
2020import { updateCourse } from "./routes/update-course" ;
2121import { createCourse } from "./routes/create-course" ;
22+ import { deleteCourseAndLessons } from "./routes/delete-course" ;
2223
2324const cors = require ( "cors" ) ;
2425
@@ -45,6 +46,8 @@ function setupExpress() {
4546
4647 app . route ( "/api/courses" ) . post ( createCourse ) ;
4748
49+ app . route ( "/api/courses/:courseId" ) . delete ( deleteCourseAndLessons ) ;
50+
4851 app . use ( defaultErrorHandler ) ;
4952
5053}
You can’t perform that action at this time.
0 commit comments