{
  "services": [
    {
      "name": "Orders",
      "description": "Replace with a sentence about the service, or remove this line.",
      "assemblies": ["Contoso.Orders.Domain.dll"],
      "connectionString": "Orders",
      "domain": {
        "streams":    [ { "type": "Contoso.Orders.Domain.OrderId" } ],
        "events":     [ { "namespace": "Contoso.Orders.Domain.Events" } ],
        "aggregates": [ { "type": "Contoso.Orders.Domain.Order", "id": "Contoso.Orders.Domain.OrderId" } ],
        "naming":     { "events": "class-name", "aggregates": "class-name" },
        "fold":       { "methods": ["Apply"] },
        "serializer": { "kind": "system-text-json" },
        "hidden":     ["Id"]
      },
      "store": {
        "events": {
          "sql": "SELECT s.id_original, m.stream_version, m.type, m.json_data::text AS json_data, m.json_metadata::text AS json_metadata, (m.created_utc AT TIME ZONE 'UTC') AS created_utc, m.position FROM public.messages m JOIN public.streams s ON s.id_internal = m.stream_id_internal WHERE s.id_original NOT LIKE '$%'",
          "streamId": "id_original", "sequence": "stream_version", "type": "type", "payload": "json_data",
          "written": "created_utc", "id": "position", "metadata": "json_metadata"
        }
      }
    }
  ]
}
