{
  "services": [
    {
      "name": "Orders",
      "description": "Replace with a sentence about the service, or remove this line.",
      "assemblies": ["Contoso.Orders.Domain.dll"],
      "connectionString": "Orders",
      "dcb": false,
      "domain": {
        "streams":     [ { "implements": "Memoria.EventSourcing.Domain.IStreamId" } ],
        "events":      [ { "implements": "Memoria.EventSourcing.Domain.IEvent" } ],
        "aggregates":  [ { "implements": "Memoria.EventSourcing.Domain.IAggregateRoot",
                           "id": { "genericInterface": "Memoria.EventSourcing.Domain.IAggregateId`1" } } ],
        "projections": [ { "implements": "Memoria.EventSourcing.Domain.IProjection",
                           "id": { "genericInterface": "Memoria.EventSourcing.Domain.IProjectionId`1" } } ],
        "naming": {
          "events":      { "attribute": "Memoria.EventSourcing.Domain.EventType", "property": "Name", "version": "Version" },
          "aggregates":  { "attribute": "Memoria.EventSourcing.Domain.AggregateType", "property": "Name", "version": "Version" },
          "projections": { "attribute": "Memoria.EventSourcing.Domain.ProjectionType", "property": "Name", "version": "Version" }
        },
        "fold":       { "methods": ["Apply"], "version": "Version", "applies": "EventTypeFilter" },
        "serializer": { "kind": "newtonsoft" },
        "ids":        { "property": "Id", "claim": "EventPropertyFilter", "keySeparator": ":" }
      },
      "store": {
        "events": {
          "table": "DomainEvents",
          "streamId": "StreamId", "sequence": "Sequence", "type": "EventType", "payload": "Data",
          "written": "CreatedDate", "writtenBy": "CreatedBy", "id": "Id"
        },
        "snapshots": [
          {
            "table": "DomainAggregates",
            "streamId": "StreamId", "id": "Id", "type": "AggregateType", "version": "Version",
            "appliedUpTo": "LatestEventSequence", "payload": "Data",
            "created": "CreatedDate", "createdBy": "CreatedBy", "updated": "UpdatedDate", "updatedBy": "UpdatedBy"
          },
          {
            "table": "DomainProjections", "kind": "projection",
            "streamId": "StreamId", "id": "Id", "type": "ProjectionType", "version": "Version",
            "appliedUpTo": "LatestEventSequence", "payload": "Data",
            "created": "CreatedDate", "createdBy": "CreatedBy", "updated": "UpdatedDate", "updatedBy": "UpdatedBy"
          }
        ]
      }
    }
  ]
}
