Skip to content

Check_ddl

FieldValue
TypeSkill Resource
Source~/.copilot/skills/database/scripts/check_ddl.sh
DescriptionNot specified

Source Content

#!/usr/bin/env bash
# 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>
set -uo pipefail
FILE="${1:-}"
fail=0
if [[ -z "$FILE" || ! -f "$FILE" ]]; then
echo "Usage: $0 <schema.sql>" >&2
exit 2
fi
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 "$fk_no_policy"
fail=1
else
echo "✅ every FOREIGN KEY names an ON DELETE policy"
fi
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"
fail=1
else
echo "✅ every table appears to declare a PRIMARY KEY ($tables tables, $pks PK declarations)"
fi
exit "$fail"