Class EventTypes
- Namespace
- Cratis.Chronicle.Events
- Assembly
- Cratis.Chronicle.dll
Represents an implementation of IEventTypes.
public class EventTypes : IEventTypes
- Inheritance
-
EventTypes
- Implements
- Inherited Members
- Extension Methods
Constructors
EventTypes(IEventStore, IJsonSchemaGenerator, IClientArtifactsProvider, IEventTypeMigrators, bool)
Initializes a new instance of EventTypes.
public EventTypes(IEventStore eventStore, IJsonSchemaGenerator jsonSchemaGenerator, IClientArtifactsProvider clientArtifacts, IEventTypeMigrators eventTypeMigrators, bool enableEventTypeGenerationValidation = false)
Parameters
eventStoreIEventStoreThe IEventStore the event types belong to.
jsonSchemaGeneratorIJsonSchemaGeneratorIJsonSchemaGenerator for generating JSON schemas from types.
clientArtifactsIClientArtifactsProviderOptional IClientArtifactsProvider for the client artifacts.
eventTypeMigratorsIEventTypeMigratorsIEventTypeMigrators for discovering event type migrators.
enableEventTypeGenerationValidationboolWhether to enable event type generation chain validation on the server. Defaults to false.
EventTypes(IEventStore, IJsonSchemaGenerator, IClientArtifactsProvider, IEventTypeMigrators, bool, INamingPolicy?)
Initializes a new instance of EventTypes with the naming policy used for event payloads.
public EventTypes(IEventStore eventStore, IJsonSchemaGenerator jsonSchemaGenerator, IClientArtifactsProvider clientArtifacts, IEventTypeMigrators eventTypeMigrators, bool enableEventTypeGenerationValidation, INamingPolicy? namingPolicy)
Parameters
eventStoreIEventStoreThe event store the event types belong to.
jsonSchemaGeneratorIJsonSchemaGeneratorThe generator for event schemas.
clientArtifactsIClientArtifactsProviderThe provider of client artifacts.
eventTypeMigratorsIEventTypeMigratorsThe migrator discovery service.
enableEventTypeGenerationValidationboolWhether to validate the generation chain on the server.
namingPolicyINamingPolicyThe naming policy, or null to preserve declared property names.
Properties
All
Get all EventType discovered event types.
public IImmutableList<EventType> All { get; }
Property Value
AllClrTypes
Get all event types as EventTypeRegistration.
public IImmutableList<Type> AllClrTypes { get; }
Property Value
Methods
Discover()
Discover all event types from the entry assembly and dependencies.
public Task Discover()
Returns
- Task
Awaitable task.
Exceptions
- MultipleEventTypesWithSameIdFound
Thrown when more than one CLR type resolves to the same event type id and generation.
- ArtifactPreparationReentered
Discovery reenters its own unfinished schema generation.
GetClrTypeFor(EventTypeId)
Get a Clr Type for a specific EventTypeId.
public Type GetClrTypeFor(EventTypeId eventTypeId)
Parameters
eventTypeIdEventTypeIdEventTypeId to get for.
Returns
GetClrTypeFor(EventTypeId, EventTypeGeneration)
Get a Clr Type for a specific EventTypeId and EventTypeGeneration.
public Type GetClrTypeFor(EventTypeId eventTypeId, EventTypeGeneration generation)
Parameters
eventTypeIdEventTypeIdEventTypeId to get for.
generationEventTypeGenerationEventTypeGeneration to get for.
Returns
GetEventTypeFor(Type)
public EventType GetEventTypeFor(Type clrType)
Parameters
Returns
Remarks
Reporting the miss as TypeIsNotAnEventType rather than letting the lookup fall out as a LINQ exception matters most to the model-bound projection attributes: their generic type argument is unconstrained, so nothing at compile time relates it to an event type and this is the first place the mistake can be named. The fluent projection builder already answers the same condition the same way.
Exceptions
- TypeIsNotAnEventType
Thrown when the type is not a registered event type.
GetSchemaFor(EventTypeId)
Get the JsonSchema for an EventTypeId.
public JsonSchema GetSchemaFor(EventTypeId eventTypeId)
Parameters
eventTypeIdEventTypeIdEventTypeId to get for.
Returns
- JsonSchema
JsonSchema for the event type.
HasFor(EventTypeId)
Check if there is a registered Clr Type for a specific EventTypeId.
public bool HasFor(EventTypeId eventTypeId)
Parameters
eventTypeIdEventTypeIdEventTypeId to check for.
Returns
- bool
True if there is, false if not.
HasFor(Type)
Check if there is a registered EventTypeId for a specific Clr Type.
public bool HasFor(Type clrType)
Parameters
Returns
- bool
True if there is, false if not.
Register()
Register all event types with the Chronicle.
public Task Register()
Returns
- Task
Awaitable task.
Exceptions
- ArtifactPreparationReentered
Registration reenters unfinished local preparation.