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
@Suppress("UNCHECKED_CAST")
abstract class Event {
var referenceId: UUID = UUID.randomUUID()
protected set
@ -10,22 +11,24 @@ abstract class Event {
var metadata: Metadata = Metadata()
protected set
fun derivedOf(event: Event) = apply {
this.referenceId = event.referenceId
this.metadata = Metadata(derivedFromId = event.eventId)
protected open fun <T : Event> self(): T = this as T
fun producedFrom(task: Task): Event = self<Event>().apply {
referenceId = task.referenceId
metadata = Metadata(derivedFromId = task.taskId)
}
fun producedFrom(task: Task) = apply {
this.referenceId = task.referenceId
this.metadata = Metadata(derivedFromId = task.taskId)
fun derivedOf(event: Event) = self<Event>().apply {
referenceId = event.referenceId
metadata = Metadata(derivedFromId = event.eventId)
}
fun newReferenceId() = apply {
this.referenceId = UUID.randomUUID()
fun newReferenceId() = self<Event>().apply {
referenceId = UUID.randomUUID()
}
fun usingReferenceId(refId: UUID) = apply {
this.referenceId = refId
fun usingReferenceId(refId: UUID) = self<Event>().apply {
referenceId = refId
}
}

View File

@ -11,13 +11,16 @@ abstract class Task {
var metadata: Metadata = Metadata()
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 {
this.referenceId = event.referenceId
this.metadata = Metadata(derivedFromId = event.eventId)
fun derivedOf(event: Event) = self<Task>().apply {
referenceId = event.referenceId
metadata = Metadata(derivedFromId = event.eventId)
}
}