sqlx_migrator 0.19.0

Migrator for writing sqlx migration using Rust instead of SQL
Documentation
name: Build

on:
  push:
    branches:
      - master
  pull_request:

jobs:
  build:
    name: Build
    strategy:
      matrix:
        include:
          - os: "ubuntu-latest"
            rust-version: "stable"
          - os: "macos-latest"
            rust-version: "stable"
          - os: "windows-latest"
            rust-version: "stable"
          - os: "ubuntu-latest"
            rust-version: "beta"
          - os: "ubuntu-latest"
            rust-version: "nightly"
    runs-on: ${{ matrix.os }}
    defaults:
      run:
        shell: bash

    steps:
      - uses: actions/checkout@v4
      - name: Setup rust toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.rust-version }}
          components: rustfmt, clippy
      - name: Install just
        uses: extractions/setup-just@v3
      - name: Run all tests
        run: |
          just all

  run_example:
    name: Run Example
    runs-on: "ubuntu-latest"
    needs: build
    env:
      SQLITE_DATABASE_URL: "db.sqlite3"
      POSTGRES_DATABASE_URL: postgresql://postgres:postgres@127.0.0.1:5432/postgres
      MYSQL_DATABASE_URL: mysql://root:mysql@127.0.0.1:3306/default_db
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_PASSWORD: postgres
        ports:
          - 5432:5432
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
      mysql:
        image: mysql
        env:
          MYSQL_ROOT_PASSWORD: mysql
          MYSQL_DATABASE: default_db
        ports:
          - 3306:3306
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

    steps:
      - uses: actions/checkout@v4
      - name: Setup rust toolchain
        uses: dtolnay/rust-toolchain@nightly
      - name: Install just
        uses: extractions/setup-just@v3
      - name: Print cli help message
        run: |
          just run-example postgres --help
          just run-example postgres apply --help
          just run-example postgres drop --help
          just run-example postgres list --help
          just run-example postgres revert --help
      - name: Run postgres example
        run: |
          just run-example postgres apply
          just run-example postgres list
          just run-example postgres revert --all --force
          just run-example postgres list
          just run-example postgres drop
      - name: Run sqlite example
        run: |
          touch db.sqlite3
          just run-example sqlite apply
          just run-example sqlite list
          just run-example sqlite revert --all --force
          just run-example sqlite list
          just run-example sqlite drop
      - name: Run mysql example
        run: |
          just run-example mysql apply
          just run-example mysql list
          just run-example mysql revert --all --force
          just run-example mysql list
          just run-example mysql drop