name: PostgSail DB Tests docker & sql schema

on:
  push:
    branches:
      - 'main'
    paths:
      - 'initdb/**'
    # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

jobs:
  smoketest:
    name: tests
    runs-on: ubuntu-latest
    steps:
      - name: Check out the source
        uses: actions/checkout@v3

      - name: Pull Docker image
        run: docker pull xbgmsharp/timescaledb-postgis

      - name: Install psql
        run: sudo apt install postgresql-client

      - name: Set env
        run: cp .env.example .env

      - name: Run PostgSail Database & API tests
        # Environment variables
        env:
          # The hostname used to communicate with the PostgreSQL service container
          PGHOST: localhost
          PGPORT: 5432
          PGDATABASE: signalk
          PGUSER: username
          PGPASSWORD: password
        run: |
          set -eu
          source .env
          docker-compose stop || true
          docker-compose rm || true
          docker-compose up -d db && sleep 15 && docker-compose up -d api && sleep 5
          docker-compose ps -a
          echo ${PGSAIL_API_URL}
          curl ${PGSAIL_API_URL}
          psql -c "select 1"
          echo "Test PostgreSQL version"
          psql -c "SELECT version();"
          echo "Test PostgSail version"
          psql -c "SELECT value FROM app_settings WHERE name = 'app.version';"
          echo "Test PostgSail Unit Test"
          docker-compose -f docker-compose.dev.yml -f docker-compose.yml up tests
      - name: Show the logs
        if: always()
        run: |
          docker-compose logs