Skip to content

Commit 4ea7d02

Browse files
authored
Merge pull request #15 from UMC-hackathon-2team/develop
[feat] 기억 랜덤 조회 기능 추가
2 parents 7f8a0eb + 570a24c commit 4ea7d02

7 files changed

Lines changed: 66 additions & 9 deletions

File tree

src/main/java/umc/tosee/memory/controller/MemoryController.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
import io.swagger.v3.oas.annotations.Operation;
55
import jakarta.servlet.http.HttpServletResponse;
66
import lombok.RequiredArgsConstructor;
7-
import org.springframework.web.bind.annotation.PostMapping;
8-
import org.springframework.web.bind.annotation.RequestBody;
9-
import org.springframework.web.bind.annotation.RequestMapping;
10-
import org.springframework.web.bind.annotation.RestController;
7+
import org.springframework.web.bind.annotation.*;
118
import umc.tosee.global.common.ApiResponse;
129
import umc.tosee.global.common.SuccessCode;
1310
import umc.tosee.gpt.dto.GptDTO;
1411
import umc.tosee.memory.dto.MemoryDTO;
12+
import umc.tosee.memory.dto.Res.MemoryRes;
1513
import umc.tosee.memory.service.MemoryService;
1614

15+
import java.util.List;
16+
1717
@RestController
1818
@RequiredArgsConstructor
1919
@RequestMapping("/api/memories")
@@ -86,5 +86,10 @@ public ApiResponse<GptDTO.GptResponseDTO> saveMemory(
8686

8787
return ApiResponse.onSuccess(result, SuccessCode.CREATED);
8888
}
89+
90+
@GetMapping("/random")
91+
public ApiResponse<List<MemoryRes.MemoryRandomRes>> getRandomMemories() {
92+
return ApiResponse.onSuccess(memoryService.getRandomMemory(), SuccessCode.OK);
93+
}
8994
}
9095

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package umc.tosee.memory.converter;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import umc.tosee.memory.domain.Memory;
5+
import umc.tosee.memory.dto.Res.MemoryRes.MemoryRandomRes;
6+
7+
@RequiredArgsConstructor
8+
public class MemoryConverter {
9+
10+
public static MemoryRandomRes toRandomRes(Memory memory) {
11+
return MemoryRandomRes.builder()
12+
.memoryId(memory.getId())
13+
.name(memory.getCategory().getName())
14+
.sadCount(memory.getSadCount())
15+
.build();
16+
}
17+
}

src/main/java/umc/tosee/memory/domain/Memory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ public class Memory {
2222

2323
private String content;
2424

25-
private int sad_count = 0;
25+
private int sadCount = 0;
2626

2727
private String summation;
2828

29-
@OneToOne
29+
@ManyToOne(fetch = FetchType.LAZY)
3030
@JoinColumn(name = "category_id", nullable = false)
3131
private Category category;
3232

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package umc.tosee.memory.dto.Res;
2+
import lombok.Builder;
3+
4+
public class MemoryRes {
5+
6+
@Builder
7+
public record MemoryRandomRes(
8+
Long memoryId,
9+
String name,
10+
int sadCount
11+
) {}
12+
}

src/main/java/umc/tosee/memory/repository/MemoryRepository.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,21 @@
22

33

44
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.data.jpa.repository.Query;
56
import umc.tosee.memory.domain.Memory;
67

7-
public interface MemoryRepository extends JpaRepository<Memory,Long> {
8+
import java.util.List;
89

10+
public interface MemoryRepository extends JpaRepository<Memory,Long> {
11+
@Query(value = """
12+
SELECT *
13+
FROM (
14+
SELECT *
15+
FROM memories
16+
ORDER BY RAND()
17+
LIMIT 4
18+
) t
19+
ORDER BY t.sad_count DESC
20+
""", nativeQuery = true)
21+
List<Memory> findRandomMemoryBySadDesc();
922
}

src/main/java/umc/tosee/memory/service/MemoryService.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,16 @@
99
import org.springframework.stereotype.Service;
1010
import umc.tosee.gpt.dto.GptDTO;
1111
import umc.tosee.gpt.service.GptService;
12+
import umc.tosee.memory.converter.MemoryConverter;
1213
import umc.tosee.memory.domain.Memory;
1314
import umc.tosee.memory.dto.MemoryDTO;
15+
import umc.tosee.memory.dto.Res.MemoryRes;
1416
import umc.tosee.memory.repository.MemoryRepository;
1517
import umc.tosee.memorycategory.domain.Category;
1618
import umc.tosee.memorycategory.repository.CategoryRepository;
1719

20+
import java.util.List;
21+
1822
@RequiredArgsConstructor
1923
@Service
2024
public class MemoryService {
@@ -71,5 +75,13 @@ private void saveCategoryCookie(
7175
response.addCookie(cookie);
7276
}
7377

78+
@Transactional
79+
public List<MemoryRes.MemoryRandomRes> getRandomMemory() {
80+
return memoryRepository.findRandomMemoryBySadDesc()
81+
.stream()
82+
.map(MemoryConverter::toRandomRes)
83+
.toList();
84+
}
85+
7486

7587
}

src/main/java/umc/tosee/memorycategory/domain/Category.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,4 @@ public class Category {
2121

2222
private String name;
2323

24-
@OneToOne(mappedBy = "category")
25-
private Memory memory;
2624
}

0 commit comments

Comments
 (0)