diff --git a/src/main/kotlin/fr/dcproject/component/comment/generic/routes/GetCommentChildren.kt b/src/main/kotlin/fr/dcproject/component/comment/generic/routes/GetCommentChildren.kt index cb65ad0..ab5fb68 100644 --- a/src/main/kotlin/fr/dcproject/component/comment/generic/routes/GetCommentChildren.kt +++ b/src/main/kotlin/fr/dcproject/component/comment/generic/routes/GetCommentChildren.kt @@ -1,5 +1,6 @@ package fr.dcproject.component.comment.generic.routes +import fr.dcproject.common.dto.toOutput import fr.dcproject.common.security.assert import fr.dcproject.component.auth.citizenOrNull import fr.dcproject.component.comment.generic.CommentAccessControl @@ -13,6 +14,7 @@ import io.ktor.locations.Location import io.ktor.locations.get import io.ktor.response.respond import io.ktor.routing.Route +import org.joda.time.DateTime import java.util.UUID @KtorExperimentalLocationsAPI @@ -36,7 +38,54 @@ object GetCommentChildren { ac.assert { canView(comments.result, citizenOrNull) } - call.respond(HttpStatusCode.OK, comments) + call.respond( + HttpStatusCode.OK, + comments.toOutput { comment -> + object { + val id: UUID = comment.id + val content: String = comment.content + val childrenCount: Int = comment.childrenCount ?: 0 + val createdAt: DateTime = comment.createdAt + val parent: Any? = comment.parent?.let { p -> + object { + val id: UUID = p.id + val reference: String = p.reference + } + } + val target: Any = comment.target.let { t -> + object { + val id: UUID = t.id + val reference: String = t.reference + } + } + val createdBy: Any = comment.createdBy.let { c -> + object { + val id: UUID = c.id + val name: Any = c.name.let { n -> + object { + val firstName: String = n.firstName + val lastName: String = n.lastName + } + } + val user: Any = c.user.let { u -> + object { + val username: String = u.username + } + } + } + } + val votes: Any = comment.votes.let { v -> + object { + val up: Int = v.up + val neutral: Int = v.neutral + val down: Int = v.down + val total: Int = v.total + val score: Int = v.score + } + } + } + } + ) } } } diff --git a/src/main/resources/openapi2.yaml b/src/main/resources/openapi2.yaml index c325996..e692426 100644 --- a/src/main/resources/openapi2.yaml +++ b/src/main/resources/openapi2.yaml @@ -573,6 +573,27 @@ paths: $ref: '#/components/schemas/CommentResponse' 401: $ref: '#/components/responses/401' + /comments/{comment}/children: + parameters: + - $ref: '#/components/parameters/comment' + get: + summary: Get Comment children by Comment ID + tags: + - comment + responses: + 200: + description: Return Comment children + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/Paginated' + - type: object + properties: + result: + type: array + items: + $ref: '#/components/schemas/CommentResponse' /citizens/{citizen}/comments/articles: parameters: - $ref: '#/components/parameters/citizen'