name: Deploy on merge to master

on:
  push:
    branches:
      - master

jobs:
  deploy:
    runs-on: ubuntu-latest
    container:
      image: node:20

    steps:
      # ── 1. Checkout ──────────────────────────────────────────────────────────
      - name: Checkout repository
        uses: actions/checkout@v4

      # ── 2. Node.js ───────────────────────────────────────────────────────────
      # Node 20 jest już dostępny w obrazie kontenera (node:20)
      # Nie potrzeba setup-node

      # ── 3. PHP + Composer ────────────────────────────────────────────────────
      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.3'
          extensions: pdo, pdo_sqlite, sqlite3

      - name: Install Composer dependencies (production only)
        run: composer install --no-dev --optimize-autoloader

      # ── 3. Pobierz aktualną bazę SQLite z serwera ────────────────────────────
      #    data.sqlite3 z repo NIE trafia na serwer – ściągamy produkcyjną wersję,
      #    uruchamiamy na niej migracje i wgrywamy z powrotem.
      - name: Install lftp
        run: sudo apt-get install -y lftp

      - name: Download production data.sqlite3 via FTP
        run: |
          lftp -u "${{ secrets.FTP_USER }}","${{ secrets.FTP_PASS }}" \
               -e "set ftp:ssl-allow no; \
                   set ssl:verify-certificate no; \
                   get ${{ secrets.FTP_REMOTE_DIR }}/data.sqlite3 -o ./data.sqlite3; \
                   quit" \
               ${{ secrets.FTP_HOST }}

      # ── 4. Uruchom migracje Phinx na pobranej bazie ──────────────────────────
      #    phinx.php: 'name' => __DIR__ . '/data'  →  plik data.sqlite3
      - name: Run Phinx migrations
        run: ./vendor/bin/phinx migrate -e main

      # ── 5. Wgraj pliki na serwer (z zaktualizowaną bazą) ────────────────────
      - name: Deploy files to server via FTP
        uses: SamKirkland/FTP-Deploy-Action@v4.3.5
        with:
          server:      ${{ secrets.FTP_HOST }}
          username:    ${{ secrets.FTP_USER }}
          password:    ${{ secrets.FTP_PASS }}
          local-dir:   ./
          server-dir:  ${{ secrets.FTP_REMOTE_DIR }}/
          exclude: |
            **/.git/**
            **/.gitea/**
            **/tests/**
            **/docker/**
            **/html_template/**
            **/lib/**
            **/var/cache/**
            **/logs/**
            docker-compose*.yml
            Dockerfile
            phpunit.xml
            phpcs.xml
            phpstan.neon.dist
            README.md
            CONTRIBUTING.md
            .env*
            local.data.sqlite3
            server.data.sqlite3
