๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ’ป๐Ÿ’ญ๐ŸŽง๐ŸŒ

[์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ] 4. ๋ชจ์ง‘๊ธ€ ๋“ฑ๋ก ๊ตฌํ˜„ (๋ชจ์ง‘๊ธ€๊ณผ ํƒœ๊ทธ, ๋งค์น˜ ์—ฐ๊ฒฐ) ๋ณธ๋ฌธ

์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ

[์›น ๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ] 4. ๋ชจ์ง‘๊ธ€ ๋“ฑ๋ก ๊ตฌํ˜„ (๋ชจ์ง‘๊ธ€๊ณผ ํƒœ๊ทธ, ๋งค์น˜ ์—ฐ๊ฒฐ)

adorableco 2024. 1. 9. 19:15
๋ฐ˜์‘ํ˜•

๋ชจ์ง‘๊ธ€์„ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋Š” api๋ฅผ ๊ตฌํ˜„ํ•ด๋ณธ๋‹ค.
๋ชจ์ง‘๊ธ€์—๋Š” ๊ธฐ๋ณธ์ ์ธ title, content , category, (๋“ฑ๋กํ•˜๋Š” ์‚ฌ์šฉ์ž์˜) userEmail (โžก๏ธ ์ด๊ฑด ํ† ํฐ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ๋ณ€๊ฒฝํ•  ์˜ˆ์ •์ด๋‹ค.) ์ด ํ•„์š”ํ•˜๋‹ค.
์ถ”๊ฐ€์ ์œผ๋กœ ๋ชจ์ง‘๊ธ€ ๋“ฑ๋ก ์‹œ์— ํ•จ๊ป˜ ์ƒ์„ฑํ•ด์•ผ ํ•  Match ๊ฐ์ฒด์˜ ํ•„๋“œ๋“ค์ด ํ•„์š”ํ•˜๊ณ  ์„ฑ๋ณ„, ๋‚˜์ด๋Œ€, ๋‚œ์ด๋„ ๋“ฑ์„ ํ‘œ๊ธฐํ•  ์ˆ˜ ์žˆ๋Š” Tag ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.

(โœ… Match : ๊ฒฝ๊ธฐ ์ธ์› ์ˆ˜, ๊ฒฝ๊ธฐ ์žฅ์†Œ, ๊ฒฝ๊ธฐ ๋‚ ์งœ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค.)

 

 

 


 

 ํ˜„์žฌ๊นŒ์ง€์˜ ํŒจํ‚ค์ง€ ๊ณ„์ธต ๊ตฌ์กฐ

 



๋‚˜๋ฆ„๋Œ€๋กœ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•˜๋ ค๊ณ  ๋…ธ๋ ฅ ์ค‘์ธ๋ฐ ์ž˜ํ•˜๊ณ  ์žˆ๋‚˜ ๋ชจ๋ฅด๊ฒ ๋‹ค..~



AddPostRequest.java

๋ชจ์ง‘๊ธ€ ๋“ฑ๋ก ์‹œ request body์— ๋“ค์–ด๊ฐˆ dto

@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
public class AddPostRequest {
    private String title;
    private String content;
    private String category;
    private String userEmail;
    private Match match;
    private Tag tag;

    public Post postToEntity(Tag tag, Match match, User user) {

       return Post.builder()
               .category(category)
               .tag(tag)
               .match(match)
               .user(user)
               .title(title)
               .content(content)
               .build();
    }

    public Match matchToEntity(User user) {
        return Match.builder()
                .user(user)
                .category(category)
                .headCnt(match.getHeadCnt())
                .place(match.getPlace())
                .matchDate(match.getMatchDate())
                .build();
    }


    public Tag tagToEntity() {
        return Tag.builder()
                .ageType(tag.getAgeType())
                .genderType(tag.getGenderType())
                .levelType(tag.getLevelType())
                .build();
    }
}


 ์ฒ˜์Œ์—๋Š” ๋ฌด์Šจ ์ƒ๊ฐ์ด์—ˆ๋Š”์ง€ ๊ทธ๋ƒฅ Tag, Match ๊ฐ์ฒด์˜ ํ•„๋“œ๋“ค๋„ ๋‹ค ๋”ฐ๋กœ๋”ฐ๋กœ ๋ฐ›์•„์„œ ์ด๊ฒƒ๋“ค์„ ๋‹ค์‹œ ๊ฐ๊ฐ์˜ dto ๋กœ ๋งŒ๋“ค๊ณ  ์ด๊ฒƒ์„ ์—”ํ‹ฐํ‹ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ชจ์ง‘๊ธ€ ์ €์žฅ ์‹œ์— ํ•จ๊ป˜ ์ถ”๊ฐ€ํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๊ต‰์žฅํžˆ ๋ณต์žกํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„์„ ํ–ˆ๋‹ค. ์ œ๋Œ€๋กœ ๋Œ์•„๊ฐ€๊ธด ํ•˜๋Š”๋ฐ ์•„๋ฌด๋ž˜๋„ ๋„ˆ๋ฌด ๋ณต์žกํ•ด๋ณด์˜€๊ณ  ์—ญ์‹œ๋‚˜ _request body_ ์— ๊ฐ์ฒด ์ž์ฒด๋ฅผ ๋ฐ›์•„๋„ ๋˜๋Š”๊ฑฐ์˜€๋‹ค..
