Skip to content

Commit

Permalink
#132 fix: 강의의 시험 목록 조회 시 시험 유형 쿼리 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
SunwooKim11 committed Nov 21, 2024
1 parent 892a028 commit c8a8451
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 6 deletions.
13 changes: 10 additions & 3 deletions src/controllers/lectureController.js
Original file line number Diff line number Diff line change
Expand Up @@ -513,6 +513,7 @@ exports.createExam = asyncWrapper(async (req, res, next) => {

exports.getExam = asyncWrapper(async (req, res, next) => {
const { lecture_id } = req.params;
const { exam_type_id } = req.query;

// 유효성 검사: lecture_id가 존재하지 않으면 에러 처리
if (!lecture_id) {
Expand All @@ -526,10 +527,14 @@ exports.getExam = asyncWrapper(async (req, res, next) => {
}
const lecture_id_int = parseInt(lecture_id, 10);

// Prisma where 조건 동적 구성
const whereCondition = {
lecture_id: lecture_id_int,
...(exam_type_id && { exam_type_id: parseInt(exam_type_id, 10) }), // exam_type_id가 존재할 경우 조건 추가
};

const examList = await prisma.Exam.findMany({
where: {
lecture_id: lecture_id_int,
},
where: whereCondition,
});

// 유효성 검사: 존재하는 시험이 있는지 확인
Expand All @@ -547,12 +552,14 @@ exports.getExam = asyncWrapper(async (req, res, next) => {
message: "시험을 성공적으로 불러왔습니다.",
data: {
lecture_id: lecture_id_int,
exam_type_id: exam_type_id,
exams: examList,
exam_cnt: examList.length,
},
});
});


exports.deleteExam = asyncWrapper(async (req, res, next) => {
const { lecture_id, exam_id } = req.params;

Expand Down
41 changes: 38 additions & 3 deletions src/routes/lectureRouter.js
Original file line number Diff line number Diff line change
Expand Up @@ -656,6 +656,7 @@ router.post(
* /lecture/{lecture_id}/exam:
* get:
* summary: 강의에 대한 시험 목록 조회
* description: 특정 강의의 시험 목록을 조회합니다. Optional Query Parameter로 `exam_type_id`를 제공하여 특정 시험 유형만 필터링할 수 있습니다.
* tags: [Lecture]
* security:
* - bearerAuth: []
Expand All @@ -666,6 +667,12 @@ router.post(
* schema:
* type: string
* description: 강의 ID
* - in: query
* name: exam_type_id
* required: false
* schema:
* type: integer
* description: 필터링할 시험 유형 ID
* responses:
* 200:
* description: 성공적으로 시험을 불러옴
Expand All @@ -676,31 +683,59 @@ router.post(
* properties:
* message:
* type: string
* example: 시험을 성공적으로 불러왔습니다.
* data:
* type: object
* properties:
* lecture_id:
* type: integer
* description: 강의 ID
* exams:
* type: array
* items:
* type: object
* properties:
* exam_id:
* type: integer
* description: 시험 ID
* exam_name:
* type: string
* description: 시험 이름
* exam_date:
* type: string
* format: date
* description: 시험 날짜
* exam_type_id:
* type: integer
* description: 시험 유형 ID
* high_score:
* type: number
* description: 최고 점수
* low_score:
* type: number
* description: 최저 점수
* average_score:
* type: number
* description: 평균 점수
* total_score:
* type: number
* description: 총 점수
* created_at:
* type: string
* format: date-time
* description: 시험 생성 일시
* headcount:
* type: integer
* description: 시험 응시자 수
* exam_cnt:
* type: integer
* description: 조회된 시험의 총 개수
* example:
* message: "시험을 성공적으로 불러왔습니다."
* data:
* lecture_id: 1001
* exams:
* - exam_id: 9,
* - exam_id: 9
* lecture_id: 129
* exam_name: "단원평가2"
* high_score: 0
Expand All @@ -721,9 +756,9 @@ router.post(
* properties:
* message:
* type: string
* example:
* message: "현재 개설된 시험이 존재하지 않습니다."
* example: 현재 개설된 시험이 존재하지 않습니다.
*/

// 시험 조회
router.get(
"/:lecture_id/exam",
Expand Down

0 comments on commit c8a8451

Please sign in to comment.