Signature

This commit is contained in:
Brage Skjønborg 2025-10-12 19:31:15 +02:00
parent 86b183873f
commit 479d4cc25e
2 changed files with 21 additions and 15 deletions

View File

@ -2,6 +2,7 @@ package no.iktdev.eventi.models
import java.util.UUID import java.util.UUID
@Suppress("UNCHECKED_CAST")
abstract class Event { abstract class Event {
var referenceId: UUID = UUID.randomUUID() var referenceId: UUID = UUID.randomUUID()
protected set protected set
@ -10,22 +11,24 @@ abstract class Event {
var metadata: Metadata = Metadata() var metadata: Metadata = Metadata()
protected set protected set
fun derivedOf(event: Event) = apply { protected open fun <T : Event> self(): T = this as T
this.referenceId = event.referenceId
this.metadata = Metadata(derivedFromId = event.eventId) fun producedFrom(task: Task): Event = self<Event>().apply {
referenceId = task.referenceId
metadata = Metadata(derivedFromId = task.taskId)
} }
fun producedFrom(task: Task) = apply { fun derivedOf(event: Event) = self<Event>().apply {
this.referenceId = task.referenceId referenceId = event.referenceId
this.metadata = Metadata(derivedFromId = task.taskId) metadata = Metadata(derivedFromId = event.eventId)
} }
fun newReferenceId() = apply { fun newReferenceId() = self<Event>().apply {
this.referenceId = UUID.randomUUID() referenceId = UUID.randomUUID()
} }
fun usingReferenceId(refId: UUID) = apply { fun usingReferenceId(refId: UUID) = self<Event>().apply {
this.referenceId = refId referenceId = refId
} }
} }

View File

@ -11,13 +11,16 @@ abstract class Task {
var metadata: Metadata = Metadata() var metadata: Metadata = Metadata()
protected set protected set
fun newReferenceId() = apply {
this.referenceId = UUID.randomUUID() protected open fun <T : Task> self(): T = this as T
fun newReferenceId() = self<Task>().apply {
referenceId = UUID.randomUUID()
} }
fun derivedOf(event: Event) = apply { fun derivedOf(event: Event) = self<Task>().apply {
this.referenceId = event.referenceId referenceId = event.referenceId
this.metadata = Metadata(derivedFromId = event.eventId) metadata = Metadata(derivedFromId = event.eventId)
} }
} }