sqlx-adapter 0.4.2

Sqlx adapter for casbin-rs
Documentation
name: CI

on:
  pull_request:
  push:
    branches:
      - master

jobs:
  build:
    name: Auto Build CI
    runs-on: ubuntu-latest

    services:
      postgres:
        image: postgres:11
        env:
          POSTGRES_USER: casbin_rs
          POSTGRES_PASSWORD: casbin_rs
          POSTGRES_DB: casbin
        ports:
          - 5432:5432
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5

      mysql:
        image: mariadb
        env:
          MYSQL_DATABASE: casbin
          MYSQL_USER: casbin_rs
          MYSQL_PASSWORD: casbin_rs
          MYSQL_ROOT_PASSWORD: root
        ports:
          - 3306:3306
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

    steps:
      - name: Checkout Repository
        uses: actions/checkout@master

      - name: Install Rust toolchain
        uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: stable
          components: rustfmt, clippy
          override: true

      - name: Install PostgreSQL & MySQL & SQLite Dependencies
        run: sudo apt-get install libpq-dev postgresql-client mysql-client libmysqlclient-dev libsqlite3-dev sqlite3

      - name: Create SQLite DB
        run: |
          touch casbin.db

      - name: Create PostgresSQL Table
        run: psql postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin -c "CREATE TABLE IF NOT EXISTS casbin_rule (
          id SERIAL PRIMARY KEY,
          ptype VARCHAR NOT NULL,
          v0 VARCHAR NOT NULL,
          v1 VARCHAR NOT NULL,
          v2 VARCHAR NOT NULL,
          v3 VARCHAR NOT NULL,
          v4 VARCHAR NOT NULL,
          v5 VARCHAR NOT NULL,
          CONSTRAINT unique_key_sqlx_adapter UNIQUE(ptype, v0, v1, v2, v3, v4, v5)
          );"

      - name: Create MySQL Table
        run: |
          mysql -ucasbin_rs -pcasbin_rs --host 127.0.0.1 --port ${{ job.services.mysql.ports['3306'] }} -e "USE casbin; CREATE TABLE IF NOT EXISTS casbin_rule (
            id INT NOT NULL AUTO_INCREMENT,
            ptype VARCHAR(12) NOT NULL,
            v0 VARCHAR(128) NOT NULL,
            v1 VARCHAR(128) NOT NULL,
            v2 VARCHAR(128) NOT NULL,
            v3 VARCHAR(128) NOT NULL,
            v4 VARCHAR(128) NOT NULL,
            v5 VARCHAR(128) NOT NULL,
            PRIMARY KEY(id),
            CONSTRAINT unique_key_sqlx_adapter UNIQUE(ptype, v0, v1, v2, v3, v4, v5)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8;"

      - name: Create SQLite Table
        run: |
          sqlite3 casbin.db -cmd "CREATE TABLE IF NOT EXISTS casbin_rule (
            id INTEGER PRIMARY KEY,
            ptype VARCHAR(12) NOT NULL,
            v0 VARCHAR(128) NOT NULL,
            v1 VARCHAR(128) NOT NULL,
            v2 VARCHAR(128) NOT NULL,
            v3 VARCHAR(128) NOT NULL,
            v4 VARCHAR(128) NOT NULL,
            v5 VARCHAR(128) NOT NULL,
            CONSTRAINT unique_key_diesel_adapter UNIQUE(ptype, v0, v1, v2, v3, v4, v5)
            );"

      - name: Cargo Build
        uses: actions-rs/cargo@v1
        with:
          command: build

      # PostgreSQL tests
      # async-std
      - name: Cargo Test For PostgreSQL,runtime-async-std-native-tls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
        with:
          command: test
          args: --no-default-features --features postgres,runtime-async-std-native-tls

      - name: Cargo Test For PostgreSQL,runtime-async-std-rustls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
        with:
          command: test
          args: --no-default-features --features postgres,runtime-async-std-rustls

      # tokio
      - name: Cargo Test For PostgreSQL,runtime-tokio-native-tls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
        with:
          command: test
          args: --no-default-features --features postgres,runtime-tokio-native-tls

      - name: Cargo Test For PostgreSQL,runtime-tokio-rustls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
        with:
          command: test
          args: --no-default-features --features postgres,runtime-tokio-rustls

      # actix
      - name: Cargo Test For PostgreSQL,runtime-actix-native-tls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
        with:
          command: test
          args: --no-default-features --features postgres,runtime-actix-native-tls

      - name: Cargo Test For PostgreSQL,runtime-actix-rustls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: postgres://casbin_rs:casbin_rs@127.0.0.1:5432/casbin
        with:
          command: test
          args: --no-default-features --features postgres,runtime-actix-rustls

      # MySQL
      # async-std
      - name: Cargo Test For MySQL,runtime-async-std-native-tls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
        with:
          command: test
          args: --no-default-features --features mysql,runtime-async-std-native-tls

      - name: Cargo Test For MySQL,runtime-async-std-rustls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
        with:
          command: test
          args: --no-default-features --features mysql,runtime-async-std-rustls

      # tokio
      - name: Cargo Test For MySQL,runtime-tokio-native-tls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
        with:
          command: test
          args: --no-default-features --features mysql,runtime-tokio-native-tls

      - name: Cargo Test For MySQL,runtime-tokio-rustls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
        with:
          command: test
          args: --no-default-features --features mysql,runtime-tokio-rustls

      # actix
      - name: Cargo Test For MySQL,runtime-actix-native-tls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
        with:
          command: test
          args: --no-default-features --features mysql,runtime-actix-native-tls

      - name: Cargo Test For MySQL,runtime-actix-rustls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: mysql://casbin_rs:casbin_rs@127.0.0.1:${{ job.services.mysql.ports[3306] }}/casbin
        with:
          command: test
          args: --no-default-features --features mysql,runtime-actix-rustls

      #SQLite
      #async-std
      - name: Cargo Test For SQLite,runtime-async-std-native-tls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: sqlite:casbin.db
        with:
          command: test
          args: --no-default-features --features sqlite,runtime-async-std-native-tls

      - name: Cargo Test For SQLite,runtime-async-std-rustls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: sqlite:casbin.db
        with:
          command: test
          args: --no-default-features --features sqlite,runtime-async-std-rustls

      # tokio
      - name: Cargo Test For SQLite,runtime-tokio-native-tls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: sqlite:casbin.db
        with:
          command: test
          args: --no-default-features --features sqlite,runtime-tokio-native-tls

      - name: Cargo Test For SQLite,runtime-tokio-rustls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: sqlite:casbin.db
        with:
          command: test
          args: --no-default-features --features sqlite,runtime-tokio-rustls

      # actix
      - name: Cargo Test For SQLite,runtime-actix-native-tls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: sqlite:casbin.db
        with:
          command: test
          args: --no-default-features --features sqlite,runtime-actix-native-tls

      - name: Cargo Test For SQLite,runtime-actix-rustls
        uses: actions-rs/cargo@v1
        env:
          DATABASE_URL: sqlite:casbin.db
        with:
          command: test
          args: --no-default-features --features sqlite,runtime-actix-rustls

      - name: Cargo Clippy
        uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: -- -D warnings

      - name: Cargo Fmt Check
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check