qail 0.19.1

Schema-first database toolkit - migrations, diff, lint, and query generation
Documentation

qail

Schema-first database toolkit — Pull, diff, migrate, validate.

Crates.io License: MIT

[!CAUTION] Beta Software: QAIL is currently in beta. The API is stabilizing and is battle-tested in production. Breaking changes may still occur between minor versions.

Installation

cargo install qail

Commands

Schema Operations

# Extract schema from database
qail pull postgres://user:pass@host/db -o schema.qail

# Compare two schemas
qail diff old.qail new.qail

# Check best practices
qail lint schema.qail

# Format QAIL files
qail fmt schema.qail

Migration Operations

# Create a new migration
qail migrate create add_users_table --author "dev"

# Preview migration SQL
qail migrate plan old.qail:new.qail

# Apply migrations
qail migrate up old.qail:new.qail postgres://...

# Rollback migrations
qail migrate down postgres://...

Query REPL

# Interactive query transpiler
qail repl

> get users fields id, name where active = true
SELECT id, name FROM users WHERE active = true

Schema Format

QAIL uses a concise, version-controlled schema format:

-- schema.qail
table users (
    id uuid primary key default gen_random_uuid(),
    email text not null unique,
    created_at timestamptz default now()
);

table orders (
    id uuid primary key,
    user_id uuid references users(id),
    total numeric(10,2)
);

Features

  • Schema extraction — Pull live schemas from PostgreSQL
  • Smart diffing — Detect additions, removals, modifications
  • Impact analysis — Warn about breaking changes
  • Foreign key validation — Ensure referential integrity
  • Data-safe migrations — Preview SQL before applying
  • Type-safe queries — Transpile QAIL to SQL

Ecosystem

Crate Purpose
qail CLI tool for schema and migration operations
qail-core AST builder, parser, expression helpers
qail-pg PostgreSQL driver (AST → wire protocol)

License

MIT

🤝 Contributing & Support

We welcome issue reports on GitHub! Please provide detailed descriptions to help us reproduce and fix the problem. We aim to address critical issues within 1-5 business days.