sqlc-gen-sqlx 0.2.4

A sqlc plugin that generates type-safe sqlx Rust code from SQL queries.
Documentation
name: CI

on:
  push:
    branches: [main]
  pull_request:
  workflow_dispatch:

concurrency:
  group: ci-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read

jobs:
  msrv:
    name: Rust 1.94.0
    runs-on: ubuntu-latest
    timeout-minutes: 30
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          persist-credentials: false

      - name: Install Rust 1.94.0
        uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable
        with:
          toolchain: "1.94.0"

      - name: Check MSRV
        run: rustup run 1.94.0 cargo check --locked --workspace --all-features --all-targets

      - name: Test MSRV
        run: rustup run 1.94.0 cargo test --locked -p sqlc-gen-sqlx --all-features --lib --test codegen

  test:
    runs-on: ubuntu-latest
    timeout-minutes: 30
    permissions:
      contents: read
    services:
      postgres:
        image: postgres:17-alpine
        env:
          POSTGRES_USER: sqlc
          POSTGRES_PASSWORD: sqlc
          POSTGRES_DB: sqlc_test
        ports:
          - 5432:5432
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          persist-credentials: false

      - name: Install sqlc
        uses: sqlc-dev/setup-sqlc@bac53b7fb28c039a6c7f5736fd1e89744021bdd6 # v5.0.0
        with:
          sqlc-version: "1.31.1"

      - name: Install Rust stable
        uses: dtolnay/rust-toolchain@4360b52568e2003a75bf9bc1d59f33a8e3fc893c # stable
        with:
          targets: wasm32-wasip1

      - name: Snapshot tests
        run: cargo test --workspace
        env:
          INSTA_UPDATE: unseen

      - name: Build WASM plugin
        run: cargo build --target wasm32-wasip1

      - name: Integration tests
        run: cargo test -p basic
        env:
          DATABASE_URL: postgres://sqlc:sqlc@localhost:5432/sqlc_test

      - name: Verify package
        run: cargo package --locked

  proto-check:
    runs-on: ubuntu-latest
    timeout-minutes: 15
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          persist-credentials: false

      - name: Install buf
        uses: bufbuild/buf-action@8c6a16e16f12ba20b6470afa9c2ba9b5ba8c97c3 # v1.5.0
        with:
          setup_only: true

      - name: Install protoc-gen-buffa
        run: cargo install protoc-gen-buffa@0.9.1 protoc-gen-buffa-packaging@0.9.1

      - name: Verify proto bindings are up to date
        run: |
          buf generate
          cargo fmt --all
          git diff --exit-code -- src