services:

  fansifter-postgres:
    image: postgres:11.13
    restart: always
    ports:
      - "${POSTGRES_PORT:-5432}:${POSTGRES_CONTAINER_PORT:-5432}"
    environment:
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=dmp
    command: "-p ${POSTGRES_CONTAINER_PORT:-5432}"

  fansifter-snowflake:
    image: postgres:15-alpine
    restart: always
    ports:
      - "${SNOWFLAKE_PORT:-5443}:${SNOWFLAKE_CONTAINER_PORT:-5443}"
    environment:
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=app_reporting
    command: "-p ${SNOWFLAKE_CONTAINER_PORT:-5443}"

  fansifter-redis:
    image: redis:alpine
    restart: always
    ports:
      - '6379:6379'

  ows-dmp:
    build:
      context: .
      target: dev
    ports:
      - '5001:8080'
    depends_on:
      - fansifter-snowflake
      - fansifter-postgres
      - fansifter-redis
    environment:
      APP_DEBUG: 'true'
      PORT: 8080
      Environment: dev
      SNOWFLAKE_KEY_PASSPHRASE: ''

  sync-fivetran-tables-state:
    build:
      context: .
      args:
        ENVIRONMENT: ${ENVIRONMENT}
      target: sync-fivetran-tables-state
    environment:
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN

  sync-geonames-data:
    build:
      context: .
      args:
        ENVIRONMENT: ${ENVIRONMENT}
      target: sync-geonames-data
    environment:
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN


  ##############################
  # Lint and test services
  ##############################

  postgres-test:
    image: postgres:11.13
    restart: always
    ports:
      - "0:5432"
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: dmp_test
    command: "-p 5432"

  snowflake-test:
    image: postgres:15-alpine
    restart: always
    ports:
      - "0:5443"
    environment:
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: app_reporting_test
    command: "-p 5443"

  lint-and-test:
    build:
      context: .
      dockerfile: Dockerfile.tests
    depends_on:
      - postgres-test
      - snowflake-test
    environment:
      POSTGRES_NAME: dmp_test
      POSTGRES_HOST: postgres-test
      POSTGRES_PORT: 5432
      SNOWFLAKE_DATABASE: app_reporting_test
      SNOWFLAKE_HOST: snowflake-test
      SNOWFLAKE_PORT: 5443
    volumes:
      - ./reports:/app/reports
