Sign in

    thy1016/mooncmd/event does not have a README file

    Event

    pub trait Event {
    fn version() -> Int
    fn type_name() -> String
    }

    事件:已发生的事实,不可变

    EventBusError

    pub(all) suberror EventBusError {
    PublishError(String)
    }

    EventBusError::to_string

    fn EventBusError::to_string(self : EventBusError) -> String

    EventApplier

    pub(all) enum EventApplier[S, E] {
    Single((S, E) -> S)
    Batch((S, Array[E]) -> S)
    }

    EventBus

    pub(all) struct EventBus[AggregateId, E] {
    publish : (EventBus[AggregateId, E], Array[EventMessage[AggregateId, E]]) -> Unit raise EventBusError
    }

    EventMessage

    pub(all) struct EventMessage[AggregateId, E] {
    event : E
    event_id : String
    aggregate_id : AggregateId
    aggregate_version : Int
    correlation_id : String
    causation_id : String
    user_id : String?
    timestamp : Int64
    metadata : Json
    schema_version : Int
    }

    带元数据的事件

    EventMessage::from_command

    fn[AggregateId, E, C] EventMessage::from_command(event : E, aggregate_id : AggregateId, version : Int, cmd :
    CommandMessage
    [C]) -> EventMessage[AggregateId, E]

    EventMessage::new

    fn[AggregateId, E] EventMessage::new(event : E, aggregate_id : AggregateId, version : Int) -> EventMessage[AggregateId, E]

    EventStream

    pub(all) enum EventStream[AggregateId, E] {
    Nil
    Cons(EventMessage[AggregateId, E], EventStream[AggregateId, E])
    }

    事件流(不可变序列)

    EventStream::length

    fn[AggregateId, E] EventStream::length(self : EventStream[AggregateId, E]) -> Int

    EventStream::to_array

    fn[AggregateId, E] EventStream::to_array(self : EventStream[AggregateId, E]) -> Array[EventMessage[AggregateId, E]]