overdrive-db 1.4.5

OverDrive-DB — Embeddable hybrid SQL+NoSQL database. Like SQLite for JSON. #OverDriveDB #AFOT
Documentation
name: CI — Quick Test on PR / Push

# Fast CI for development — runs tests only, no builds or publishes.
# Full build+publish pipeline runs on tag via sdk-release.yml.

on:
  push:
    branches: [main, dev, 'feature/**']
  pull_request:
    branches: [main]

jobs:
  rust:
    name: Rust tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: actions/cache@v4
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
            target
          key: ubuntu-cargo-ci-${{ hashFiles('Cargo.lock') }}
      - run: cargo check && cargo clippy -- -D warnings && cargo test --lib -- --test-threads=1

  python:
    name: Python syntax check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: '3.12'
      - name: Check Python syntax
        working-directory: python
        run: |
          pip install build
          python -c "
          import ast, sys, pathlib
          for f in pathlib.Path('overdrive').glob('*.py'):
              try:
                  ast.parse(f.read_text(encoding='utf-8'))
                  print(f'✓ {f}')
              except SyntaxError as e:
                  print(f'✗ {f}: {e}')
                  sys.exit(1)
          "
          python -m build
          echo "✅ Python package builds successfully"

  go-windows:
    name: Go — Windows (no CGo)
    runs-on: windows-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v5
        with:
          go-version: '1.22'
      - name: Go vet (Windows, no CGo)
        working-directory: go
        env:
          CGO_ENABLED: '0'
        run: go vet ./...

  go-linux:
    name: Go — Linux (with CGo)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v5
        with:
          go-version: '1.21'
      - name: Go build + vet
        working-directory: go
        env:
          CGO_ENABLED: '1'
        run: go build ./... && go vet ./...

  java:
    name: Java compile
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-java@v4
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: Maven compile
        working-directory: java
        run: mvn -B compile -Dmaven.test.skip=true --no-transfer-progress

  nodejs:
    name: Node.js syntax check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
      - name: Check syntax
        working-directory: nodejs
        run: |
          npm install --ignore-scripts
          node --check index.js
          echo "✅ Node.js syntax OK"

  c-header:
    name: C/C++ header check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Validate C header compiles
        run: |
          cat > /tmp/test_header.c << 'EOF'
          #include "c/include/overdrive.h"
          int main(void) {
              /* Just check the header parses — no linker needed */
              (void)sizeof(ODB);
              return 0;
          }
          EOF
          gcc -fsyntax-only -I. /tmp/test_header.c
          echo "✅ C header compiles cleanly"