#68 Clean opinion Entity

This commit is contained in:
2021-03-02 00:53:02 +01:00
parent 8d93fc8b3c
commit bc772f168f
3 changed files with 13 additions and 24 deletions

View File

@@ -12,7 +12,6 @@ import net.pearx.kasechange.toSnakeCase
import java.util.UUID import java.util.UUID
import fr.dcproject.component.citizen.Citizen as CitizenEntity import fr.dcproject.component.citizen.Citizen as CitizenEntity
import fr.dcproject.component.opinion.entity.Opinion as OpinionEntity import fr.dcproject.component.opinion.entity.Opinion as OpinionEntity
import fr.dcproject.component.opinion.entity.OpinionArticle as OpinionArticleEntity
import fr.dcproject.component.opinion.entity.OpinionChoice as OpinionChoiceEntity import fr.dcproject.component.opinion.entity.OpinionChoice as OpinionChoiceEntity
open class OpinionChoiceRepository(override val requester: Requester) : RepositoryI { open class OpinionChoiceRepository(override val requester: Requester) : RepositoryI {
@@ -66,8 +65,8 @@ abstract class OpinionRepository<T : TargetRef>(requester: Requester) : OpinionC
/** /**
* Create an Opinion on target (article,...) * Create an Opinion on target (article,...)
*/ */
abstract fun updateOpinions(opinions: List<OpinionForUpdate<*>>): List<OpinionEntity<T>> abstract fun updateOpinions(opinions: List<OpinionForUpdate<T>>): List<OpinionEntity<T>>
fun updateOpinions(opinion: OpinionForUpdate<*>): List<OpinionEntity<T>> = fun updateOpinions(opinion: OpinionForUpdate<T>): List<OpinionEntity<T>> =
updateOpinions(listOf(opinion)) updateOpinions(listOf(opinion))
abstract fun addOpinion(opinion: OpinionForUpdate<T>): OpinionEntity<T> abstract fun addOpinion(opinion: OpinionForUpdate<T>): OpinionEntity<T>
@@ -138,7 +137,7 @@ class OpinionRepositoryArticle(requester: Requester) : OpinionRepository<Article
/** /**
* Update Opinions on Article (Delete old one) * Update Opinions on Article (Delete old one)
*/ */
override fun updateOpinions(opinions: List<OpinionForUpdate<*>>): List<OpinionArticleEntity> { override fun updateOpinions(opinions: List<OpinionForUpdate<ArticleRef>>): List<OpinionEntity<ArticleRef>> {
return requester return requester
/* TODO change SQL function to not use .first() and pass all createdBy and target */ /* TODO change SQL function to not use .first() and pass all createdBy and target */
.getFunction("update_citizen_opinions_by_target_id") .getFunction("update_citizen_opinions_by_target_id")
@@ -153,7 +152,7 @@ class OpinionRepositoryArticle(requester: Requester) : OpinionRepository<Article
/** /**
* Add Opinions on Article * Add Opinions on Article
*/ */
override fun addOpinion(opinion: OpinionForUpdate<ArticleRef>): OpinionArticleEntity { override fun addOpinion(opinion: OpinionForUpdate<ArticleRef>): OpinionEntity<ArticleRef> {
return requester return requester
.getFunction("upsert_opinion") .getFunction("upsert_opinion")
.selectOne("resource" to opinion)!! .selectOne("resource" to opinion)!!

View File

@@ -7,35 +7,25 @@ import fr.dcproject.common.entity.ExtraI
import fr.dcproject.common.entity.HasTarget import fr.dcproject.common.entity.HasTarget
import fr.dcproject.common.entity.TargetI import fr.dcproject.common.entity.TargetI
import fr.dcproject.common.entity.TargetRef import fr.dcproject.common.entity.TargetRef
import fr.dcproject.component.article.ArticleRef import fr.dcproject.component.citizen.CitizenCreator
import fr.dcproject.component.citizen.CitizenBasic import fr.dcproject.component.citizen.CitizenCreatorI
import fr.dcproject.component.citizen.CitizenBasicI
import fr.dcproject.component.citizen.CitizenI import fr.dcproject.component.citizen.CitizenI
import fr.dcproject.component.citizen.CitizenRef import fr.dcproject.component.citizen.CitizenRef
import java.util.UUID import java.util.UUID
@Deprecated("")
open class Opinion<T : TargetI>( open class Opinion<T : TargetI>(
id: UUID = UUID.randomUUID(), id: UUID = UUID.randomUUID(),
override val createdBy: CitizenBasic, override val createdBy: CitizenCreator,
override val target: T, override val target: T,
val choice: OpinionChoice val choice: OpinionChoice
) : OpinionRef(id), ) : OpinionRef(id),
ExtraI<T, CitizenBasicI>, ExtraI<T, CitizenCreatorI>,
CreatedAt by CreatedAt.Imp(), CreatedAt by CreatedAt.Imp(),
CreatedBy<CitizenBasicI> by CreatedBy.Imp(createdBy) { CreatedBy<CitizenCreatorI> by CreatedBy.Imp(createdBy) {
fun getName(): String = choice.name fun getName(): String = choice.name
} }
@Deprecated("")
class OpinionArticle(
id: UUID = UUID.randomUUID(),
createdBy: CitizenBasic,
target: ArticleRef,
choice: OpinionChoice
) : Opinion<ArticleRef>(id, createdBy, target, choice)
data class OpinionForUpdate<T : TargetI>( data class OpinionForUpdate<T : TargetI>(
override val id: UUID = UUID.randomUUID(), override val id: UUID = UUID.randomUUID(),
override val target: T, override val target: T,

View File

@@ -4,9 +4,11 @@ import fr.dcproject.common.security.AccessDecision.DENIED
import fr.dcproject.common.security.AccessDecision.GRANTED import fr.dcproject.common.security.AccessDecision.GRANTED
import fr.dcproject.component.article.ArticleForView import fr.dcproject.component.article.ArticleForView
import fr.dcproject.component.auth.User import fr.dcproject.component.auth.User
import fr.dcproject.component.auth.UserCreator
import fr.dcproject.component.auth.UserI import fr.dcproject.component.auth.UserI
import fr.dcproject.component.citizen.CitizenBasic import fr.dcproject.component.citizen.CitizenBasic
import fr.dcproject.component.citizen.CitizenCart import fr.dcproject.component.citizen.CitizenCart
import fr.dcproject.component.citizen.CitizenCreator
import fr.dcproject.component.citizen.CitizenI import fr.dcproject.component.citizen.CitizenI
import fr.dcproject.component.opinion.OpinionAccessControl import fr.dcproject.component.opinion.OpinionAccessControl
import fr.dcproject.component.opinion.entity.Opinion import fr.dcproject.component.opinion.entity.Opinion
@@ -25,12 +27,10 @@ import java.util.UUID
@Execution(CONCURRENT) @Execution(CONCURRENT)
@Tags(Tag("security"), Tag("unit")) @Tags(Tag("security"), Tag("unit"))
internal class `Opinion Access Control` { internal class `Opinion Access Control` {
private val tesla = CitizenBasic( private val tesla = CitizenCreator(
user = User( user = UserCreator(
username = "nicolas-tesla", username = "nicolas-tesla",
roles = listOf(UserI.Roles.ROLE_USER)
), ),
birthday = DateTime.now(),
email = "tesla@best.com", email = "tesla@best.com",
name = CitizenI.Name("Nicolas", "Tesla"), name = CitizenI.Name("Nicolas", "Tesla"),
followAnonymous = false followAnonymous = false