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
SqlParseCacheto 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));