fix: Entity CreatedBy
This commit is contained in:
@@ -47,47 +47,45 @@ class EntityCreatedAtImp: EntityCreatedAt {
|
|||||||
class EntityUpdatedAtImp: EntityUpdatedAt {
|
class EntityUpdatedAtImp: EntityUpdatedAt {
|
||||||
override var updatedAt: DateTime? = null
|
override var updatedAt: DateTime? = null
|
||||||
}
|
}
|
||||||
|
|
||||||
interface User<T>: EntityI<T> {
|
interface User<T>: EntityI<T> {
|
||||||
fun isValid(): Boolean
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Author */
|
/* Author */
|
||||||
interface CreatedBy<T> {
|
interface CreatedBy<T: User<*>> {
|
||||||
var createdBy: User<T>?
|
var createdBy: T?
|
||||||
}
|
}
|
||||||
|
|
||||||
interface UpdatedBy<T> {
|
interface UpdatedBy<T: User<*>> {
|
||||||
var updatedBy: User<T>?
|
var updatedBy: T?
|
||||||
}
|
}
|
||||||
|
|
||||||
class EntityCreatedByImp<T>: CreatedBy<T> {
|
class EntityCreatedByImp<UserT: User<*>>: CreatedBy<UserT> {
|
||||||
override var createdBy: User<T>? = null
|
override var createdBy: UserT? = null
|
||||||
}
|
}
|
||||||
|
|
||||||
class EntityUpdatedByImp<T>: UpdatedBy<T> {
|
class EntityUpdatedByImp<UserT: User<*>>: UpdatedBy<UserT> {
|
||||||
override var updatedBy: User<T>? = null
|
override var updatedBy: UserT? = null
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Published */
|
/* Published */
|
||||||
interface Published<UserT> {
|
interface Published<UserT: User<*>> {
|
||||||
var publishedAt: DateTime?
|
var publishedAt: DateTime?
|
||||||
var publishedBy: User<UserT>?
|
var publishedBy: UserT?
|
||||||
}
|
}
|
||||||
|
|
||||||
class EntityPublishedImp<UserT>: Published<UserT> {
|
class EntityPublishedImp<UserT: User<*>>: Published<UserT> {
|
||||||
override var publishedAt: DateTime? = null
|
override var publishedAt: DateTime? = null
|
||||||
override var publishedBy: User<UserT>? = null
|
override var publishedBy: UserT? = null
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Implementation */
|
/* Implementation */
|
||||||
abstract class EntityImp<T, UserT>: Entity<T>(),
|
abstract class EntityImp<T, UserT: User<*>>: Entity<T>(),
|
||||||
EntityCreatedAt by EntityCreatedAtImp(),
|
EntityCreatedAt by EntityCreatedAtImp(),
|
||||||
EntityUpdatedAt by EntityUpdatedAtImp(),
|
EntityUpdatedAt by EntityUpdatedAtImp(),
|
||||||
CreatedBy<UserT> by EntityCreatedByImp(),
|
CreatedBy<UserT> by EntityCreatedByImp(),
|
||||||
UpdatedBy<UserT> by EntityUpdatedByImp()
|
UpdatedBy<UserT> by EntityUpdatedByImp()
|
||||||
|
|
||||||
abstract class EntityExtended<T, UserT>:
|
abstract class EntityExtended<T, UserT: User<*>>:
|
||||||
EntityImp<T, UserT>(),
|
EntityImp<T, UserT>(),
|
||||||
EntityVersioningIncrement by EntityVersioningIncrementImp(),
|
EntityVersioningIncrement by EntityVersioningIncrementImp(),
|
||||||
Published<UserT> by EntityPublishedImp()
|
Published<UserT> by EntityPublishedImp()
|
||||||
|
|||||||
@@ -7,18 +7,19 @@ import org.junit.jupiter.api.TestInstance
|
|||||||
|
|
||||||
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
|
||||||
class EntityTest() {
|
class EntityTest() {
|
||||||
private class ObjTest(var name: String): EntityExtended<Int?, Int?>()
|
private class User(override var id: Int?): fr.postgresjson.entity.User<Int?>
|
||||||
|
private class ObjTest(var name: String): EntityExtended<Int?, User>()
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun getObject() {
|
fun getObject() {
|
||||||
val obj: ObjTest? = ObjTest("plop")
|
val obj: ObjTest? = ObjTest("plop")
|
||||||
assertTrue(obj is ObjTest)
|
assertTrue(obj is ObjTest)
|
||||||
assertTrue(obj is EntityExtended<Int?, Int?>)
|
assertTrue(obj is EntityExtended<Int?, User>)
|
||||||
assertTrue(obj is EntityI<Int?>)
|
assertTrue(obj is EntityI<Int?>)
|
||||||
assertTrue(obj is Entity<Int?>)
|
assertTrue(obj is Entity<Int?>)
|
||||||
assertTrue(obj is Published<Int?>)
|
assertTrue(obj is Published<User>)
|
||||||
assertTrue(obj is CreatedBy<Int?>)
|
assertTrue(obj is CreatedBy<User>)
|
||||||
assertTrue(obj is UpdatedBy<Int?>)
|
assertTrue(obj is UpdatedBy<User>)
|
||||||
assertTrue(obj is EntityCreatedAt)
|
assertTrue(obj is EntityCreatedAt)
|
||||||
assertTrue(obj is EntityUpdatedAt)
|
assertTrue(obj is EntityUpdatedAt)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user