Big refactoring #77

Merged
flecomte merged 166 commits from refactoring-component-and-immutable into master 2021-03-24 19:06:07 +01:00
3 changed files with 13 additions and 24 deletions
Showing only changes of commit bc772f168f - Show all commits

View File

@@ -12,7 +12,6 @@ import net.pearx.kasechange.toSnakeCase
import java.util.UUID
import fr.dcproject.component.citizen.Citizen as CitizenEntity
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
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,...)
*/
abstract fun updateOpinions(opinions: List<OpinionForUpdate<*>>): List<OpinionEntity<T>>
fun updateOpinions(opinion: OpinionForUpdate<*>): List<OpinionEntity<T>> =
abstract fun updateOpinions(opinions: List<OpinionForUpdate<T>>): List<OpinionEntity<T>>
fun updateOpinions(opinion: OpinionForUpdate<T>): List<OpinionEntity<T>> =
updateOpinions(listOf(opinion))
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)
*/
override fun updateOpinions(opinions: List<OpinionForUpdate<*>>): List<OpinionArticleEntity> {
override fun updateOpinions(opinions: List<OpinionForUpdate<ArticleRef>>): List<OpinionEntity<ArticleRef>> {
return requester
/* TODO change SQL function to not use .first() and pass all createdBy and target */
.getFunction("update_citizen_opinions_by_target_id")
@@ -153,7 +152,7 @@ class OpinionRepositoryArticle(requester: Requester) : OpinionRepository<Article
/**
* Add Opinions on Article
*/
override fun addOpinion(opinion: OpinionForUpdate<ArticleRef>): OpinionArticleEntity {
override fun addOpinion(opinion: OpinionForUpdate<ArticleRef>): OpinionEntity<ArticleRef> {
return requester
.getFunction("upsert_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.TargetI
import fr.dcproject.common.entity.TargetRef
import fr.dcproject.component.article.ArticleRef
import fr.dcproject.component.citizen.CitizenBasic
import fr.dcproject.component.citizen.CitizenBasicI
import fr.dcproject.component.citizen.CitizenCreator
import fr.dcproject.component.citizen.CitizenCreatorI
import fr.dcproject.component.citizen.CitizenI
import fr.dcproject.component.citizen.CitizenRef
import java.util.UUID
@Deprecated("")
open class Opinion<T : TargetI>(
id: UUID = UUID.randomUUID(),
override val createdBy: CitizenBasic,
override val createdBy: CitizenCreator,
override val target: T,
val choice: OpinionChoice
) : OpinionRef(id),
ExtraI<T, CitizenBasicI>,
ExtraI<T, CitizenCreatorI>,
CreatedAt by CreatedAt.Imp(),
CreatedBy<CitizenBasicI> by CreatedBy.Imp(createdBy) {
CreatedBy<CitizenCreatorI> by CreatedBy.Imp(createdBy) {
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>(
override val id: UUID = UUID.randomUUID(),
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.component.article.ArticleForView
import fr.dcproject.component.auth.User
import fr.dcproject.component.auth.UserCreator
import fr.dcproject.component.auth.UserI
import fr.dcproject.component.citizen.CitizenBasic
import fr.dcproject.component.citizen.CitizenCart
import fr.dcproject.component.citizen.CitizenCreator
import fr.dcproject.component.citizen.CitizenI
import fr.dcproject.component.opinion.OpinionAccessControl
import fr.dcproject.component.opinion.entity.Opinion
@@ -25,12 +27,10 @@ import java.util.UUID
@Execution(CONCURRENT)
@Tags(Tag("security"), Tag("unit"))
internal class `Opinion Access Control` {
private val tesla = CitizenBasic(
user = User(
private val tesla = CitizenCreator(
user = UserCreator(
username = "nicolas-tesla",
roles = listOf(UserI.Roles.ROLE_USER)
),
birthday = DateTime.now(),
email = "tesla@best.com",
name = CitizenI.Name("Nicolas", "Tesla"),
followAnonymous = false