README.md

# EventStore adapter for Commanded

Use the PostgreSQL-based [EventStore](https://github.com/commanded/eventstore) with [Commanded](https://github.com/commanded/commanded).

[Changelog](CHANGELOG.md)

MIT License

[![Build Status](https://travis-ci.org/commanded/commanded-eventstore-adapter.svg?branch=master)](https://travis-ci.org/commanded/commanded-eventstore-adapter)

## Getting started

The package can be installed from hex as follows.

1. Add `commanded_eventstore_adapter` to your list of dependencies in `mix.exs`:

    ```elixir
    def deps do
      [{:commanded_eventstore_adapter, "~> 0.3"}]
    end
    ```

2. Include `:eventstore` in the list of extra applications to start in `mix.exs`:

    ```elixir
    def application do
      [
        extra_applications: [
          :logger,
          :eventstore,
        ],
      ]
    end
    ```

3. Configure Commanded to use the `Commanded.EventStore.Adapters.EventStore` adapter:

    ```elixir
    config :commanded,
      event_store_adapter: Commanded.EventStore.Adapters.EventStore
    ```

4. Configure the `eventstore` in each environment's mix config file (e.g. `config/dev.exs`), specifying usage of the included JSON serializer:

    ```elixir
    config :eventstore, EventStore.Storage,
      serializer: Commanded.Serialization.JsonSerializer,
      username: "postgres",
      password: "postgres",
      database: "eventstore_dev",
      hostname: "localhost",
      pool_size: 10
    ```

5. Create the `eventstore` database and tables using the `mix` task:

    ```console
    $ mix do event_store.create, event_store.init
    ```