Table of Contents

Interface IModelPropertiesBuilder<TModel, TEvent, TBuilder>

Namespace
Cratis.Chronicle.Projections
Assembly
Cratis.Chronicle.dll

Defines the builder for building properties on a model.

public interface IModelPropertiesBuilder<TModel, TEvent, TBuilder> where TBuilder : class, IModelPropertiesBuilder<TModel, TEvent, TBuilder>

Type Parameters

TModel

Model to build for.

TEvent

Event to build for.

TBuilder

Type of actual builder.

Methods

AddChild<TChildModel>(Expression<Func<TModel, IEnumerable<TChildModel>>>, Action<IAddChildBuilder<TChildModel, TEvent>>)

Start building the add child operation to a target property holding an collection of a specific child model type.

TBuilder AddChild<TChildModel>(Expression<Func<TModel, IEnumerable<TChildModel>>> targetProperty, Action<IAddChildBuilder<TChildModel, TEvent>> builderCallback)

Parameters

targetProperty Expression<Func<TModel, IEnumerable<TChildModel>>>

The collection property that will receive the child.

builderCallback Action<IAddChildBuilder<TChildModel, TEvent>>

Builder callback for building the composite key.

Returns

TBuilder

Builder continuation.

Type Parameters

TChildModel

Type of child model.

AddChild<TChildModel>(Expression<Func<TModel, IEnumerable<TChildModel>>>, Expression<Func<TEvent, TChildModel>>)

Start building a child operation that add a child based on a property on the event.

TBuilder AddChild<TChildModel>(Expression<Func<TModel, IEnumerable<TChildModel>>> targetProperty, Expression<Func<TEvent, TChildModel>> eventProperty)

Parameters

targetProperty Expression<Func<TModel, IEnumerable<TChildModel>>>

The collection property that will receive the child.

eventProperty Expression<Func<TEvent, TChildModel>>

Event property accessor for defining the source property.

Returns

TBuilder

Builder continuation.

Type Parameters

TChildModel

Type of child model.

Add<TProperty>(Expression<Func<TModel, TProperty>>)

Start building the add operation to a target property on the model.

IAddBuilder<TModel, TEvent, TProperty, TBuilder> Add<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)

Parameters

modelPropertyAccessor Expression<Func<TModel, TProperty>>

Model property accessor for defining the target property.

Returns

IAddBuilder<TModel, TEvent, TProperty, TBuilder>

Builder continuation.

Type Parameters

TProperty

Type of the property.

AutoMap()

Automatically map event properties to model properties on the events added.

TBuilder AutoMap()

Returns

TBuilder

Builder continuation.

Count<TProperty>(Expression<Func<TModel, TProperty>>)

Start building the count operation to a target property on the model.

TBuilder Count<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)

Parameters

modelPropertyAccessor Expression<Func<TModel, TProperty>>

Model property accessor for defining the target property.

Returns

TBuilder

Builder continuation.

Type Parameters

TProperty

Type of the property.

Decrement<TProperty>(Expression<Func<TModel, TProperty>>)

Increment the value of a property on the model.

TBuilder Decrement<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)

Parameters

modelPropertyAccessor Expression<Func<TModel, TProperty>>

Model property accessor for defining the target property.

Returns

TBuilder

Builder continuation.

Type Parameters

TProperty

Type of the property.

Increment<TProperty>(Expression<Func<TModel, TProperty>>)

Increment the value of a property on the model.

TBuilder Increment<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)

Parameters

modelPropertyAccessor Expression<Func<TModel, TProperty>>

Model property accessor for defining the target property.

Returns

TBuilder

Builder continuation.

Type Parameters

TProperty

Type of the property.

Set(PropertyPath)

Start building the set operation to a target property on the model.

ISetBuilder<TModel, TEvent, TBuilder> Set(PropertyPath propertyPath)

Parameters

propertyPath PropertyPath

Model property path for defining the target property.

Returns

ISetBuilder<TModel, TEvent, TBuilder>

The ISetBuilder<TModel, TEvent, TParentBuilder> to continue building on.

SetThisValue()

Start building the set operation to target the value instance itself.

ISetBuilder<TModel, TEvent, TBuilder> SetThisValue()

Returns

ISetBuilder<TModel, TEvent, TBuilder>

