Fix comment voter

This commit is contained in:
2020-03-18 00:51:42 +01:00
parent 118193210b
commit a99eaf3eef
4 changed files with 18 additions and 19 deletions

View File

@@ -11,6 +11,7 @@ import fr.postgresjson.repository.RepositoryI
import java.util.*
import fr.dcproject.entity.Citizen as CitizenEntity
import fr.dcproject.entity.Comment as CommentEntity
import fr.dcproject.entity.Article as ArticleEntity
abstract class Comment<T : TargetI>(override var requester: Requester) : RepositoryI {
abstract fun findById(id: UUID): CommentEntity<T>?
@@ -68,7 +69,7 @@ abstract class Comment<T : TargetI>(override var requester: Requester) : Reposit
}
}
fun comment(comment: CommentEntity<T>) {
fun <I : T> comment(comment: CommentEntity<I>) {
requester
.getFunction("comment")
.sendQuery(
@@ -77,7 +78,7 @@ abstract class Comment<T : TargetI>(override var requester: Requester) : Reposit
)
}
fun edit(comment: CommentEntity<T>) {
fun <I : T> edit(comment: CommentEntity<I>) {
requester
.getFunction("edit_comment")
.sendQuery(
@@ -123,8 +124,8 @@ class CommentGeneric(requester: Requester) : Comment<TargetRef>(requester) {
}
}
class CommentArticle(requester: Requester) : Comment<ArticleRef>(requester) {
override fun findById(id: UUID): CommentEntity<ArticleRef>? {
class CommentArticle(requester: Requester) : Comment<ArticleEntity>(requester) {
override fun findById(id: UUID): CommentEntity<ArticleEntity>? {
return requester
.getFunction("find_comment_by_id")
.selectOne(mapOf("id" to id))
@@ -134,7 +135,7 @@ class CommentArticle(requester: Requester) : Comment<ArticleRef>(requester) {
citizen: CitizenEntity,
page: Int,
limit: Int
): Paginated<CommentEntity<ArticleRef>> {
): Paginated<CommentEntity<ArticleEntity>> {
return requester.run {
getFunction("find_comments_by_citizen")
.select(
@@ -150,19 +151,17 @@ class CommentArticle(requester: Requester) : Comment<ArticleRef>(requester) {
page: Int,
limit: Int,
sort: Sort
): Paginated<CommentEntity<ArticleRef>> {
return requester.run {
getFunction("find_comments_by_target")
.select(
page, limit,
"target_id" to target.id,
"sort" to sort.sql
)
}
}
): Paginated<CommentEntity<ArticleEntity>> = requester
.getFunction("find_comments_by_target")
.select(
page, limit,
"target_id" to target.id,
"sort" to sort.sql
)
enum class Sort(val sql: String) {
CREATED_AT("created_at"), VOTES("votes");
companion object {
fun fromString(string: String): Sort? {
return values().firstOrNull { it.sql == string }

View File

@@ -1,7 +1,7 @@
package fr.dcproject.routes
import fr.dcproject.citizen
import fr.dcproject.entity.ArticleRef
import fr.dcproject.entity.Article
import fr.dcproject.entity.Citizen
import fr.dcproject.repository.CommentArticle.Sort
import fr.dcproject.security.voter.CommentVoter.Action.CREATE
@@ -24,7 +24,7 @@ import fr.dcproject.repository.CommentArticle as CommentArticleRepository
object CommentArticlePaths {
@Location("/articles/{article}/comments")
class ArticleCommentRequest(
val article: ArticleRef,
val article: Article,
page: Int = 1,
limit: Int = 50,
val search: String? = null,