Я хочу написать DSL в kotlin, который описывает события в хранилище событий для генерации Java кода, JSON примеров, схемы и документации на основе этих описаний. Мой текущий подход:
Класс данных MyEvent
, который содержит структуру события
data class MyEvent(val name: String, val version: Int, val content: Map<String, String>)
, так что я могу описать события как
val OrderCreated = MyEvent("OrderCreated", 1, mapOf("orderId" to "UUID", "nameOfProduct" to "String(1, 256)", "quantity" to "Integer"))
val OrderCancelled = MyEvent("OrderCancelled", 2, mapOf("orderId" to "UUID", "reason" to "String(100, 1000)"))
val OrderQuestioned = MyEvent("OrderQuestioned", 3, mapOf("orderId" to "UUID", "question" to "String(10, 1000)"))
Принимая во внимание, что «String (1, 256)» означает, что он имеет тип String
с минимумом 1 и максимумом 256 символов.
Чтобы перебрать все события для генерации всего, что я хочу, мне нужно добавить вручную каждое событие в список / набор
fun scanForAllMyEventsInstances(): Set<MyEvent> {
return hashSetOf(OrderCreated, OrderCancelled, OrderQuestioned)
}
Этот способ не кажется наилучшим.
- Мне не нравится, когда меня заставляют добавлять новые события в
scanForAllMyEventsInstances
. Я хочу описать новое событие только в одном месте. - Мне не нравится создавать экземпляр
MyEvent
для каждого события. Это все "stati c" информация.
Итак, мой вопрос: Как бы вы это сделали? Я хотел бы получить несколько предложений.
Я использую SpringBoot
на данный момент. Так что не стесняйтесь предлагать рамки.