name: Test Postgres and MySQL schemas

on:
  schedule:
    - cron: '0 0 * * *'
  workflow_dispatch:

jobs:
  test:
    runs-on: ubuntu-latest

    timeout-minutes: 30

    env:
      DB_MYSQLDB_PASSWORD: password
      DB_POSTGRESDB_PASSWORD: password

    steps:
      - uses: actions/checkout@v3

      - uses: pnpm/action-setup@v2.2.4

      - uses: actions/setup-node@v3
        with:
          node-version: 16.x
          cache: 'pnpm'

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      - name: Start MySQL & Postgres
        uses: isbang/compose-action@v1.3.2
        with:
          compose-file: ./.github/docker-compose.yml

      - name: Build Core & Workflow
        run: pnpm --filter n8n-workflow --filter=n8n-core --filter=n8n build

      - name: Test MySQL
        working-directory: packages/cli
        run: pnpm test:mysql

      - name: Test Postgres
        working-directory: packages/cli
        run: pnpm test:postgres

      - name: Test Postgres (alternate schema)
        working-directory: packages/cli
        run: pnpm test:postgres:alt-schema

      - name: Notify Slack on failure
        uses: act10ns/slack@v2.0.0
        if: failure()
        with:
          status: ${{ job.status }}
          channel: '#updates-build-alerts'
          webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}
          message: Postgres or MySQL tests failed (${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }})