From f43f1ad4e61221a2173e59d6d6ddbf8337237040 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=A7=80=ED=98=81?= Date: Thu, 3 Aug 2023 02:36:13 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=EC=8B=9C=EA=B0=84=ED=91=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=ED=95=A0=20=EB=95=8C=20is=5Fprimary=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=EB=A5=BC=20=EA=B3=84=EC=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/timetable/TimetableRepository.ts | 5 +++++ src/core/timetable/TimetableService.ts | 5 +++++ src/core/timetable/model/Timetable.ts | 1 + 3 files changed, 11 insertions(+) diff --git a/src/core/timetable/TimetableRepository.ts b/src/core/timetable/TimetableRepository.ts index 2145c388..da2429fc 100644 --- a/src/core/timetable/TimetableRepository.ts +++ b/src/core/timetable/TimetableRepository.ts @@ -74,6 +74,11 @@ export async function findByUserIdAndMongooseId(userId: string, mongooseId: stri return fromMongoose(doc); } +export async function existsByUseridAndSemester(userId: string, year: number, semester: number): Promise { + let doc = await mongooseModel.findOne({'user_id': userId, 'year': year, 'semester': semester}).exec(); + return fromMongoose(doc) != null; +} + export async function findByUserIdAndSemester(userId: string, year: number, semester: number): Promise { let docs = await mongooseModel.find({'user_id': userId, 'year': year, 'semester': semester}).exec(); return docs.map(fromMongoose); diff --git a/src/core/timetable/TimetableService.ts b/src/core/timetable/TimetableService.ts index 2adcd342..daf351be 100644 --- a/src/core/timetable/TimetableService.ts +++ b/src/core/timetable/TimetableService.ts @@ -8,6 +8,7 @@ import AbstractTimetable from './model/AbstractTimetable'; import TimetableNotEnoughParamError from './error/TimetableNotEnoughParamError'; import ThemeTypeEnum from "@app/core/timetable/model/ThemeTypeEnum"; import SnuttevLectureKey from "@app/core/lecture/model/SnuttevLectureKey"; +import {existsByUseridAndSemester} from "@app/core/timetable/TimetableRepository"; //deprecated export async function copy(timetable: Timetable): Promise { @@ -108,6 +109,9 @@ export async function addCopyFromSourceId(user, sourceId): Promise { } export async function addFromParam(params): Promise { + let isFirstTimeTableOfTheSemester = + !await TimetableRepository.existsByUseridAndSemester(params.user_id, params.year, params.semester) + let newTimetable: Timetable = { user_id : params.user_id, year : params.year, @@ -115,6 +119,7 @@ export async function addFromParam(params): Promise { title : params.title, theme : ThemeTypeEnum.SNUTT, lecture_list : [], + is_primary: isFirstTimeTableOfTheSemester, updated_at: Date.now() }; diff --git a/src/core/timetable/model/Timetable.ts b/src/core/timetable/model/Timetable.ts index 26dbcee8..a4c59277 100644 --- a/src/core/timetable/model/Timetable.ts +++ b/src/core/timetable/model/Timetable.ts @@ -8,5 +8,6 @@ export default interface Timetable { title: string; lecture_list: UserLecture[]; theme: number; + is_primary: boolean; updated_at: number; }; From eadf7b6c072d8cfe782b5be54060a0ca005123e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EC=A7=80=ED=98=81?= Date: Fri, 4 Aug 2023 12:53:12 +0900 Subject: [PATCH 2/5] (fix) missing paramter resolve --- src/core/timetable/TimetableRepository.ts | 5 ++++- src/core/timetable/TimetableService.ts | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/timetable/TimetableRepository.ts b/src/core/timetable/TimetableRepository.ts index da2429fc..8931230f 100644 --- a/src/core/timetable/TimetableRepository.ts +++ b/src/core/timetable/TimetableRepository.ts @@ -47,6 +47,7 @@ let TimetableSchema = new mongoose.Schema({ title: {type: String, required: true}, lecture_list: [userLectureSchema], updated_at: Date, + is_primary: Boolean, theme: {type: Number, required: true, default: 0, min: 0, max:NUMBER_OF_THEME-1} }); @@ -248,6 +249,7 @@ export async function insert(table: Timetable): Promise { title: table.title, theme: table.theme, lecture_list: table.lecture_list, + is_primary: table.is_primary, updated_at: table.updated_at }); await doc.save(); @@ -288,7 +290,8 @@ function fromMongoose(mongooseDoc): Timetable { title: mongooseDoc.title, lecture_list: lecture_list, theme: mongooseDoc.theme, - updated_at: mongooseDoc.updated_at + updated_at: mongooseDoc.updated_at, + is_primary: mongooseDoc.is_primary, } } diff --git a/src/core/timetable/TimetableService.ts b/src/core/timetable/TimetableService.ts index daf351be..2a32dc8b 100644 --- a/src/core/timetable/TimetableService.ts +++ b/src/core/timetable/TimetableService.ts @@ -94,6 +94,7 @@ export async function addCopyFromSourceId(user, sourceId): Promise { title: newTitle, theme : source.theme, lecture_list: source.lecture_list, + is_primary: source.is_primary, updated_at: Date.now() }; await validateTimetable(newTimetable) From 4bc2f802183bb0a30dadf6e932f129914af3c532 Mon Sep 17 00:00:00 2001 From: Hank-Choi Date: Mon, 28 Aug 2023 16:50:27 +0900 Subject: [PATCH 3/5] =?UTF-8?q?[hotfix]=20course=5Ftitle=20=EB=B9=88=20?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EB=A7=81=20=EA=B0=80=EB=8A=A5=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/timetable/TimetableRepository.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/timetable/TimetableRepository.ts b/src/core/timetable/TimetableRepository.ts index 8931230f..416e220a 100644 --- a/src/core/timetable/TimetableRepository.ts +++ b/src/core/timetable/TimetableRepository.ts @@ -17,7 +17,7 @@ let userLectureSchema = new mongoose.Schema({ classification: String, // 교과 구분 department: String, // 학부 academic_year: String, // 학년 - course_title: {type: String, required: true}, // 과목명 + course_title: {type: String, required: true, default: ""}, // 과목명 credit: Number, // 학점 class_time: String, real_class_time: String, From 91a7c3befe260004400c53ba2775257b528ed836 Mon Sep 17 00:00:00 2001 From: Hank-Choi Date: Mon, 28 Aug 2023 16:57:11 +0900 Subject: [PATCH 4/5] =?UTF-8?q?[hotfix]=20course=5Ftitle=20=EB=B9=88=20?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EB=A7=81=20=EA=B0=80=EB=8A=A5=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/timetable/TimetableLectureService.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/timetable/TimetableLectureService.ts b/src/core/timetable/TimetableLectureService.ts index 9f082c28..fd63aa0b 100644 --- a/src/core/timetable/TimetableLectureService.ts +++ b/src/core/timetable/TimetableLectureService.ts @@ -121,6 +121,8 @@ export async function partialModifyUserLecture(userId: string, tableId: string, throw new TimetableNotFoundError(); } + if (!lecture.course_title) throw new InvalidLectureUpdateRequestError(lecture); + if (lecture.course_number || lecture.lecture_number) { throw new InvalidLectureUpdateRequestError(lecture); } From 86d8024e515dc9320b9c54f19feb2dc2155cd9a7 Mon Sep 17 00:00:00 2001 From: Hank-Choi Date: Mon, 28 Aug 2023 17:06:00 +0900 Subject: [PATCH 5/5] =?UTF-8?q?[hotfix]=20course=5Ftitle=20=EB=B9=88=20?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EB=A7=81=20=EA=B0=80=EB=8A=A5=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/timetable/TimetableLectureService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/timetable/TimetableLectureService.ts b/src/core/timetable/TimetableLectureService.ts index fd63aa0b..9c2d98e9 100644 --- a/src/core/timetable/TimetableLectureService.ts +++ b/src/core/timetable/TimetableLectureService.ts @@ -121,7 +121,7 @@ export async function partialModifyUserLecture(userId: string, tableId: string, throw new TimetableNotFoundError(); } - if (!lecture.course_title) throw new InvalidLectureUpdateRequestError(lecture); + if (lecture.course_title === "") throw new InvalidLectureUpdateRequestError(lecture); if (lecture.course_number || lecture.lecture_number) { throw new InvalidLectureUpdateRequestError(lecture);