Skip to content

Commit

Permalink
Merge pull request #20 from Nexters/main
Browse files Browse the repository at this point in the history
release: 0.0.1
  • Loading branch information
devxb authored Feb 4, 2025
2 parents 2a8bfb6 + a184480 commit 2e11141
Show file tree
Hide file tree
Showing 9 changed files with 102 additions and 4 deletions.
6 changes: 6 additions & 0 deletions docs/api/리뷰_생성_API.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,3 +24,9 @@
### Response

#### `Response Status 200 OK`

``` json
{
"id": "1234567890123"
}
```
22 changes: 19 additions & 3 deletions src/main/kotlin/me/misik/api/api/ReviewController.kt
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
package me.misik.api.api

import me.misik.api.api.response.ReviewResponse
import me.misik.api.domain.request.CreateReviewRequest
import me.misik.api.app.CreateReviewFacade
import me.misik.api.app.GetReviewFacade
import me.misik.api.app.ReCreateReviewFacade
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import me.misik.api.domain.ReviewStyle
import me.misik.api.domain.response.ReviewStylesResponse
import org.springframework.web.bind.annotation.*
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestHeader
import org.springframework.web.bind.annotation.RestController

@RestController
class ReviewController(
private val createReviewFacade: CreateReviewFacade,
private val getReviewFacade: GetReviewFacade,
private val reCreateReviewFacade: ReCreateReviewFacade,
) {

Expand All @@ -26,4 +29,17 @@ class ReviewController(
@RequestHeader("device-id") deviceId: String,
@PathVariable("id") id: Long,
) = reCreateReviewFacade.reCreateReviewInBackground(deviceId, id)

@GetMapping("reviews/styles")
fun getReviewStyles() : ReviewStylesResponse {
val reviewStyles = ReviewStyle.entries.toList()

return ReviewStylesResponse.from(reviewStyles)
}

@GetMapping("reviews/{id}")
fun getReview(
@PathVariable("id") id: Long,
): ReviewResponse = ReviewResponse.of(getReviewFacade.getReview(id))

}
18 changes: 18 additions & 0 deletions src/main/kotlin/me/misik/api/api/response/ReviewResponse.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package me.misik.api.api.response

import me.misik.api.domain.Review

data class ReviewResponse(
val isSuccess: Boolean,
val id: String,
val review: String,
) {

companion object {
fun of(review: Review): ReviewResponse = ReviewResponse(
isSuccess = review.isCompleted,
id = review.id.toString(),
review = review.text,
)
}
}
23 changes: 23 additions & 0 deletions src/main/kotlin/me/misik/api/app/GetReviewFacade.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package me.misik.api.app

import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withTimeout
import me.misik.api.core.GracefulShutdownDispatcher
import me.misik.api.domain.Review
import me.misik.api.domain.ReviewService
import org.springframework.stereotype.Component
import kotlin.time.Duration.Companion.seconds

@Component
class GetReviewFacade(
private val reviewService: ReviewService,
) {

fun getReview(id: Long): Review {
return runBlocking(GracefulShutdownDispatcher.dispatcher) {
withTimeout(60.seconds) {
reviewService.getReview(id)
}.get()
}
}
}
3 changes: 3 additions & 0 deletions src/main/kotlin/me/misik/api/domain/ReviewService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,7 @@ class ReviewService(
fun getById(id: Long): Review = reviewRepository.findByIdOrNull(id)
?: throw IllegalArgumentException("Cannot find review by id \"$id\"")


fun getReview(id: Long) = reviewRepository.findById(id)
?: throw IllegalArgumentException("Cannot find review by id \"$id\"")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package me.misik.api.domain.response

import me.misik.api.domain.ReviewStyle

data class ReviewStyleResponse(
val icon: String,
val style: String
) {
companion object {
fun from(reviewStyle: ReviewStyle): ReviewStyleResponse {
return ReviewStyleResponse(
icon = reviewStyle.iconUrl,
style = reviewStyle.name,
)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package me.misik.api.domain.response

import me.misik.api.domain.ReviewStyle

data class ReviewStylesResponse(
val reviewStyles: List<ReviewStyleResponse>
) {
companion object {
fun from(reviewStyles: List<ReviewStyle>) : ReviewStylesResponse {
return ReviewStylesResponse(
reviewStyles.map { ReviewStyleResponse.from(it) }
)
}
}
}
2 changes: 1 addition & 1 deletion src/main/resources/ddl/prompt.ddl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
INSERT INTO prompt (id, style, command, created_at, updated_at) VALUES
INSERT INTO prompt (id, style, command, created_at, modified_at) VALUES
(1, 'PROFESSIONAL', '자연스러운, 전문적인 말투, 존대말, 과거형으로 리뷰를 만들어줘. 응답 형식은 {“review”:”리뷰 내용”}이어야 해. 응답에는 해당 JSON만 있어야해. 또한, 리뷰는 공백을 포함해서 300자가 넘어야 해. 리뷰에는 다음 의견도 자연스럽게 넣어줘.', NOW(), NOW()),
(2, 'FRIENDLY', '~다, ~요를 적절히 섞은 높임말로 리뷰를 만들어줘. 한국 중년처럼 보이도록 가끔 문장 끝에 ..같은 특수문자를 넣어줘. 응답 형식은 {“review”:”리뷰 내용”}이어야 해. 응답에는 해당 JSON만 있어야해. 또한, 리뷰는 공백을 포함해서 100자 이상 200자 이하여야해. 리뷰에는 다음 의견도 자연스럽게 넣어줘.', NOW(), NOW()),
(3, 'CUTE', '~다, ~요를 적절히 섞은 높임말로 리뷰를 만들어줘. 깜찍한 10대처럼 보이도록 가끔 어미 뒤에 랜덤하게 😘, ㅎㅎ 같은 특수문자, "당, 용" 같이 끝나는 어미를 넣어줘. 응답 형식은 {"review":"리뷰 내용"}이어야 해. 응답에는 해당 JSON만 있어야 해. 또한, 리뷰는 공백을 포함해서 100자 이상 200자 이하여야 해. 리뷰에는 다음 의견도 자연스럽게 넣어줘.', NOW(), NOW());

0 comments on commit 2e11141

Please sign in to comment.