# Check a DDL file follows the schema-designer house rules: every FOREIGN KEY
# names an explicit ON DELETE policy, and every CREATE TABLE has a PRIMARY
# KEY (surrogate id or explicit composite key).
# Usage: check_ddl.sh <schema.sql>
if [[ -z "$FILE" || ! -f "$FILE" ]]; then
echo "Usage: $0 <schema.sql>" >&2
fk_no_policy=$(grep -niE 'FOREIGN KEY' "$FILE" | grep -viE 'ON DELETE' || true)
if [[ -n "$fk_no_policy" ]]; then
echo "❌ FOREIGN KEY with no explicit ON DELETE policy:"
echo "✅ every FOREIGN KEY names an ON DELETE policy"
tables=$(grep -c -iE '^\s*CREATE TABLE' "$FILE")
pks=$(grep -c -iE 'PRIMARY KEY' "$FILE")
if [[ "$pks" -lt "$tables" ]]; then
echo "❌ found $tables CREATE TABLE statements but only $pks PRIMARY KEY declarations — every table needs one"
echo "✅ every table appears to declare a PRIMARY KEY ($tables tables, $pks PK declarations)"