Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9d208292a5 | |||
| 8bb3b61f2d | |||
| 5023f229ca |
@@ -1,10 +1,6 @@
|
|||||||
package fr.postgresjson.entity.immutable
|
package fr.postgresjson.entity.immutable
|
||||||
|
|
||||||
import fr.postgresjson.entity.EntityI
|
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 org.joda.time.DateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@@ -17,7 +13,7 @@ interface UuidEntityI : EntityRefI<UUID> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract class Entity<T>(override val id: T) : EntityRefI<T>
|
abstract class Entity<T>(override val id: T) : EntityRefI<T>
|
||||||
open class UuidEntity(override val id: UUID = UUID.randomUUID()) : UuidEntityI, Entity<UUID>(id)
|
open class UuidEntity(id: UUID? = null) : UuidEntityI, Entity<UUID>(id ?: UUID.randomUUID())
|
||||||
|
|
||||||
/* Version */
|
/* Version */
|
||||||
interface EntityVersioning<ID, NUMBER> {
|
interface EntityVersioning<ID, NUMBER> {
|
||||||
@@ -26,16 +22,27 @@ interface EntityVersioning<ID, NUMBER> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class UuidEntityVersioning(
|
class UuidEntityVersioning(
|
||||||
override var versionNumber: Int? = null,
|
override val versionNumber: Int,
|
||||||
override val versionId: UUID = UUID.randomUUID()
|
versionId: UUID? = null
|
||||||
) : EntityVersioning<UUID, Int?>
|
) : EntityVersioning<UUID, Int> {
|
||||||
|
override val versionId: UUID = versionId ?: UUID.randomUUID()
|
||||||
|
}
|
||||||
|
|
||||||
/* Dates */
|
/* Dates */
|
||||||
interface EntityCreatedAt {
|
interface EntityCreatedAt {
|
||||||
val createdAt: DateTime
|
val createdAt: DateTime
|
||||||
}
|
}
|
||||||
interface EntityUpdatedAt {
|
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(
|
class EntityCreatedAtImp(
|
||||||
@@ -43,15 +50,23 @@ class EntityCreatedAtImp(
|
|||||||
) : EntityCreatedAt
|
) : EntityCreatedAt
|
||||||
|
|
||||||
class EntityUpdatedAtImp(
|
class EntityUpdatedAtImp(
|
||||||
override var updatedAt: DateTime = DateTime.now()
|
override val updatedAt: DateTime = DateTime.now()
|
||||||
) : EntityUpdatedAt
|
) : EntityUpdatedAt
|
||||||
|
|
||||||
|
class EntityDeletedAtImp(
|
||||||
|
override val deletedAt: DateTime? = null
|
||||||
|
) : EntityDeletedAt
|
||||||
|
|
||||||
/* Author */
|
/* Author */
|
||||||
interface EntityCreatedBy<T : EntityI> {
|
interface EntityCreatedBy<T : EntityI> {
|
||||||
val createdBy: T
|
val createdBy: T
|
||||||
}
|
}
|
||||||
interface EntityUpdatedBy<T : EntityI> {
|
interface EntityUpdatedBy<T : EntityI> {
|
||||||
var updatedBy: T
|
val updatedBy: T
|
||||||
|
}
|
||||||
|
|
||||||
|
interface EntityDeletedBy<T : EntityI> {
|
||||||
|
val deletedBy: T?
|
||||||
}
|
}
|
||||||
|
|
||||||
class EntityCreatedByImp<UserT : EntityI>(
|
class EntityCreatedByImp<UserT : EntityI>(
|
||||||
@@ -59,9 +74,13 @@ class EntityCreatedByImp<UserT : EntityI>(
|
|||||||
) : EntityCreatedBy<UserT>
|
) : EntityCreatedBy<UserT>
|
||||||
|
|
||||||
class EntityUpdatedByImp<UserT : EntityI>(
|
class EntityUpdatedByImp<UserT : EntityI>(
|
||||||
override var updatedBy: UserT
|
override val updatedBy: UserT
|
||||||
) : EntityUpdatedBy<UserT>
|
) : EntityUpdatedBy<UserT>
|
||||||
|
|
||||||
|
class EntityDeletedByImp<UserT : EntityI>(
|
||||||
|
override val deletedBy: UserT?
|
||||||
|
) : EntityDeletedBy<UserT>
|
||||||
|
|
||||||
/* Mixed */
|
/* Mixed */
|
||||||
class EntityCreatedImp<UserT : EntityI>(
|
class EntityCreatedImp<UserT : EntityI>(
|
||||||
override val createdAt: DateTime = DateTime.now(),
|
override val createdAt: DateTime = DateTime.now(),
|
||||||
@@ -71,7 +90,7 @@ class EntityCreatedImp<UserT : EntityI>(
|
|||||||
|
|
||||||
class EntityUpdatedImp<UserT : EntityI>(
|
class EntityUpdatedImp<UserT : EntityI>(
|
||||||
updatedAt: DateTime = DateTime.now(),
|
updatedAt: DateTime = DateTime.now(),
|
||||||
override var updatedBy: UserT
|
override val updatedBy: UserT
|
||||||
) : EntityUpdatedBy<UserT>,
|
) : EntityUpdatedBy<UserT>,
|
||||||
EntityUpdatedAt by EntityUpdatedAtImp(updatedAt)
|
EntityUpdatedAt by EntityUpdatedAtImp(updatedAt)
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ interface IdEntityI : EntityRefI<Int> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract class Entity<T>(override var id: T? = null) : EntityRefI<T>
|
abstract class Entity<T>(override var id: T? = null) : EntityRefI<T>
|
||||||
open class UuidEntity(override var id: UUID? = UUID.randomUUID()) : UuidEntityI, Entity<UUID>(id)
|
open class UuidEntity(id: UUID? = null) : UuidEntityI, Entity<UUID>(id ?: UUID.randomUUID())
|
||||||
open class IdEntity(override var id: Int? = null) : IdEntityI, Entity<Int>(id)
|
open class IdEntity(override var id: Int? = null) : IdEntityI, Entity<Int>(id)
|
||||||
|
|
||||||
/* Version */
|
/* Version */
|
||||||
@@ -28,8 +28,10 @@ interface EntityVersioning<ID, NUMBER> {
|
|||||||
|
|
||||||
class UuidEntityVersioning(
|
class UuidEntityVersioning(
|
||||||
override var versionNumber: Int? = null,
|
override var versionNumber: Int? = null,
|
||||||
override var versionId: UUID = UUID.randomUUID()
|
versionId: UUID? = null
|
||||||
) : EntityVersioning<UUID, Int>
|
) : EntityVersioning<UUID, Int> {
|
||||||
|
override var versionId: UUID = versionId ?: UUID.randomUUID()
|
||||||
|
}
|
||||||
|
|
||||||
/* Dates */
|
/* Dates */
|
||||||
interface EntityCreatedAt {
|
interface EntityCreatedAt {
|
||||||
|
|||||||
Reference in New Issue
Block a user