Skip to content

Commit e71ef82

Browse files
committed
Typescript Bootcamp
1 parent d091bb5 commit e71ef82

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+
}

rest-api/src/server.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import {findCourseByUrl} from "./routes/find-course-by-url";
1919
import {findLessonsForCourse} from "./routes/find-lessons-for-course";
2020
import {updateCourse} from "./routes/update-course";
2121
import {createCourse} from "./routes/create-course";
22+
import {deleteCourseAndLessons} from "./routes/delete-course";
2223

2324
const 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
}

0 commit comments

Comments
 (0)