services:
    function:
        platform: linux/amd64
        build:
            context: .
            target: deploy
            args:
                version: "local-dev"
                AWS_ACCOUNT: "086679231553"
        volumes:
            - ./adjustment_file_validation:/var/task/adjustment_file_validation:cached
            - ./config.py:/var/task/config.py:cached
            - ./app.py:/var/task/app.py:cached
            - ${SNOWFLAKE_PRIVATE_KEY_PATH:-/dev/null}:/tmp/rsa_key.p8
        ports:
            - "9000:8080"
        env_file:
            - .env
        environment:
            - DD_ENV=dev
            - DD_SERVICE=lambda-abacus-adjustment-file-validation
            - DD_AGENT_HOST=dev-datadog-agent.dev.theorchard.io
            - DD_TRACE_ENABLED=true
            - DD_SERVERLESS_FLUSH_STRATEGY=periodically,1
            - LOG_LEVEL=INFO
            - ENVIRONMENT=$ENVIRONMENT
            - SNOWFLAKE_ROLE=$SNOWFLAKE_ROLE
            - SNOWFLAKE_ACCOUNT=delphi.us-east-1
            - SNOWFLAKE_USER=$SNOWFLAKE_USER
            - SNOWFLAKE_DATABASE=$SNOWFLAKE_DATABASE
            - SNOWFLAKE_SCHEMA=$SNOWFLAKE_SCHEMA
            - SNOWFLAKE_WAREHOUSE=$SNOWFLAKE_WAREHOUSE
            - SNOWFLAKE_PRIVATE_KEY_PATH=/tmp/rsa_key.p8
            - SNOWFLAKE_KEY_PASSPHRASE=$SNOWFLAKE_KEY_PASSPHRASE
            - AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
            - AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
            - AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN

    lint-and-test:
        platform: linux/amd64
        build:
            context: .
            target: unit-lint
            args:
                AWS_ACCOUNT: "086679231553"
        volumes:
            - ./adjustment_file_validation:/var/task/adjustment_file_validation:cached
            - ./config.py:/var/task/config.py:cached
            - ./app.py:/var/task/app.py:cached
            - ./tests:/var/task/tests:cached
        command: ./lint-and-test.sh
        environment:
            - SKIP_LINT=0
            - TEST_ARGS=-v
            - COV_REPORT=term  # --cov-report pytest-cov option or OFF (try html!)
            - ENVIRONMENT=dev
            - RUN_INTEGRATION=0

    integration-test:
        platform: linux/amd64
        build:
            context: .
            target: unit-lint
            args:
                AWS_ACCOUNT: "086679231553"
        volumes:
            - ./adjustment_file_validation:/var/task/adjustment_file_validation:cached
            - ./config.py:/var/task/config.py:cached
            - ./app.py:/var/task/app.py:cached
            - ./tests:/var/task/tests:cached
        ports:
            - "8000:8000"
        command: ./lint-and-test.sh
        environment:
            - SKIP_LINT=1
            - TEST_ARGS=-vv
            - COV_REPORT=term  # --cov-report pytest-cov option or OFF (try html!)
            - RUN_INTEGRATION=1
            - AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
            - AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
            - AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN

    lambda:
        image: 086679231553.dkr.ecr.us-east-1.amazonaws.com/lambda-abacus-adjustment-file-validation:latest
        volumes:
            - ${SNOWFLAKE_PRIVATE_KEY_PATH:-/dev/null}:/var/task/rsa_key.p8
        depends_on:
            - ows-royalties
        environment:
            - DD_ENV=dev
            - DD_SERVICE=lambda-abacus-adjustment-file-validation
            - DD_AGENT_HOST=dev-datadog-agent.dev.theorchard.io
            - DD_TRACE_ENABLED=true
            - DD_SERVERLESS_FLUSH_STRATEGY=periodically,1
            - ENVIRONMENT=dev
            - S3_BUCKET_NAME=qa-abacus-adjustments
            - FIVETRAN_SCHEMA=$FIVETRAN_SCHEMA
            - AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
            - AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
            - AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN
            - SNOWFLAKE_HOST=$SNOWFLAKE_HOST
            - SNOWFLAKE_ROLE=$SNOWFLAKE_ROLE
            - SNOWFLAKE_ACCOUNT=$SNOWFLAKE_ACCOUNT
            - SNOWFLAKE_USER=$SNOWFLAKE_USER
            - SNOWFLAKE_PRIVATE_KEY=$SNOWFLAKE_PRIVATE_KEY
            - SNOWFLAKE_PRIVATE_KEY_PATH=/var/task/rsa_key.p8
            - SNOWFLAKE_KEY_PASSPHRASE=$SNOWFLAKE_KEY_PASSPHRASE
            - SNOWFLAKE_DATABASE=$SNOWFLAKE_DATABASE
            - SNOWFLAKE_SCHEMA=$SNOWFLAKE_SCHEMA
            - SNOWFLAKE_WAREHOUSE=$SNOWFLAKE_WAREHOUSE
            - OWSREQUEST_SERVICE_MAP={"ows-royalties":"http://ows-royalties:8080"}
        ports:
            - "6773:8080"

    ows-royalties:
        image: 086679231553.dkr.ecr.us-east-1.amazonaws.com/ows-royalties:latest
        depends_on:
            - liquibase-runner
        environment:
            - MYSQL_DB_HOST=mysql
            - MYSQL_DB_USER=db_user
            - MYSQL_DB_PASS=db_pass
            - MYSQL_DB_PORT=3306
            - MYSQL_DB_NAME=royalty_accounting
        ports:
            - "6772:8080"

    liquibase-runner:
        image: 437795906767.dkr.ecr.us-east-1.amazonaws.com/royalties-liquibase-runner:latest
        depends_on:
            - mysql
        environment:
            - MYSQL_DB_HOST=mysql
            - MYSQL_DB_PORT=3306
            - MYSQL_DB_NAME=royalty_accounting
            - MYSQL_DEPLOY_USER=root
            - MYSQL_DEPLOY_PASSWORD=root
            - MYSQL_SERVICE_USER=db_user
            - GITHUB_USER=theorchard
            - GITHUB_REPO=database
            - GITHUB_BRANCH=master
            - GITHUB_REPO_DIR=royalty_accounting
            - AWS_ACCESS_KEY_ID
            - AWS_DEFAULT_REGION=us-east-1
            - AWS_SECRET_ACCESS_KEY
            - AWS_SESSION_TOKEN

    mysql:
        image: mysql:8.0.36
        environment:
            - MYSQL_ROOT_PASSWORD=root
            - MYSQL_DATABASE=royalty_accounting
            - MYSQL_USER=db_user
            - MYSQL_PASSWORD=db_pass
        ports:
            - "6771:3306"
