From 5023f229cadf572dbc677b8ba50cf3bd56ca4745 Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Fri, 10 Jul 2020 17:24:35 +0200 Subject: [PATCH] Generate UUID if null is defined as ID --- .../postgresjson/entity/immutable/ImmutableEntity.kt | 8 +++++--- .../fr/postgresjson/entity/mutable/MutableEntity.kt | 10 ++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/fr/postgresjson/entity/immutable/ImmutableEntity.kt b/src/main/kotlin/fr/postgresjson/entity/immutable/ImmutableEntity.kt index b4849b4..9952c51 100644 --- a/src/main/kotlin/fr/postgresjson/entity/immutable/ImmutableEntity.kt +++ b/src/main/kotlin/fr/postgresjson/entity/immutable/ImmutableEntity.kt @@ -17,7 +17,7 @@ interface UuidEntityI : EntityRefI { } abstract class Entity(override val id: T) : EntityRefI -open class UuidEntity(override val id: UUID = UUID.randomUUID()) : UuidEntityI, Entity(id) +open class UuidEntity(id: UUID? = null) : UuidEntityI, Entity(id ?: UUID.randomUUID()) /* Version */ interface EntityVersioning { @@ -27,8 +27,10 @@ interface EntityVersioning { class UuidEntityVersioning( override var versionNumber: Int? = null, - override val versionId: UUID = UUID.randomUUID() -) : EntityVersioning + versionId: UUID? = null +) : EntityVersioning { + override val versionId: UUID = versionId ?: UUID.randomUUID() +} /* Dates */ interface EntityCreatedAt { diff --git a/src/main/kotlin/fr/postgresjson/entity/mutable/MutableEntity.kt b/src/main/kotlin/fr/postgresjson/entity/mutable/MutableEntity.kt index 155cf6a..ee7edf3 100644 --- a/src/main/kotlin/fr/postgresjson/entity/mutable/MutableEntity.kt +++ b/src/main/kotlin/fr/postgresjson/entity/mutable/MutableEntity.kt @@ -17,7 +17,7 @@ interface IdEntityI : EntityRefI { } abstract class Entity(override var id: T? = null) : EntityRefI -open class UuidEntity(override var id: UUID? = UUID.randomUUID()) : UuidEntityI, Entity(id) +open class UuidEntity(id: UUID? = null) : UuidEntityI, Entity(id ?: UUID.randomUUID()) open class IdEntity(override var id: Int? = null) : IdEntityI, Entity(id) /* Version */ @@ -28,8 +28,10 @@ interface EntityVersioning { class UuidEntityVersioning( override var versionNumber: Int? = null, - override var versionId: UUID = UUID.randomUUID() -) : EntityVersioning + versionId: UUID? = null +) : EntityVersioning { + override var versionId: UUID = versionId ?: UUID.randomUUID() +} /* Dates */ interface EntityCreatedAt { @@ -131,5 +133,5 @@ abstract class UuidEntityExtended( publishedBy: UserT? ) : EntityImp(updatedBy), - EntityVersioning by UuidEntityVersioning(), + EntityVersioning by UuidEntityVersioning(), Published by EntityPublishedImp(publishedBy)