add EntityDeletedBy & EntityDeletedAt

This commit is contained in:
2019-08-30 15:14:54 +02:00
parent 215c054f27
commit 2f9f397f50

View File

@@ -36,6 +36,14 @@ interface EntityUpdatedAt {
var updatedAt: DateTime?
}
interface EntityDeletedAt {
var deletedAt: DateTime?
fun isDeleted(): Boolean {
val deletedAt = deletedAt
return deletedAt != null && deletedAt < DateTime.now()
}
}
class EntityCreatedAtImp: EntityCreatedAt {
override var createdAt: DateTime? = null
}
@@ -44,6 +52,10 @@ class EntityUpdatedAtImp: EntityUpdatedAt {
override var updatedAt: DateTime? = null
}
class EntityDeletedAtImp: EntityDeletedAt {
override var deletedAt: DateTime? = null
}
/* Author */
interface EntityCreatedBy<T: EntityI<*>> {
var createdBy: T?
@@ -53,6 +65,10 @@ interface EntityUpdatedBy<T: EntityI<*>> {
var updatedBy: T?
}
interface EntityDeletedBy<T: EntityI<*>> {
var deletedBy: T?
}
class EntityCreatedByImp<UserT: EntityI<*>>(
override var createdBy: UserT?
): EntityCreatedBy<UserT>
@@ -61,6 +77,28 @@ class EntityUpdatedByImp<UserT: EntityI<*>>(
override var updatedBy: UserT?
): EntityUpdatedBy<UserT>
class EntityDeletedByImp<UserT: EntityI<*>>(
override var deletedBy: UserT?
): EntityDeletedBy<UserT>
/* Mixed */
class EntityDeletedImp<UserT: EntityI<*>>(
override var deletedBy: UserT? = null
): EntityDeletedBy<UserT>,
EntityDeletedAt by EntityDeletedAtImp()
class EntityUpdatedImp<UserT: EntityI<*>>(
override var updatedAt: DateTime? = null,
override var updatedBy: UserT? = null
): EntityUpdatedBy<UserT>,
EntityUpdatedAt by EntityUpdatedAtImp()
class EntityCreatedImp<UserT: EntityI<*>>(
override var createdAt: DateTime? = null,
override var createdBy: UserT? = null
): EntityCreatedBy<UserT>,
EntityCreatedAt by EntityCreatedAtImp()
/* Published */
interface Published<UserT: EntityI<*>> {
var publishedAt: DateTime?
@@ -79,8 +117,10 @@ abstract class EntityImp<T, UserT: EntityI<*>>(
): Entity<T>(),
EntityCreatedAt by EntityCreatedAtImp(),
EntityUpdatedAt by EntityUpdatedAtImp(),
EntityDeletedAt by EntityDeletedAtImp(),
EntityCreatedBy<UserT> by EntityCreatedByImp(updatedBy),
EntityUpdatedBy<UserT> by EntityUpdatedByImp(updatedBy)
EntityUpdatedBy<UserT> by EntityUpdatedByImp(updatedBy),
EntityDeletedBy<UserT> by EntityDeletedByImp(updatedBy)
abstract class UuidEntityExtended<T, UserT: EntityI<*>>(
updatedBy: UserT?,