pgorm-check 0.1.4

Runtime SQL vs schema checks for pgorm (with optional local schema cache)
Documentation

pgorm-check

Runtime helpers for checking whether SQL references match a live database schema.

This crate can cache schema metadata into a local directory (default: ./.pgorm/) so subsequent runs can skip a full refresh when nothing has changed.

Features

  • Schema validation: Check if SQL queries reference valid tables and columns
  • SQL linting: Detect common issues like DELETE without WHERE, SELECT without LIMIT
  • Syntax validation: Verify SQL syntax is correct
  • Statement analysis: One-pass parse into SqlAnalysis (tables/aliases/columns/CTEs/etc)
  • Parse cache: Optional LRU SqlParseCache to reuse analysis across calls

Example

use pgorm_check::{is_valid_sql, lint_sql, lint_select_many, delete_has_where};

// Check SQL syntax
assert!(is_valid_sql("SELECT * FROM users").valid);

// Lint for dangerous operations
let result = lint_sql("DELETE FROM users");
assert!(result.has_errors()); // Missing WHERE clause

// Check select_many patterns
let result = lint_select_many("SELECT * FROM users");
assert!(result.has_warnings()); // Missing LIMIT

// Individual checks
assert_eq!(delete_has_where("DELETE FROM users WHERE id = 1"), Some(true));