Split Entities for remove nullable variables
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package fr.dcproject.repository
|
||||
|
||||
import fr.dcproject.entity.ArticleFull
|
||||
import fr.dcproject.entity.ArticleSimple
|
||||
import fr.postgresjson.connexion.Paginated
|
||||
import fr.postgresjson.connexion.Requester
|
||||
import fr.postgresjson.entity.Parameter
|
||||
@@ -28,7 +30,7 @@ class Article(override var requester: Requester) : RepositoryI {
|
||||
direction: Direction? = null,
|
||||
search: String? = null,
|
||||
filter: Filter = Filter()
|
||||
): Paginated<ArticleEntity> {
|
||||
): Paginated<ArticleSimple> {
|
||||
return requester
|
||||
.getFunction("find_articles")
|
||||
.select(
|
||||
@@ -40,7 +42,7 @@ class Article(override var requester: Requester) : RepositoryI {
|
||||
)
|
||||
}
|
||||
|
||||
fun upsert(article: ArticleEntity): ArticleEntity? {
|
||||
fun upsert(article: ArticleFull): ArticleEntity? {
|
||||
return requester
|
||||
.getFunction("upsert_article")
|
||||
.selectOne("resource" to article)
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package fr.dcproject.repository
|
||||
|
||||
import fr.dcproject.entity.CitizenBasic
|
||||
import fr.dcproject.entity.CitizenFull
|
||||
import fr.dcproject.entity.UserI
|
||||
import fr.postgresjson.connexion.Paginated
|
||||
import fr.postgresjson.connexion.Requester
|
||||
import fr.postgresjson.repository.RepositoryI
|
||||
@@ -7,7 +10,6 @@ import fr.postgresjson.repository.RepositoryI.Direction
|
||||
import net.pearx.kasechange.toSnakeCase
|
||||
import java.util.*
|
||||
import fr.dcproject.entity.Citizen as CitizenEntity
|
||||
import fr.dcproject.entity.User as UserEntity
|
||||
|
||||
class Citizen(override var requester: Requester) : RepositoryI {
|
||||
fun findById(id: UUID, withUser: Boolean = false): CitizenEntity? {
|
||||
@@ -16,7 +18,7 @@ class Citizen(override var requester: Requester) : RepositoryI {
|
||||
.selectOne("id" to id)
|
||||
}
|
||||
|
||||
fun findByUser(user: UserEntity): CitizenEntity? {
|
||||
fun findByUser(user: UserI): CitizenEntity? {
|
||||
return requester
|
||||
.getFunction("find_citizen_by_user_id")
|
||||
.selectOne("user_id" to user.id)
|
||||
@@ -40,7 +42,7 @@ class Citizen(override var requester: Requester) : RepositoryI {
|
||||
sort: String? = null,
|
||||
direction: Direction? = null,
|
||||
search: String? = null
|
||||
): Paginated<CitizenEntity> {
|
||||
): Paginated<CitizenBasic> {
|
||||
return requester
|
||||
.getFunction("find_citizens")
|
||||
.select(
|
||||
@@ -51,13 +53,13 @@ class Citizen(override var requester: Requester) : RepositoryI {
|
||||
)
|
||||
}
|
||||
|
||||
fun upsert(citizen: CitizenEntity): CitizenEntity? {
|
||||
fun upsert(citizen: CitizenFull): CitizenEntity? {
|
||||
return requester
|
||||
.getFunction("upsert_citizen")
|
||||
.selectOne("resource" to citizen)
|
||||
}
|
||||
|
||||
fun insertWithUser(citizen: CitizenEntity): CitizenEntity? {
|
||||
fun insertWithUser(citizen: CitizenFull): CitizenEntity? {
|
||||
return requester
|
||||
.getFunction("insert_citizen_with_user")
|
||||
.selectOne("resource" to citizen)
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
package fr.dcproject.repository
|
||||
|
||||
import fr.dcproject.entity.ArticleRef
|
||||
import fr.dcproject.entity.TargetI
|
||||
import fr.dcproject.entity.TargetRef
|
||||
import fr.postgresjson.connexion.Paginated
|
||||
import fr.postgresjson.connexion.Requester
|
||||
import fr.postgresjson.entity.mutable.UuidEntity
|
||||
import fr.postgresjson.entity.immutable.UuidEntityI
|
||||
import fr.postgresjson.repository.RepositoryI
|
||||
import java.util.*
|
||||
import fr.dcproject.entity.Article as ArticleEntity
|
||||
import fr.dcproject.entity.Citizen as CitizenEntity
|
||||
import fr.dcproject.entity.Comment as CommentEntity
|
||||
import fr.dcproject.entity.Constitution as ConstitutionEntity
|
||||
|
||||
abstract class Comment <T : UuidEntity>(override var requester: Requester) : RepositoryI {
|
||||
abstract class Comment <T : TargetI>(override var requester: Requester) : RepositoryI {
|
||||
abstract fun findById(id: UUID): CommentEntity<T>?
|
||||
|
||||
abstract fun findByCitizen(
|
||||
@@ -24,7 +26,7 @@ abstract class Comment <T : UuidEntity>(override var requester: Requester) : Rep
|
||||
page: Int = 1,
|
||||
limit: Int = 50
|
||||
): Paginated<CommentEntity<T>> {
|
||||
return findByParent(parent.id ?: error("comment must have an ID"), page, limit)
|
||||
return findByParent(parent.id, page, limit)
|
||||
}
|
||||
|
||||
open fun findByParent(
|
||||
@@ -41,11 +43,11 @@ abstract class Comment <T : UuidEntity>(override var requester: Requester) : Rep
|
||||
}
|
||||
|
||||
open fun findByTarget(
|
||||
target: UuidEntity,
|
||||
target: UuidEntityI,
|
||||
page: Int = 1,
|
||||
limit: Int = 50
|
||||
): Paginated<CommentEntity<T>> {
|
||||
return findByTarget(target.id ?: error("comment must have an ID"), page, limit)
|
||||
return findByTarget(target.id, page, limit)
|
||||
}
|
||||
|
||||
open fun findByTarget(
|
||||
@@ -65,7 +67,7 @@ abstract class Comment <T : UuidEntity>(override var requester: Requester) : Rep
|
||||
requester
|
||||
.getFunction("comment")
|
||||
.sendQuery(
|
||||
"reference" to comment.targetReference,
|
||||
"reference" to comment.target.reference,
|
||||
"resource" to comment
|
||||
)
|
||||
}
|
||||
@@ -80,8 +82,8 @@ abstract class Comment <T : UuidEntity>(override var requester: Requester) : Rep
|
||||
}
|
||||
}
|
||||
|
||||
class CommentGeneric(requester: Requester) : Comment<UuidEntity>(requester) {
|
||||
override fun findById(id: UUID): CommentEntity<UuidEntity>? {
|
||||
class CommentGeneric(requester: Requester) : Comment<TargetRef>(requester) {
|
||||
override fun findById(id: UUID): CommentEntity<TargetRef>? {
|
||||
return requester
|
||||
.getFunction("find_comment_by_id")
|
||||
.selectOne(mapOf("id" to id))
|
||||
@@ -91,7 +93,7 @@ class CommentGeneric(requester: Requester) : Comment<UuidEntity>(requester) {
|
||||
citizen: CitizenEntity,
|
||||
page: Int,
|
||||
limit: Int
|
||||
): Paginated<CommentEntity<UuidEntity>> {
|
||||
): Paginated<CommentEntity<TargetRef>> {
|
||||
return requester.run {
|
||||
getFunction("find_comments_by_citizen")
|
||||
.select(page, limit,
|
||||
@@ -101,8 +103,8 @@ class CommentGeneric(requester: Requester) : Comment<UuidEntity>(requester) {
|
||||
}
|
||||
}
|
||||
|
||||
class CommentArticle(requester: Requester) : Comment<ArticleEntity>(requester) {
|
||||
override fun findById(id: UUID): CommentEntity<ArticleEntity>? {
|
||||
class CommentArticle(requester: Requester) : Comment<ArticleRef>(requester) {
|
||||
override fun findById(id: UUID): CommentEntity<ArticleRef>? {
|
||||
return requester
|
||||
.getFunction("find_comment_by_id")
|
||||
.selectOne(mapOf("id" to id))
|
||||
@@ -112,13 +114,12 @@ class CommentArticle(requester: Requester) : Comment<ArticleEntity>(requester) {
|
||||
citizen: CitizenEntity,
|
||||
page: Int,
|
||||
limit: Int
|
||||
): Paginated<CommentEntity<ArticleEntity>> {
|
||||
val reference = ArticleEntity::class.simpleName!!.toLowerCase()
|
||||
): Paginated<CommentEntity<ArticleRef>> {
|
||||
return requester.run {
|
||||
getFunction("find_comments_by_citizen")
|
||||
.select(page, limit,
|
||||
"created_by_id" to citizen.id,
|
||||
"reference" to reference
|
||||
"reference" to TargetI.getReference(ArticleRef::class)
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -136,12 +137,11 @@ class CommentConstitution(requester: Requester) : Comment<ConstitutionEntity>(re
|
||||
page: Int,
|
||||
limit: Int
|
||||
): Paginated<CommentEntity<ConstitutionEntity>> {
|
||||
val reference = ConstitutionEntity::class.simpleName!!.toLowerCase()
|
||||
return requester.run {
|
||||
getFunction("find_comments_by_citizen")
|
||||
.select(page, limit,
|
||||
"created_by_id" to citizen.id,
|
||||
"reference" to reference
|
||||
"reference" to TargetI.getReference(ConstitutionEntity::class)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package fr.dcproject.repository
|
||||
|
||||
import fr.dcproject.entity.ArticleRef
|
||||
import fr.dcproject.entity.CitizenSimple
|
||||
import fr.dcproject.entity.ConstitutionSimple
|
||||
import fr.postgresjson.connexion.Paginated
|
||||
import fr.postgresjson.connexion.Requester
|
||||
import fr.postgresjson.repository.RepositoryI
|
||||
@@ -31,7 +34,7 @@ class Constitution(override var requester: Requester) : RepositoryI {
|
||||
)
|
||||
}
|
||||
|
||||
fun upsert(constitution: ConstitutionEntity): ConstitutionEntity? {
|
||||
fun upsert(constitution: ConstitutionSimple<CitizenSimple, ConstitutionSimple.TitleSimple<ArticleRef>>): ConstitutionEntity? {
|
||||
return requester
|
||||
.getFunction("upsert_constitution")
|
||||
.selectOne("resource" to constitution)
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
package fr.dcproject.repository
|
||||
|
||||
import fr.dcproject.entity.CitizenI
|
||||
import fr.dcproject.entity.TargetI
|
||||
import fr.postgresjson.connexion.Paginated
|
||||
import fr.postgresjson.connexion.Requester
|
||||
import fr.postgresjson.entity.mutable.UuidEntity
|
||||
import fr.postgresjson.repository.RepositoryI
|
||||
import java.util.*
|
||||
import fr.dcproject.entity.Article as ArticleEntity
|
||||
import fr.dcproject.entity.Citizen as CitizenEntity
|
||||
import fr.dcproject.entity.Constitution as ConstitutionEntity
|
||||
import fr.dcproject.entity.Follow as FollowEntity
|
||||
|
||||
open class Follow <T : UuidEntity>(override var requester: Requester) : RepositoryI {
|
||||
open class Follow <T : TargetI>(override var requester: Requester) : RepositoryI {
|
||||
open fun findByCitizen(
|
||||
citizen: CitizenEntity,
|
||||
citizen: CitizenI,
|
||||
page: Int = 1,
|
||||
limit: Int = 50
|
||||
): Paginated<FollowEntity<T>> =
|
||||
findByCitizen(citizen.id ?: error("The citizen must have an id"), page, limit)
|
||||
findByCitizen(citizen.id, page, limit)
|
||||
|
||||
open fun findByCitizen(
|
||||
citizenId: UUID,
|
||||
@@ -32,24 +32,22 @@ open class Follow <T : UuidEntity>(override var requester: Requester) : Reposito
|
||||
}
|
||||
|
||||
fun follow(follow: FollowEntity<T>) {
|
||||
val reference = follow.target::class.simpleName!!.toLowerCase()
|
||||
requester
|
||||
.getFunction("follow")
|
||||
.sendQuery(
|
||||
"reference" to reference,
|
||||
"reference" to follow.target.reference,
|
||||
"target_id" to follow.target.id,
|
||||
"created_by_id" to follow.createdBy?.id
|
||||
"created_by_id" to follow.createdBy.id
|
||||
)
|
||||
}
|
||||
|
||||
fun unfollow(follow: FollowEntity<T>) {
|
||||
val reference = follow.target::class.simpleName!!.toLowerCase()
|
||||
requester
|
||||
.getFunction("unfollow")
|
||||
.sendQuery(
|
||||
"reference" to reference,
|
||||
"reference" to follow.target.reference,
|
||||
"target_id" to follow.target.id,
|
||||
"created_by_id" to follow.createdBy?.id
|
||||
"created_by_id" to follow.createdBy.id
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package fr.dcproject.repository
|
||||
|
||||
import fr.dcproject.entity.UserFull
|
||||
import fr.postgresjson.connexion.Requester
|
||||
import fr.postgresjson.repository.RepositoryI
|
||||
import io.ktor.auth.UserPasswordCredential
|
||||
@@ -30,7 +31,7 @@ class User(override var requester: Requester) : RepositoryI {
|
||||
.selectOne("resource" to user)
|
||||
}
|
||||
|
||||
fun changePassword(user: UserEntity) {
|
||||
fun changePassword(user: UserFull) {
|
||||
requester
|
||||
.getFunction("change_user_password")
|
||||
.sendQuery("resource" to user)
|
||||
|
||||
@@ -1,34 +1,25 @@
|
||||
package fr.dcproject.repository
|
||||
|
||||
import com.fasterxml.jackson.core.type.TypeReference
|
||||
import fr.dcproject.entity.*
|
||||
import fr.dcproject.entity.Article
|
||||
import fr.dcproject.entity.Comment
|
||||
import fr.dcproject.entity.Constitution
|
||||
import fr.dcproject.entity.VoteAggregation
|
||||
import fr.postgresjson.connexion.Paginated
|
||||
import fr.postgresjson.connexion.Requester
|
||||
import fr.postgresjson.entity.mutable.UuidEntity
|
||||
import fr.postgresjson.repository.RepositoryI
|
||||
import java.util.*
|
||||
import fr.dcproject.entity.Citizen as CitizenEntity
|
||||
import fr.dcproject.entity.Vote as VoteEntity
|
||||
|
||||
open class Vote <T : UuidEntity>(override var requester: Requester) : RepositoryI {
|
||||
open class Vote <T : TargetI>(override var requester: Requester) : RepositoryI {
|
||||
fun vote(vote: VoteEntity<T>): VoteAggregation {
|
||||
val target = vote.target
|
||||
val reference = if (target is Comment<*>) {
|
||||
target::class.simpleName!!.toLowerCase() +
|
||||
"_on_" +
|
||||
target.targetReference
|
||||
} else {
|
||||
target::class.simpleName!!.toLowerCase()
|
||||
}
|
||||
val author = vote.createdBy ?: error("vote must be contain an author")
|
||||
val author = vote.createdBy
|
||||
val anonymous = author.voteAnonymous
|
||||
return requester
|
||||
.getFunction("vote")
|
||||
.selectOne(
|
||||
"reference" to reference,
|
||||
"reference" to vote.target.reference,
|
||||
"target_id" to vote.target.id,
|
||||
"note" to vote.note,
|
||||
"created_by_id" to author.id,
|
||||
@@ -56,12 +47,11 @@ open class Vote <T : UuidEntity>(override var requester: Requester) : Repository
|
||||
citizen: CitizenEntity,
|
||||
targets: List<UUID>
|
||||
): List<VoteEntity<*>> {
|
||||
val typeReference = object : TypeReference<List<VoteEntity<UuidEntity>>>() {}
|
||||
val typeReference = object : TypeReference<List<VoteEntity<TargetRef>>>() {}
|
||||
return requester.run {
|
||||
val citizenId = citizen.id ?: error("The citizen must have an id")
|
||||
getFunction("find_citizen_votes_by_target_ids")
|
||||
.select(typeReference, mapOf(
|
||||
"citizen_id" to citizenId,
|
||||
"citizen_id" to citizen.id,
|
||||
"ids" to targets
|
||||
))
|
||||
}
|
||||
@@ -75,7 +65,7 @@ class VoteArticle(requester: Requester) : Vote<Article>(requester) {
|
||||
limit: Int = 50
|
||||
): Paginated<VoteEntity<Article>> =
|
||||
findByCitizen(
|
||||
citizen.id ?: error("The citizen must have an id"),
|
||||
citizen.id,
|
||||
"article",
|
||||
object : TypeReference<List<VoteEntity<Article>>>() {},
|
||||
page,
|
||||
@@ -90,7 +80,7 @@ class VoteArticleComment(requester: Requester) : Vote<Comment<Article>>(requeste
|
||||
limit: Int = 50
|
||||
): Paginated<VoteEntity<Comment<Article>>> =
|
||||
findByCitizen(
|
||||
citizen.id ?: error("The citizen must have an id"),
|
||||
citizen.id,
|
||||
"article",
|
||||
object : TypeReference<List<VoteEntity<Comment<Article>>>>() {},
|
||||
page,
|
||||
@@ -98,16 +88,16 @@ class VoteArticleComment(requester: Requester) : Vote<Comment<Article>>(requeste
|
||||
)
|
||||
}
|
||||
|
||||
class VoteComment(requester: Requester) : Vote<Comment<UuidEntity>>(requester) {
|
||||
class VoteComment(requester: Requester) : Vote<Comment<TargetRef>>(requester) {
|
||||
fun findByCitizen(
|
||||
citizen: CitizenEntity,
|
||||
page: Int = 1,
|
||||
limit: Int = 50
|
||||
): Paginated<VoteEntity<Comment<UuidEntity>>> =
|
||||
): Paginated<VoteEntity<Comment<TargetRef>>> =
|
||||
findByCitizen(
|
||||
citizen.id ?: error("The citizen must have an id"),
|
||||
citizen.id,
|
||||
"article",
|
||||
object : TypeReference<List<VoteEntity<Comment<UuidEntity>>>>() {},
|
||||
object : TypeReference<List<VoteEntity<Comment<TargetRef>>>>() {},
|
||||
page,
|
||||
limit
|
||||
)
|
||||
@@ -120,7 +110,7 @@ class VoteConstitution(requester: Requester) : Vote<Constitution>(requester) {
|
||||
limit: Int = 50
|
||||
): Paginated<VoteEntity<Constitution>> =
|
||||
findByCitizen(
|
||||
citizen.id ?: error("The citizen must have an id"),
|
||||
citizen.id,
|
||||
"constitution",
|
||||
object : TypeReference<List<VoteEntity<Constitution>>>() {},
|
||||
page,
|
||||
|
||||
Reference in New Issue
Block a user