Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

시간표를 만들 때, 해당 학기에 대표 시간표가 없는 경우 is_primary 필드를 true로 설정 #315

Merged
merged 2 commits into from
Aug 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion src/core/timetable/TimetableRepository.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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}
});

Expand Down Expand Up @@ -74,6 +75,11 @@ export async function findByUserIdAndMongooseId(userId: string, mongooseId: stri
return fromMongoose(doc);
}

export async function existsByUseridAndSemester(userId: string, year: number, semester: number): Promise<Boolean> {
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<Timetable[]> {
let docs = await mongooseModel.find({'user_id': userId, 'year': year, 'semester': semester}).exec();
return docs.map(fromMongoose);
Expand Down Expand Up @@ -243,6 +249,7 @@ export async function insert(table: Timetable): Promise<Timetable> {
title: table.title,
theme: table.theme,
lecture_list: table.lecture_list,
is_primary: table.is_primary,
updated_at: table.updated_at
});
await doc.save();
Expand Down Expand Up @@ -283,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,
}
}

Expand Down
6 changes: 6 additions & 0 deletions src/core/timetable/TimetableService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<void> {
Expand Down Expand Up @@ -93,6 +94,7 @@ export async function addCopyFromSourceId(user, sourceId): Promise<Timetable> {
title: newTitle,
theme : source.theme,
lecture_list: source.lecture_list,
is_primary: source.is_primary,
updated_at: Date.now()
};
await validateTimetable(newTimetable)
Expand All @@ -108,13 +110,17 @@ export async function addCopyFromSourceId(user, sourceId): Promise<Timetable> {
}

export async function addFromParam(params): Promise<Timetable> {
let isFirstTimeTableOfTheSemester =
!await TimetableRepository.existsByUseridAndSemester(params.user_id, params.year, params.semester)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@davin111 배치는 짜지 않고, 형 의견 반영해서
wafflestudio/snutt-timetable@28cee7c
이렇게 가고 이 코드도 냅두는 쪽으로 가려고 합니닷

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앗 그랬군요 수고하셨습니다

let newTimetable: Timetable = {
user_id : params.user_id,
year : params.year,
semester : params.semester,
title : params.title,
theme : ThemeTypeEnum.SNUTT,
lecture_list : [],
is_primary: isFirstTimeTableOfTheSemester,
updated_at: Date.now()
};

Expand Down
1 change: 1 addition & 0 deletions src/core/timetable/model/Timetable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ export default interface Timetable {
title: string;
lecture_list: UserLecture[];
theme: number;
is_primary: boolean;
Copy link
Member

@davin111 davin111 Aug 3, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

지금 보니, 최근의 컨벤션에 맞게 mongo field 도 나는 snu4t 쪽에선 camel 로 선언해놨는데, timetable 은 그냥 snake 쓰고 있었으니 그쪽을 수정해야겠구나.

이미 wafflestudio/snutt-timetable#141 에서 해줬군.

updated_at: number;
};
Loading