Skip to content

Commit dc121b5

Browse files
committed
fix :: Mono style to Coroutine migration
1 parent 784f937 commit dc121b5

File tree

3 files changed

+30
-24
lines changed

3 files changed

+30
-24
lines changed

src/main/kotlin/com/teamapi/palette/controller/ChatController.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class ChatController(
2828
return ResponseBody.ok("답변 생성 성공", data)
2929
}
3030

31-
@PageableAsQueryParam
31+
@GetMapping("/{roomId}")
3232
suspend fun getChatList(
3333
@PathVariable("roomId") roomId: Long,
3434
@Parameter(hidden = true) pageRequest: DefaultPageRequest
@@ -40,7 +40,13 @@ class ChatController(
4040
return ResponseBody.ok("채팅 조회 성공", data)
4141
}
4242

43+
44+
@PageableAsQueryParam
4345
@GetMapping("/my-image")
44-
fun getMyImage(@RequestParam pageNumber: Int, @RequestParam pageSize: Int) = chatService
45-
.getMyImage(pageNumber, pageSize)
46+
suspend fun getMyImage(
47+
@Parameter(hidden = true) pageRequest: DefaultPageRequest
48+
): ResponseEntity<ResponseBody<List<String>>> {
49+
val data = chatService.getMyImage(pageRequest.page, pageRequest.size)
50+
return ResponseBody.ok("이미지 리스트 조회 완료", data)
51+
}
4652
}

src/main/kotlin/com/teamapi/palette/repository/ChatRepository.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,7 @@ import org.springframework.stereotype.Repository
99
@Repository
1010
interface ChatRepository : CoroutineCrudRepository<Chat, Long> {
1111
suspend fun findAllByRoomIdIsOrderByDatetimeDesc(roomId: Long, pageable: Pageable): Flow<Chat>
12-
fun findByIsAiAndUserId(isAi: Boolean, userId: Long, pageable: Pageable): Flux<Chat>
12+
13+
@Suppress("SpringDataMethodInconsistencyInspection")
14+
suspend fun findChatByIsAiIsAndUserIdIsAndResourceIs(isAi: Boolean, userId: Long, resource: String, pageable: Pageable): Flow<Chat>
1315
}

src/main/kotlin/com/teamapi/palette/service/ChatService.kt

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ import com.teamapi.palette.repository.ChatRepository
1313
import com.teamapi.palette.repository.RoomRepository
1414
import com.teamapi.palette.response.ErrorCode
1515
import com.teamapi.palette.response.exception.CustomException
16-
import org.springframework.ai.image.ImageResponse
17-
import org.springframework.data.domain.*
1816
import kotlinx.coroutines.flow.filter
1917
import kotlinx.coroutines.flow.map
2018
import kotlinx.coroutines.flow.toList
2119
import kotlinx.coroutines.reactor.awaitSingle
2220
import org.slf4j.LoggerFactory
21+
import org.springframework.data.domain.PageRequest
22+
import org.springframework.data.domain.Pageable
2323
import org.springframework.stereotype.Service
2424
import reactor.core.publisher.Mono
2525
import reactor.kotlin.core.util.function.component1
@@ -41,13 +41,15 @@ class ChatService(
4141
room.validateUser(sessionHolder)
4242

4343
val userId = sessionHolder.me()
44-
chatRepository.save(Chat(
45-
message = message,
46-
datetime = LocalDateTime.now(),
47-
roomId = roomId,
48-
userId = userId,
49-
isAi = false
50-
))
44+
chatRepository.save(
45+
Chat(
46+
message = message,
47+
datetime = LocalDateTime.now(),
48+
roomId = roomId,
49+
userId = userId,
50+
isAi = false
51+
)
52+
)
5153
val (chat, image) = Mono.zip(createUserReturn(message), draw(message)).awaitSingle()
5254

5355
val stamp = LocalDateTime.now()
@@ -114,7 +116,7 @@ class ChatService(
114116
)
115117
)
116118

117-
// fun createPrompt(text: String) = chatCompletion(
119+
// fun createPrompt(text: String) = chatCompletion(
118120
// ChatCompletionsOptions(
119121
// listOf(
120122
// ChatRequestSystemMessage(
@@ -132,17 +134,13 @@ class ChatService(
132134
// )
133135
// )
134136
// )
135-
fun getMyImage(pageNumber: Int, pageSize: Int): Mono<PageImpl<String>> {
137+
suspend fun getMyImage(pageNumber: Int, pageSize: Int): List<String> {
136138
val page = PageRequest.of(pageNumber, pageSize)
137-
return sessionHolder
138-
.me()
139-
.flatMap { userId ->
140-
chatRepository.findByIsAiAndUserId(true, userId, page)
141-
.map { it.resource }
142-
.collectList()
143-
.zipWith(chatRepository.count())
144-
.map { p -> PageImpl(p.t1, page, p.t2) }
145-
}
139+
val userId = sessionHolder.me()
140+
141+
return chatRepository.findChatByIsAiIsAndUserIdIsAndResourceIs(true, userId, "IMAGE", page)
142+
.map { it.message }
143+
.toList()
146144
}
147145

148146
private fun chatCompletion(options: ChatCompletionsOptions) = azure.getChatCompletions(

0 commit comments

Comments
 (0)