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

fix: timetableLecture 클래스 필드 수정 #1070

Merged
merged 22 commits into from
Nov 27, 2024

Conversation

Soundbar91
Copy link
Contributor

@Soundbar91 Soundbar91 commented Nov 21, 2024

🔥 연관 이슈

🚀 작업 내용

  • timetableLecture 클래스의 classPlace를 TEXT으로 변경했습니다.
  • timetablecLecture 생성 및 업데이트 dto를 수정했습니다.
    • class_place와 class_time를 하나로 묶었습니다.
    • class_place는 길이 제한 30으로 설정했습니다.
    • 이와 관련해서 구분자를 백앤드에서 넣습니다.
  • 관련 테스트 코드 수정했습니다.

💬 리뷰 중점사항

프론트 대응과 같이 머지 할 생각입니다.

@Soundbar91 Soundbar91 added the Team User 유저 팀에서 작업할 이슈입니다 label Nov 21, 2024
@Soundbar91 Soundbar91 self-assigned this Nov 21, 2024
@github-actions github-actions bot added the 버그 정상적으로 동작하지 않는 문제상황입니다. label Nov 21, 2024
Copy link

github-actions bot commented Nov 21, 2024

Unit Test Results

339 tests  ±0   338 ✔️ ±0   1m 28s ⏱️ ±0s
  41 suites ±0       1 💤 ±0 
  41 files   ±0       0 ±0 

Results for commit 8630d82. ± Comparison against base commit ca51412.

♻️ This comment has been updated with latest results.

Copy link
Contributor

@duehee duehee left a comment

Choose a reason for hiding this comment

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

반영해주셔서 감사합니다! 고생하셨어요~

Comment on lines 45 to 46
@Size(max = 255)
@Column(name = "class_place", length = 255)
Copy link
Contributor

Choose a reason for hiding this comment

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

A

구우웃~!

Copy link
Contributor

@kwoo28 kwoo28 left a comment

Choose a reason for hiding this comment

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

수고 많으셨습니다!

Comment on lines 45 to 47
@Size(max = 255)
@Column(name = "class_place", length = 255)
private String classPlace;
Copy link
Contributor

Choose a reason for hiding this comment

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

R

생각해보니 이 부분 TEXT로 변경해야할것 같습니다. List형식의 dto는 @SiZe어노테이션의 유형 검증이 안돼서 서버오류가 발생하더라고요.. 그래서 classTime도 현재 TEXT로 돼있는 이유가 저번에 이러한 이유로 서버 오류가 발생했었기때문이에요.

그래서 맘편하게 model에서 TEXT로 변경하거나, DTO에서 리스트형식의 유효성검증에 대해서 더 찾아봐야할것같아요!

Copy link
Contributor

Choose a reason for hiding this comment

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

지금 로컬에서 돌려보니 서버오류 발생하네요!

Copy link
Contributor Author

@Soundbar91 Soundbar91 Nov 24, 2024

Choose a reason for hiding this comment

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

의견 감사합니다 ! List에 Size 어노테이션을 적용하면, List 길이를 검증하는 것을 생각 못 했네요..
그래서 대안으로 주신 TEXT도 좋다고 생각을 합니다.

저는 개인적으로는 TEXT으로 변경하는 것 보다는 DTO에서 유효성 검증을 추가적으로 하는 것이 어떨까라는 생각이 듭니다.

관련해서 코드를 한번 작성해봤습니다.

@JsonNaming(value = SnakeCaseStrategy.class)
public record InnerTimeTableLectureRequest(
    ...

    @Schema(description = "강의 장소", example = "도서관", requiredMode = NOT_REQUIRED)
    @Size(max = 10)
    @Valid
    List<ClassPlace> classPlace,

    ...
) {
    public record ClassPlace(
        @Length(max = 20)
        String name
    ) {
    }
}

강의 장소 이름 길이 제한은 20, 총 강의 장소의 개수는 10개만 입력을 받게 됩니다.
총 강의 장소에 개수를 거는 상황이 발생하지만, 하나의 커스텀 강의에서 10개 이상의 강의 장소를 선택할까?라는 의문이 드네요,, 만약 이 방안으로 가게 된다면 PM님과의 상의가 필요해 보이는 부분입니다.

요청 메시지 바디는 다음과 같습니다.

{
  "timetable_frame_id": 12084,
  "timetable_lecture": [
    {
      "class_title": "테스트",
      "class_time": [1, 2, 3, -1, 101, 102, 103],
      "class_place": [
        {
          "name": "장소"
        },
        {
          "name": "도서관"
        }
      ],
      "professor": "null",
      "grades": "0",
      "memo": "메모메모"
    }
  ]
}

이전 데이터와의 호환성(?)을 위해 파싱 메소드도 다음과 같이 변경해야할 것 같습니다.

private String getClassPlaceToString() {
    if (classPlace == null) {
        return null;
    }
    return classPlace.stream()
        .map(ClassPlace::name)
        .collect(Collectors.joining(", "));
}

Copy link
Contributor Author

Choose a reason for hiding this comment

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

+ class_time으로 저렇게 바꾸고 싶다는 생각이...

Copy link
Contributor

Choose a reason for hiding this comment

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

저도 dto로 검증하면 좋긴한데.. list형식은 dto에서 size유효성 검증이 안되더라구요

Copy link
Contributor

@duehee duehee left a comment

Choose a reason for hiding this comment

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

구분자까지 넣어주셨네요~ 클라이언트와 소통 활발한 관규티비..
고생하셨습니다~

@Size(max = 30)
@Column(name = "class_place", length = 30)
@Lob
@Column(name = "class_place", columnDefinition = "TEXT")
Copy link
Contributor

Choose a reason for hiding this comment

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

A

굿 이거 안 하면 애가 아파해요

Copy link
Contributor

@duehee duehee left a comment

Choose a reason for hiding this comment

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

프론트님들 대응 된다고 하면 머지 하셔도 될 듯
고생하셨습니다~

@Soundbar91 Soundbar91 merged commit bea2b2d into develop Nov 27, 2024
3 checks passed
@Soundbar91 Soundbar91 deleted the fix/1067-modify-timetable-lecture branch November 27, 2024 05:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Team User 유저 팀에서 작업할 이슈입니다 버그 정상적으로 동작하지 않는 문제상황입니다.
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

timetableLecture 클래스 필드 수정
3 participants