Step3-kakao-tech-campus / Team3_BE

[카테캠 1기] 번개 지향 볼링 모집 커뮤니티 "번개볼링"의 백엔드 서버입니다.
2 stars 4 forks source link

모집글 목록/상세 조회 및 행정구역 조회 mock api 구현 #8

Closed jagaldol closed 1 year ago

jagaldol commented 1 year ago

Summary

모집글 목록 조회(GET /api/posts) 와 모집글 상세 조회(GET /api/post/{postId})를 컨트롤러에서 가짜 데이터를 하드코딩하여 구현해두었습니다.

행정구역의 경우 db를 통해 값을 가져오도록 제대로 구현해두었습니다.

Description

저희가 JAVA 17을 쓰는 만큼 record를 활용하면 좋을 거 같아 DTO의 경우 record로 작성하였습니다.

일반 클래스와 생성자 선언 방식이 좀 달라서 record 사용법이 혼란이 올 수 있습니다. 이를 위해 city 패키지를 제대로 구현해두었습니다. city.dto의 CityResponse를 보시면 record의 생성자를 어떻게 만들어야하는 지 볼 수 있습니다.

public record DistrictDto(
        Long id,
        String name
) {
    DistrictDto(District district) {
        this(district.getId(), district.getName());
    }
}

이런식으로 this 키워드를 사용하거나, 혹은 this가 잘 안될 시 생성자 대신 of 패턴을 사용하면 해결됩니다.

public record GetDistrictsDto(
        List<DistrictDto> countries
)  {
    public static GetDistrictsDto of(List<District> districtList) {
        return new GetDistrictsDto(districtList.stream()
                .map(DistrictDto::new)
                .toList());
    }

    public record DistrictDto(
            Long id,
            String name
    ) {
        DistrictDto(District district) {
            this(district.getId(), district.getName());
        }
    }
}

GetDistrictsDto의 경우 생성자 대신 public static 메서드 of를 만들었습니다. this안에 map 넣을려고 하니까 오류가 나서 of로 처리했습니다.

Related Issue

Issue Number: #6