Add consumer for Notification

This commit is contained in:
2020-02-24 20:44:37 +01:00
parent af33ed9ec3
commit b678f7f2cc
14 changed files with 192 additions and 47 deletions

View File

@@ -37,15 +37,19 @@ open class CitizenSimple(
id: UUID = UUID.randomUUID(),
var name: Name,
user: UserRef
) : CitizenRef(id, user)
) : CitizenRefWithUser(id, user)
open class CitizenRef(
open class CitizenRefWithUser(
id: UUID = UUID.randomUUID(),
open val user: UserRef
) : UuidEntity(id),
CitizenI,
) : CitizenRef(id),
EntityDeletedAt by EntityDeletedAtImp()
open class CitizenRef(
id: UUID = UUID.randomUUID()
) : UuidEntity(id),
CitizenI
interface CitizenI : UuidEntityI {
data class Name(
var firstName: String,

View File

@@ -14,7 +14,7 @@ open class Comment<T : TargetI>(
var parent: Comment<T>? = null,
val parentsIds: List<UUID>? = null,
val childrenCount: Int? = null
) : ExtraI<T>,
) : ExtraI<T, CitizenBasicI>,
CommentRef(id),
EntityCreatedAt by EntityCreatedAtImp(),
EntityCreatedBy<CitizenBasicI> by EntityCreatedByImp(createdBy),

View File

@@ -31,7 +31,7 @@ class Constitution(
) : ConstitutionSimple.TitleSimple<ArticleSimple>(id, name, rank)
}
open class ConstitutionSimple<Cr : CitizenRef, T : ConstitutionSimple.TitleSimple<*>>(
open class ConstitutionSimple<Cr : CitizenRefWithUser, T : ConstitutionSimple.TitleSimple<*>>(
id: UUID = UUID.randomUUID(),
var title: String,
var anonymous: Boolean = true,

View File

@@ -8,18 +8,21 @@ import java.util.*
import kotlin.reflect.KClass
import kotlin.reflect.full.isSubclassOf
interface ExtraI<T : TargetI> :
interface ExtraI<T : TargetI, C: CitizenI> :
UuidEntityI,
EntityCreatedAt,
EntityCreatedBy<CitizenBasicI> {
EntityCreatedBy<C> {
val target: T
}
open class TargetRef(id: UUID = UUID.randomUUID()) : TargetI, UuidEntity(id) {
override val reference: String = ""
get() {
return if (field != "") field else TargetI.getReference(this)
}
open class TargetRef(id: UUID = UUID.randomUUID(), reference: String = "") : TargetI, UuidEntity(id) {
final override val reference: String
get() = if (field != "") field else TargetI.getReference(this)
init {
this.reference = reference
}
}
interface TargetI : UuidEntityI {
@@ -43,7 +46,7 @@ interface TargetI : UuidEntityI {
fun getReference(t: TargetI): String {
val ref = this.getReference(t::class)
return if (t is ExtraI<*>) {
return if (t is ExtraI<*, *>) {
"${ref}_on_${t.target.reference}"
} else {
ref

View File

@@ -7,7 +7,14 @@ class Follow<T : TargetI>(
id: UUID = UUID.randomUUID(),
override val createdBy: CitizenBasic,
override var target: T
) : ExtraI<T>,
) : ExtraI<T, CitizenBasicI>,
FollowSimple<T, CitizenBasicI>(id, createdBy, target)
open class FollowSimple<T : TargetI, C: CitizenI>(
id: UUID = UUID.randomUUID(),
override val createdBy: C,
override var target: T
) : ExtraI<T, C>,
UuidEntity(id),
EntityCreatedAt by EntityCreatedAtImp(),
EntityCreatedBy<CitizenBasicI> by EntityCreatedByImp(createdBy)
EntityCreatedBy<C> by EntityCreatedByImp(createdBy)

View File

@@ -11,7 +11,7 @@ open class Opinion<T : TargetI>(
override val createdBy: CitizenBasic,
override val target: T,
val choice: OpinionChoice
) : ExtraI<T>,
) : ExtraI<T,CitizenBasicI>,
TargetRef(id),
EntityCreatedAt by EntityCreatedAtImp(),
EntityCreatedBy<CitizenBasicI> by EntityCreatedByImp(createdBy) {

View File

@@ -9,7 +9,7 @@ open class Vote<T : TargetI>(
override var target: T,
var note: Int,
var anonymous: Boolean = true
) : ExtraI<T>,
) : ExtraI<T, CitizenBasicI>,
UuidEntity(id),
EntityCreatedAt by EntityCreatedAtImp(),
EntityCreatedBy<CitizenBasicI> by EntityCreatedByImp(createdBy),