Skip to content

Latest commit

 

History

History
181 lines (107 loc) · 4.45 KB

CHANGELOG.md

File metadata and controls

181 lines (107 loc) · 4.45 KB

Changelog

All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.

[0.6.2] - 2022-10-03

Changed

Library

  • Upgrade Elixir to 1.12 and Erlang to 23;
  • Update package dependencies;

[0.6.1] - 2021-02-23

Fixed

Library

  • Fix bug in the task mix incident.postgres.init that would generate migration timestamps that were conflicting with each other;

Changed

Library

  • Update readme with missing syntax highlighting;
  • Update Github issue templates;
  • Update package dependencies;

[0.6.0] - 2020-12-10

Added

Library

  • Handle race conditions and concurrent scenarios during command execution;
  • Add EventStoreSupervisor to supervise EventStore adapters and LockManager;
  • Add AggregateLock schema to hold lock data;

Bank Example Application

  • Add integration tests that exercise concurrency and race conditions;

Changed

Library

  • Change how Incident is configured and added in the application supervision tree;
  • Update mix incident.postgres.init to include migration for aggregate_locks table;
  • Update documentation regarding library configuration and usage;
  • Update package dependencies;

Bank Example Application

  • Update documentation regarding library configuration and usage;

[0.5.1] - 2020-11-03

Changed

Library

  • Add id for the in memory event data structure;
  • Sort events by id in the Event Store Postgres and InMemory adapters to ensure proper event ordering;
  • Remove updated_at column from events table in the mix incident.postgres.init task;
  • Update documentation;
  • Update package dependencies;

Bank Example Application

  • Update events migration to reflect changes in the mix incident.postgres.init task;

[0.5.0] - 2020-10-15

Added

Library

  • Add get/2 for Projection Store InMemory and Postgres adapters to fetch a projection for a specific aggregate;

Bank Example Application

  • Add Transfer, TransferCommandhandler, TransferState and TransferEventHandler to demonstrate an example of aggregate root use-case;
  • Add examples of events that can generate specific commands in TransferEventHandler to demonstrate sequence of Event -> Command -> Event use-cases;

Changed

Library

  • The CommandHandler now returns {:ok, persisted_event} instead of just :ok, allowing event handlers to compose a new command and call the CommandHandler based on the previous event. This allows a series of Event -> Command -> Event to be built;
  • Set Elixir minimum version to 1.8;
  • Update package dependencies;

Bank Example Application

  • Rename Bank.EventHandler to Bank.BankAccountEventHandler to make it clear that this handler is only for the BankAccount aggregate events as now we have more than one aggregate;
  • Set Elixir minimum version to 1.8;

[0.4.1] - 2020-06-18

Changed

Library

  • Update package dependencies;

[0.4.0] - 2019-10-06

Added

Library

  • Add mix incident.postgres.init mix task to set up Postgres as Event Store storage;

Bank Example Application

  • Add WithdrawMoney command, MoneyWithdrawn event, and business logic;

Changed

Library

  • Update package dependencies;

[0.3.0] — 2019-09-14

Added

Library

  • Add Postgres adapter for events;
  • Add Postgres adapter for projections;
  • Set up continuous integration with Circle CI;

Bank Example Application

  • Add integration tests for InMemoryAdapter;
  • Add integration tests for PostgresAdapter;

Changed

Library

  • Specify separate event data structures for InMemoryAdapter and PostgresAdapter;

Bank Example Application

  • Use PostgresAdapter as default;
  • Update readme file;

[0.2.0] — 2019-07-16

Added

Library

  • Define the Incident.Command behaviour to specify the command interface;
  • Define the Incident.CommandHandler macro for command handlers;
  • Define the Incident.EventHandler behaviour to specify the event handler interface;
  • Use Ecto.Schema event data structure;
  • Use Ecto.Schema for command data structure;

Changed

Library

  • Move event persistency from aggregates to command handlers;
  • Validate commands in the command handlers using command implementation;

[0.1.0] — 2019-06-19

Library

  • Initial release with base functionality with In Memory adapters;
  • Initial release for the bank example application;