The ISetBuilder<TModel, TEvent, TParentBuilder> to continue building on.

Set<TProperty>(Expression<Func<TModel, TProperty>>)

Start building the set operation to a target property on the model.

ISetBuilder<TModel, TEvent, TProperty, TBuilder> Set<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)

Parameters

modelPropertyAccessor Expression<Func<TModel, TProperty>>

Model property accessor for defining the target property.

Returns

ISetBuilder<TModel, TEvent, TProperty, TBuilder>

The ISetBuilder<TModel, TEvent, TProperty, TParentBuilder> to continue building on.

Type Parameters

TProperty

Type of the property.

Subtract<TProperty>(Expression<Func<TModel, TProperty>>)

Start building the add operation to a target property on the model.

ISubtractBuilder<TModel, TEvent, TProperty, TBuilder> Subtract<TProperty>(Expression<Func<TModel, TProperty>> modelPropertyAccessor)

Parameters

modelPropertyAccessor Expression<Func<TModel, TProperty>>

Model property accessor for defining the target property.

Returns

ISubtractBuilder<TModel, TEvent, TProperty, TBuilder>

Builder continuation.

Type Parameters

TProperty

Type of the property.

UsingCompositeKey<TKeyType>(Action<ICompositeKeyBuilder<TKeyType, TEvent>>)

Define what key to use based on a composite of expressions.

TBuilder UsingCompositeKey<TKeyType>(Action<ICompositeKeyBuilder<TKeyType, TEvent>> builderCallback)

Parameters

builderCallback Action<ICompositeKeyBuilder<TKeyType, TEvent>>

Builder callback for building the composite key.

Returns

TBuilder

Builder continuation.

Type Parameters

TKeyType

Type of key.

UsingKeyFromContext<TProperty>(Expression<Func<EventContext, TProperty>>)

Define what key to use based on a value in the EventContext.

TBuilder UsingKeyFromContext<TProperty>(Expression<Func<EventContext, TProperty>> keyAccessor)

Parameters

keyAccessor Expression<Func<EventContext, TProperty>>

Accessor for the property within EventContext to use.

Returns

TBuilder

Builder continuation.

Type Parameters

TProperty

Type of the property.

UsingKey<TProperty>(Expression<Func<TEvent, TProperty>>)

Define what key to use. This is optional, if not set - it will default to using the event source identifier on the event.

TBuilder UsingKey<TProperty>(Expression<Func<TEvent, TProperty>> keyAccessor)

Parameters

keyAccessor Expression<Func<TEvent, TProperty>>

Accessor for the property to use.

Returns

TBuilder

Builder continuation.

Type Parameters

TProperty

Type of the property.

UsingParentCompositeKey<TKeyType>(Action<ICompositeKeyBuilder<TKeyType, TEvent>>)

Define what composite key based on properties on the event represents the parent key. This is typically used in child relationships to identify the parent model to work with.

TBuilder UsingParentCompositeKey<TKeyType>(Action<ICompositeKeyBuilder<TKeyType, TEvent>> builderCallback)

Parameters

builderCallback Action<ICompositeKeyBuilder<TKeyType, TEvent>>

Builder callback for building the composite key.

Returns

TBuilder

Builder continuation.

Type Parameters

TKeyType

Type of key.

UsingParentKeyFromContext<TProperty>(Expression<Func<EventContext, TProperty>>)

Define what property on the event represents the parent key based on a property in the EventContext. This is typically used in child relationships to identify the parent model to work with.

TBuilder UsingParentKeyFromContext<TProperty>(Expression<Func<EventContext, TProperty>> keyAccessor)

Parameters

keyAccessor Expression<Func<EventContext, TProperty>>

Accessor for the property to use.

Returns

TBuilder

Builder continuation.

Type Parameters

TProperty

Type of the property.

UsingParentKey<TProperty>(Expression<Func<TEvent, TProperty>>)

Define what property on the event represents the parent key. This is typically used in child relationships to identify the parent model to work with.

TBuilder UsingParentKey<TProperty>(Expression<Func<TEvent, TProperty>> keyAccessor)

Parameters

keyAccessor Expression<Func<TEvent, TProperty>>

Accessor for the property to use.

Returns

TBuilder

Builder continuation.

Type Parameters

TProperty

Type of the property.