From 9d208292a531e41bba0316672ce212b66d6ce868 Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Tue, 24 Nov 2020 18:01:33 +0100 Subject: [PATCH] fix immutable entities --- .../entity/immutable/ImmutableEntity.kt | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/main/kotlin/fr/postgresjson/entity/immutable/ImmutableEntity.kt b/src/main/kotlin/fr/postgresjson/entity/immutable/ImmutableEntity.kt index d9d56b6..83529cc 100644 --- a/src/main/kotlin/fr/postgresjson/entity/immutable/ImmutableEntity.kt +++ b/src/main/kotlin/fr/postgresjson/entity/immutable/ImmutableEntity.kt @@ -1,10 +1,6 @@ package fr.postgresjson.entity.immutable import fr.postgresjson.entity.EntityI -import fr.postgresjson.entity.mutable.EntityDeletedAt -import fr.postgresjson.entity.mutable.EntityDeletedAtImp -import fr.postgresjson.entity.mutable.EntityDeletedBy -import fr.postgresjson.entity.mutable.EntityDeletedByImp import org.joda.time.DateTime import java.util.* @@ -37,7 +33,16 @@ interface EntityCreatedAt { val createdAt: DateTime } interface EntityUpdatedAt { - var updatedAt: DateTime + val updatedAt: DateTime +} + +interface EntityDeletedAt { + val deletedAt: DateTime? + fun isDeleted(): Boolean { + return deletedAt?.let { + it < DateTime.now() + } ?: false + } } class EntityCreatedAtImp( @@ -45,15 +50,23 @@ class EntityCreatedAtImp( ) : EntityCreatedAt class EntityUpdatedAtImp( - override var updatedAt: DateTime = DateTime.now() + override val updatedAt: DateTime = DateTime.now() ) : EntityUpdatedAt +class EntityDeletedAtImp( + override val deletedAt: DateTime? = null +) : EntityDeletedAt + /* Author */ interface EntityCreatedBy { val createdBy: T } interface EntityUpdatedBy { - var updatedBy: T + val updatedBy: T +} + +interface EntityDeletedBy { + val deletedBy: T? } class EntityCreatedByImp( @@ -61,9 +74,13 @@ class EntityCreatedByImp( ) : EntityCreatedBy class EntityUpdatedByImp( - override var updatedBy: UserT + override val updatedBy: UserT ) : EntityUpdatedBy +class EntityDeletedByImp( + override val deletedBy: UserT? +) : EntityDeletedBy + /* Mixed */ class EntityCreatedImp( override val createdAt: DateTime = DateTime.now(), @@ -73,7 +90,7 @@ class EntityCreatedImp( class EntityUpdatedImp( updatedAt: DateTime = DateTime.now(), - override var updatedBy: UserT + override val updatedBy: UserT ) : EntityUpdatedBy, EntityUpdatedAt by EntityUpdatedAtImp(updatedAt)