---
services:

  integration:
    platform: linux/amd64
    build:
      context: .
      target: integration
    environment:
      - Environment=qa
      - DB_CLIENT_HOST=qa-ows-assets-db.theorchard.io
      - DB_CLIENT_DB=ows_assets
      - DB_CLIENT_USER=${DB_CLIENT_USER}
      - DB_CLIENT_PASS=${DB_CLIENT_PASS}
      - BASE_QA_OA_URL=https://oa.qaorch.com/grass
      - QA_GRASS_HOST=https://api-dev.theorchard.io/auth/session
      - QA_DB_HOST=qadb01.qaorch.com
      - QA_DB_USER=${QA_DB_USER}
      - QA_DB_PASS=${QA_DB_PASS}
      - QA_DB_DATABASE=art_relations
      - BASE_QA_URL=https://qa-ows-features.theorchard.io
      - BASE_QA_GRASS_URL=https://qa-ows-grass.theorchard.io
      - AWS_SESSION_TOKEN
      - AWS_SECRET_ACCESS_KEY
      - AWS_ACCESS_KEY_ID
      - TEST_ARGS=-v

  unit-lint:
    extends:
      service: unit-lint
      file: docker-compose.unit-lint.yml

  update-snapshots:
    extends:
      service: unit-lint
      file: docker-compose.unit-lint.yml
    environment:
      - SKIP_LINT=1
      - SKIP_TYPE_CHECKS=1
      - TEST_ARGS=--snapshot-update
    volumes:
      - ./tests:/var/app/tests

  dev:
    platform: linux/amd64
    build:
      context: .
      target: dev
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:5000/hello/"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 40s
    ports:
      - "8888:5000"
    depends_on:
      test-redis:
        condition: service_healthy
    volumes:
      - ./assets:/var/app/assets
    env_file:
      - path: .env
        required: false
    environment:
      - Environment=dev
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - SQLALCHEMY_ECHO=true
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN
      - AWS_REGION

  deploy:
    platform: linux/amd64
    build:
      context: .
      target: deploy
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/hello/"]
      interval: 1m30s
      timeout: 10s
      retries: 3
      start_period: 40s
    ports:
      - "8889:8080"
    depends_on:
      test-redis:
        condition: service_healthy
    env_file:
      - path: .env
        required: false
    environment:
      - DATADOG_TRACE_ENABLED=false
      - Environment=dev
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN
      - AWS_REGION

  test-redis:
    image: redis:7.2.3
    healthcheck:
      test: ["CMD-SHELL", "redis-cli ping | grep PONG"]
      interval: 5s
      timeout: 5s
      retries: 10
    environment:
      - ALLOW_EMPTY_PASSWORD=yes

  format:
    platform: linux/amd64
    build:
      context: .
      target: format
    volumes:
      - ./:/var/app

  update-lockfile:
    platform: linux/amd64
    build:
      context: .
      target: update-lockfile
    volumes:
      - ./poetry.lock:/var/app/poetry.lock

  test-assets-db:
    platform: linux/amd64
    image:
      086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-database-images:ows-assets
    pull_policy: always
    environment:
      DB_USER: ${TEST_RDS_USER}
      DB_PASSWORD: ${TEST_RDS_PASS}
    command: >
      --disable-log-bin
    tmpfs:
      - /var/lib/mysql
    healthcheck:
      interval: 1s
      timeout: 5s
      retries: 180

  test-ar-db:
    platform: linux/amd64
    image:
      086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-database-images:art-relations
    pull_policy: always
    environment:
      DB_USER: ${TEST_DB_USER}
      DB_PASSWORD: ${TEST_DB_PASS}
    command: >
      --disable-log-bin
    tmpfs:
      - /var/lib/mysql
    healthcheck:
      interval: 1s
      timeout: 5s
      retries: 180