์ด ๊ฐ์ฒด๋ฅผ ์—”ํ‹ฐํ‹ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” matchToEntity(), tagToEntity() ๋กœ ๋งŒ๋“ค์–ด์„œ postToEntity()์™€ ํ•จ๊ป˜ dto ์ž๋ฐ” ํŒŒ์ผ์— ๋‘์—ˆ๋‹ค.

 



PostService.java

save ๋ฉ”์„œ๋“œ๋งŒ ํ™•์ธํ•˜๋ฉด ๋˜๊ฒ ๋‹ค.

public Long save(AddPostRequest dto) {
        User user = userRepository.findByEmail(dto.getUserEmail()).orElseThrow(null);

        Tag tag = dto.tagToEntity();
        Tag savedTag = tagRepository.save(tag);

        Match match = dto.matchToEntity(user);
        Match savedMatch = matchRepository.save(match);

        Post post = dto.postToEntity(savedTag,savedMatch,user);
        postRepository.save(post);

        return post.getPostId();
    }

 

addPostRequest dto ์— ์žˆ๋Š” ์—”ํ‹ฐํ‹ฐ ๋ณ€ํ™˜ ๋ฉ”์„œ๋“œ๋“ค์„ ์—ฌ๊ธฐ์—์„œ ๋ชจ๋‘ ์‚ฌ์šฉํ•œ๋‹ค. user ์€ request body์— ๋‹ด๊ฒจ์˜ค๋Š” email์„ ํ†ตํ•ด ์ฐพ์€ ๊ฐ์ฒด์ด๋‹ค. tag, match ๋Š” ๋ชจ๋‘ __ToEntity() ์„ ์ด์šฉํ•ด ๊ฐ์ฒด์—์„œ ์—”ํ‹ฐํ‹ฐ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
โœ… ์—ฌ๊ธฐ์„œ ๋ฐ”๋กœ post์— ๋‹ด์œผ๋ฉด ์•ˆ๋˜๊ณ  ์ €์žฅํ•˜๊ณ  ๋ฆฌํ„ด๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๋‹ด์•„์•ผ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€ ์•Š๋Š”๋‹ค.



PostApiController.java

 @PostMapping("/api/post")
    public ResponseEntity<Map<String,Long>> addPost(@RequestBody AddPostRequest request) {

        Long savedPost = postService.save(request);


        Map<String,Long> response = new HashMap<>();
        response.put("postId",savedPost);

        return ResponseEntity.status(HttpStatus.CREATED).body(response);
    }


๋ชจ์ง‘๊ธ€ ๋“ฑ๋ก์ด ์™„๋ฃŒ๋˜๋ฉด response๋กœ ๋ชจ์ง‘๊ธ€ ์ „์ฒด ๋‚ด์šฉ๋ณด๋‹จ ๊ทธ๋ƒฅ ๋ชจ์ง‘๊ธ€ id๋งŒ ๋ณด๋‚ด์ฃผ๋ฉด ๋  ๊ฒƒ ๊ฐ™์€๋ฐ...? ์ด๊ฒƒ๋„ dto๋กœ ๋งŒ๋“ค์–ด์•ผ ๋ผ? ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์—ญ์‹œ ๊ทธ๋Ÿด๋ฆฌ๊ฐ€ ์—†์—ˆ๋‹ค. Map<>์„ ์ด์šฉํ•ด "postId" ์— ์ €์žฅ๋œ postId๋ฅผ ๋‹ด์•„์ฃผ๊ณ  ResponseEntity body์— ์™ ๋„ฃ์–ด์ค€๋‹ค!



๊ฒฐ๊ณผ

 


๋“ฑ๋ก ํ™•์ธ!



์กฐํšŒ ํ™•์ธ!



๋‹ค์Œ ํ•  ์ผ

  • ๋ชจ์ง‘๊ธ€ ์ˆ˜์ •, ์‚ญ์ œ ๊ตฌํ˜„ํ•˜๊ธฐ
  • ๋‹ค์‹œ ๋ณด๋‹ˆ ๋ชจ์ง‘๊ธ€ ์กฐํšŒ ์‹œ ์‚ฌ์šฉ์ž ์ •๋ณด๊ฐ€ ๋” ํ•„์š”ํ•˜๋‹ˆ ์ถ”๊ฐ€ํ•˜๊ธฐ (ํ”„๋กœํ•„ ์ด๋ฏธ์ง€, (๊ณต๊ฐœ ์‹œ) ์„ฑ๋ณ„ ๋‚˜์ด๋Œ€)
  • ๊ทธ๋ฆฌ๊ณ  ๋ชจ์ง‘๊ธ€ ๊ด€๋ จ api ๊ตฌํ˜„์ด ๋‹ค ๋๋‚˜๋ฉด ์šด๋™ ๊ฒฝ๊ธฐ ์ฐธ๊ฐ€ ์‹ ์ฒญ ๊ตฌํ˜„!

๋ฐ˜์‘ํ˜•