Skip to content

Releases: Cratis/Chronicle

Release v2.13.4

15 Nov 14:31
84140c6
Compare
Choose a tag to compare

Fixed

  • Fixing so that we save the correct offset for the projection - it needs to be the next event offset it will start processing from.

Release v2.13.3

12 Nov 08:37
08aeda8
Compare
Choose a tag to compare

Fixed

  • For the Dolittle EventStream implementation we had a greater than on the query for getting from a specific offset rather than greater than or equal. Meaning we wouldn't get the first event - ever.

Release v2.13.2

12 Nov 08:19
e140c65
Compare
Choose a tag to compare

Added

  • Added trace log messages from the Dolittle EventStore implementation.

Release v2.13.1

11 Nov 14:37
2872383
Compare
Choose a tag to compare

Fixed

  • Throw TypeIsMissingEventType if trying to get EventTypeId from a type not adorned with [EventType].

Release v2.13.0

11 Nov 09:57
5838a42
Compare
Choose a tag to compare

Added

  • Formalized IEventStore and IEventStream for the Dolittle extension - making it possible to work with these in other scenarios other than the internal projection event provider.

Release v2.12.2

10 Nov 14:40
d363272
Compare
Choose a tag to compare

Fixed

  • Opening up Changeset and changes to be for other types than just ExpandoObject. The abstract concept of changes can now be more widely applied.

Release v2.12.1

10 Nov 06:35
d2f972f
Compare
Choose a tag to compare

Fixed

  • Upgrading to version 11 of the Dolittle SDK - it had some breaking changes that won't affect the exterior from Cratis.

Release v2.12.0

08 Nov 12:23
401f29d
Compare
Choose a tag to compare

Added

  • Introducing a Changes API in Fundamentals for representing changes on any object instance. This is a formalization of what was very Event specific within the Projection engine.

Release v2.11.0

08 Nov 09:50
09661ba
Compare
Choose a tag to compare

Summary

This PR brings in the ability to have children on models based on events.
When using the C# client API you'll find it as this:

[Projection("8fdaaf0d-1291-47b7-b661-2eeba340a520")]
public class AccountsOverviewProjection : IProjectionFor<AccountsOverview>
{
    public void Define(IProjectionBuilderFor<AccountsOverview> builder)
    {
        builder
            .Children(_ => _.DebitAccounts, _ => _
                .IdentifiedBy(_ => _.Id)
                .From<DebitAccountOpened>(_ => _
                    .UsingParentKey(_ => _.Owner)
                    .Set(_ => _.Name).To(_ => _.Name)));
    }
}

You model the relationship by telling what is the property on the model that identifies every child, this is to be able to do the correct operation (Add, Remove, Update) on a child. The Event needs to have a property on it that identifies the parent object; the key. As a child relationship is considered a child projection, you have the same capabilities on a child as on a parent.

Added

  • Support for children on objects in projections.

Fixed

  • Internal restructuring for extensibility and improved maintainability across the board.

Release v2.10.0

25 Oct 12:42
fb937dc
Compare
Choose a tag to compare

Added

  • Ability to add and subtract numbers. One limitation today; it assumes double for these right now, due to lack of Model schema and understanding of target types. This will be improved in a future version.
[Projection("4ae2fd6d-0038-4066-8b6e-423c908deee5")]
public class DebitAccountProjection : IProjectionFor<DebitAccount>
{
    public void Define(IProjectionBuilderFor<DebitAccount> builder)
    {
        builder
            .ModelName("my_model")
            .From<DebitAccountOpened>(_ => _
                .Set(_ => _.Name).To(_ => _.Name)
                .Set(_ => _.Owner).To(_ => _.Owner))
            .From<DepositToDebitAccountPerformed>(_ => _
                // NEW: Add balance with amound from event
                .Add(_ => _.Balance).With(_ => _.Amount))
            .From<WithdrawalFromDebitAccountPerformed>(_ => _
                // NEW: Subtract balance with amound from event
                .Subtract(_ => _.Balance).With(_ => _.Amount));
    }
}

Fixed

  • Projections are now waiting per OnNext() to finish - guaranteeing order of operations.