package fr.dcproject.component.follow.database import fr.dcproject.common.entity.Created import fr.dcproject.common.entity.CreatedBy import fr.dcproject.common.entity.EntityI import fr.dcproject.common.entity.ExtraI import fr.dcproject.common.entity.HasTarget import fr.dcproject.common.entity.TargetI import fr.dcproject.component.citizen.database.CitizenCreator import fr.dcproject.component.citizen.database.CitizenI import java.util.UUID data class FollowForView( override val id: UUID = UUID.randomUUID(), override val createdBy: CitizenCreator, override var target: T ) : ExtraI, FollowRef(id), Created by Created.Imp(createdBy) data class FollowForUpdate( override val id: UUID = UUID.randomUUID(), override val target: T, override val createdBy: C ) : FollowRef(id), HasTarget, CreatedBy by CreatedBy.Imp(createdBy) open class FollowRef( override val id: UUID ) : FollowI sealed interface FollowI : EntityI