Skip to content

๐ŸŒŸ Issue: ๋ฆฌ์•กํŠธ ์ด์Šˆ ์ •๋ฆฌ (23-05-12)ย #16

@KKYHH

Description

@KKYHH

โœ…ย ๊ฒŒ์‹œ๊ธ€ Sort ๋ฅผ ์‚ฌ์šฉํ•ด ์ž‘์„ฑ์ผ์ž ์ตœ์‹ ์ˆœ์œผ๋กœ ์ •๋ ฌ

  • ๊ธฐ์กด ์ฝ”๋“œ
   @GetMapping(value = "/getallfeeds")
    public Map<String, List<FeedDto>> feedMain() {
        Map<String, List<FeedDto>> feeds = new HashMap<>();
        feeds.put("feeds", feedService.feedPage());
        return feeds;
    }

๊ธฐ์กด์˜ ์ฝ”๋“œ๋Š” ๊ฒŒ์‹œ๊ธ€ ์ „์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ธฐ๋Šฅ์ด๋‹ค
์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด ์ตœ์‹ ๊ธ€์ด ์œ„๋กœ ์˜ฌ๋ผ์˜ค์ง€ ์•Š๊ณ  ์•„๋ž˜๋กœ ์Œ“์—ฌ๊ฐ€๊ฒŒ ๋˜์–ด ์žˆ์–ด์„œ ์ •๋ ฌ์„ ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค
์ฒ˜์Œ์—๋Š” ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๋‘˜ ๋‹ค ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์ ์šฉ์ด ๋˜๋Š”์ค„ ์•Œ์•˜๋‹ค


โžก๏ธย ์„œ๋ฒ„ ์Šคํ”„๋ง๋ถ€ํŠธ

 @GetMapping(value = "/getallfeeds")
    public Map<String, List<FeedDto>> feedMain() {
        Map<String, List<FeedDto>> feeds = new HashMap<>();
        List<FeedDto> sortedFeeds = feedService.feedPage();

        // Sort the feeds by creation date in descending order
        sortedFeeds.sort(Comparator.comparing(FeedDto::getCreationDate).reversed());

        feeds.put("feeds", sortedFeeds);
        return feeds;
    }
  • Java util ์ค‘ Comparator์™€ Date ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ

โžก๏ธย ํด๋ผ์ด์–ธํŠธ ๋ฆฌ์•กํŠธ

useEffect(() => {
        axios({
            method: 'GET',
            url: "/api/feed/getallfeeds",
            headers: {
                'Content-Type': 'application/json'
            }
        })
            .then((res) => {
                console.log(res.data);

                let feedData = res.data.feeds;
                feedData.sort((a, b) => b.timestamp - a.timestamp);

                setFeeds(feedData);
            })
            .catch((err) => {
                console.log(err);
            })
    }, []);
  • React Home.js ์ปดํฌ๋„ŒํŠธ์•ˆ์˜ axios์— feedData.sort((a, b) => b.timestamp - a.timestamp); ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€

์ด ๋ฐฉ์‹์— ๋งž์ถฐ ์‹คํ–‰ํ•ด๋ณด๋‹ˆ ์˜ค๋ฅ˜๋Š” ๋‚˜์ง€ ์•Š์•˜์ง€๋งŒ Homeํ™”๋ฉด์— ํ”ผ๋“œ๊ฐ€ ์‚ฌ๋ผ์กŒ์—ˆ๋‹ค ์›์ธ์„ ๋ชจ๋ฅด๊ฒ ์–ด์„œ ๊ฐ•์‚ฌ๋‹˜๊ป˜ ์งˆ๋ฌธ์„ ํ•ด๋ณด๋‹ˆ ์„œ๋ฒ„์ธก์—์„œ๋งŒ ๊ฐ„๋‹จํ•˜๊ฒŒ(?) ์ˆ˜์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค

โ˜€๏ธŽ์„œ๋ฒ„ ์Šคํ”„๋ง๋ถ€ํŠธ ์ฝ”๋“œ ์ˆ˜์ •

โžก๏ธย FeedService.java

public List<FeedDto> feedByPage(Pageable pageable) {
        List<Feed> feedList =  feedRepository.findAllBy(pageable); // ์ถ”ํ›„ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ(๊ฒ€์ƒ‰ ๊ฐฏ์ˆ˜ ์ œํ•œ) ํ•„์š”
        List<FeedDto> feedDtoList = feedList.stream().map(FeedDto::new).toList();
        return feedDtoList;
    }
  • FeedService์— feedByPage ๋ฉ”์†Œ๋“œ ์ถ”๊ฐ€

โžก๏ธย FeedAPIController.java

@GetMapping(value="/getallfeeds")
    public Map<String, List<FeedDto>> feedMain(
            @RequestParam(defaultValue = "0") int start,
            @RequestParam(defaultValue = "10") int size
    ) {
        Pageable pageable = PageRequest.of(start, size, Sort.by(Sort.Direction.DESC, "uploadTime"));
        Map<String, List<FeedDto>> feeds = new HashMap<>();
        feeds.put("feeds", feedService.feedByPage(pageable));
        return feeds;
    }
  • @RequestParam start ์™€ size ๋ฅผ ์ถ”๊ฐ€
  • Pageable ์„ ๋งŒ๋“ค์–ด์„œ PageRequest๋กœ start size๊ฐ’์„ ์ฃผ๊ณ  Sort๋กœ ์ •๋ ฌ
  • Sort.Direction์œผ๋กœ AESC ์™€ DESC ์ค‘ ์„ ํƒ
  • โ€œuploadTimeโ€์€ ์ž‘์„ฑ์ผ์ž๊ฐ€ ์žˆ๋Š” DB
  • feedByPage ์— pageable์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค(?)

์ด ์ˆ˜์ •์œผ๋กœ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ• ๋•Œ ์ตœ์‹ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋Š”๊ฑธ ๊ตฌํ˜„
์ถ”ํ›„์— start์™€ size๋กœ ํ™”๋ฉด์— ๋ณด์—ฌ์งˆ ๊ฒŒ์‹œ๋ฌผ ๊ฐฏ์ˆ˜๋ฅผ ์กฐ์ ˆ
start 1 ์—๋Š” 1-10 ๊นŒ์ง€์˜ ๊ฒŒ์‹œ๊ธ€์ด 2์—๋Š” 11๋ถ€ํ„ฐ 20๊นŒ์ง€์˜ ๊ฒŒ์‹œ๊ธ€์ด ๋“ค์–ด๊ฐ€๋Š”๊ฒƒ ๊ฐ™๋‹ค

ํ™”๋ฉด์— ๊ฒŒ์‹œ๊ธ€ ์ „์ฒด๊ฐ€ ๋ณด์ด๋ฉด ์•ˆ๋˜๋‹ˆ ๊ฐฏ์ˆ˜๋ฅผ ์ •ํ•˜๊ณ  ํ•˜๋‹จ์— ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์•ผ๊ฒ ๋‹ค

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions