-
Notifications
You must be signed in to change notification settings - Fork 5
Description
โ ย ๊ฒ์๊ธ 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๊น์ง์ ๊ฒ์๊ธ์ด ๋ค์ด๊ฐ๋๊ฒ ๊ฐ๋ค
ํ๋ฉด์ ๊ฒ์๊ธ ์ ์ฒด๊ฐ ๋ณด์ด๋ฉด ์๋๋ ๊ฐฏ์๋ฅผ ์ ํ๊ณ ํ๋จ์ ๋ด๋ ค๊ฐ๋ฉด์ ๋ถ๋ฌ์ค๋ ๊ธฐ๋ฅ์ผ๋ก ์ฐ๊ฒฐํด์ผ๊ฒ ๋ค