Interface IEventRepository<C, E, V, CM, EM>

Event repository interface

Author

Иван Дугалић / Ivan Dugalic /

Idugalic

interface IEventRepository<C, E, V, CM, EM> {
    fetch: ((command) => Promise<readonly (E & V & EM)[]>);
    save: ((events, commandMetadata, versionProvider) => Promise<readonly (E & V & EM)[]>);
    versionProvider: ((event) => Promise<null | V>);
}

Type Parameters

  • C

    Command

  • E

    Event

  • V

    Version

  • CM

    Command Metadata

  • EM

    Event Metadata

Hierarchy (view full)

Properties

fetch: ((command) => Promise<readonly (E & V & EM)[]>)

Fetch events

Type declaration

    • (command): Promise<readonly (E & V & EM)[]>
    • Parameters

      • command: C & CM

        Command of type C with metadata of type CM

      Returns Promise<readonly (E & V & EM)[]>

Returns

list of Events with Version and Event Metadata

save: ((events, commandMetadata, versionProvider) => Promise<readonly (E & V & EM)[]>)

Save events

Type declaration

    • (events, commandMetadata, versionProvider): Promise<readonly (E & V & EM)[]>
    • Parameters

      • events: readonly E[]

        list of Events

      • commandMetadata: CM

        Command Metadata of the command that initiated events

      • versionProvider: ((e) => Promise<null | V>)

        A provider for the Latest Event in this stream and its Version/Sequence

          • (e): Promise<null | V>
          • Parameters

            Returns Promise<null | V>

      Returns Promise<readonly (E & V & EM)[]>

Returns

a list of newly saved Event(s) of type E with Version of type V and with Event Metadata of type EM

versionProvider: ((event) => Promise<null | V>)

Get the latest event stream version / sequence

Type declaration

    • (event): Promise<null | V>
    • Parameters

      • event: E

        Event of type E

      Returns Promise<null | V>

Returns

the latest version / sequence of the event stream that this event belongs to.

Generated using TypeDoc