Split Entities for remove nullable variables

This commit is contained in:
2020-01-28 11:08:43 +01:00
parent 3cdd1f3a46
commit 813d6857e9
52 changed files with 569 additions and 287 deletions

View File

@@ -1,24 +1,68 @@
package fr.dcproject.entity
import fr.postgresjson.entity.mutable.*
import fr.dcproject.entity.CitizenI.Name
import fr.postgresjson.entity.immutable.EntityCreatedAt
import fr.postgresjson.entity.immutable.EntityCreatedAtImp
import fr.postgresjson.entity.immutable.UuidEntity
import fr.postgresjson.entity.immutable.UuidEntityI
import fr.postgresjson.entity.mutable.EntityDeletedAt
import fr.postgresjson.entity.mutable.EntityDeletedAtImp
import org.joda.time.DateTime
import java.util.*
class Citizen(
id: UUID = UUID.randomUUID(),
var name: Name?,
var email: String?,
var birthday: DateTime?,
var userId: UUID? = null,
var voteAnonymous: Boolean = true,
var followAnonymous: Boolean = true,
var user: User?
name: Name,
email: String,
birthday: DateTime,
voteAnonymous: Boolean = true,
followAnonymous: Boolean = true,
override val user: User
) : CitizenFull,
CitizenBasic(id, name, email, birthday, voteAnonymous, followAnonymous, user),
EntityCreatedAt by EntityCreatedAtImp()
open class CitizenBasic(
id: UUID = UUID.randomUUID(),
name: Name,
override var email: String,
override var birthday: DateTime,
override var voteAnonymous: Boolean = true,
override var followAnonymous: Boolean = true,
user: UserRef
) : CitizenBasicI,
CitizenSimple(id, name, user)
open class CitizenSimple(
id: UUID = UUID.randomUUID(),
var name: Name,
user: UserRef
) : CitizenRef(id, user)
open class CitizenRef(
id: UUID = UUID.randomUUID(),
open val user: UserRef
) : UuidEntity(id),
EntityCreatedAt by EntityCreatedAtImp(),
EntityDeletedAt by EntityDeletedAtImp() {
CitizenI,
EntityDeletedAt by EntityDeletedAtImp()
interface CitizenI : UuidEntityI {
data class Name(
var firstName: String?,
var lastName: String?,
var firstName: String,
var lastName: String,
var civility: String? = null
)
}
}
interface CitizenBasicI : CitizenI, EntityDeletedAt {
var name: Name
var email: String
var birthday: DateTime
var voteAnonymous: Boolean
var followAnonymous: Boolean
val user: UserI
}
interface CitizenFull : CitizenBasicI {
override val user: User
}