# VBW Destructive Command Blocklist
# One regex pattern per line. Case-insensitive matching via grep -iE.
# Lines starting with # are comments. Empty lines ignored.
# Patterns match against the full Bash command string.
#
# Override: VBW_ALLOW_DESTRUCTIVE=1 env var, or bash_guard=false in config.
# Extend: .vbw-planning/destructive-commands.local.txt (project-specific)

# === PHP / Laravel ===
artisan\s+migrate:(fresh|reset|refresh)
artisan\s+db:(wipe|seed\s+--force)

# === Ruby / Rails ===
(rails|rake)\s+db:(drop|reset|schema:load)
bundle\s+exec\s+rake\s+db:(drop|reset)

# === Python / Django ===
manage\.py\s+(flush|sqlflush)
django-admin\s+flush

# === Node.js / Prisma ===
prisma\s+migrate\s+reset
prisma\s+db\s+push\s+--force-reset
npx\s+prisma\s+migrate\s+reset

# === Node.js / Knex ===
knex\s+migrate:rollback\s+--all

# === Node.js / Sequelize ===
sequelize(-cli)?\s+db:drop
npx\s+sequelize(-cli)?\s+db:drop

# === Node.js / TypeORM ===
typeorm\s+schema:drop

# === Node.js / Drizzle ===
drizzle-kit\s+push\s+--force

# === Go ===
migrate\s+.*-database\s+.*drop

# === Rust / Diesel ===
diesel\s+database\s+reset
diesel\s+migration\s+revert\s+--all

# === Rust / SQLx ===
sqlx\s+database\s+drop

# === Elixir / Phoenix / Ecto ===
mix\s+ecto\.(drop|reset)
mix\s+ecto\.rollback\s+--all

# === Raw SQL via CLI clients ===
(mysql|psql|sqlite3)\s+.*DROP\s+(DATABASE|TABLE)
(mysql|psql|sqlite3)\s+.*TRUNCATE
mongosh?\s+.*DROP\s+(DATABASE|TABLE)

# === MongoDB shell ===
mongosh?\s+.*dropDatabase
mongosh?\s+.*\.drop\s*\(

# === Redis ===
redis-cli\s+FLUSH(ALL|DB)

# === Docker (volume destruction) ===
docker-compose\s+down\s+.*-v
docker\s+compose\s+down\s+.*-v
docker\s+volume\s+(rm|prune)
docker\s+system\s+prune.*--volumes

# === File system (database files) ===
rm\s+(-rf?\s+)?\S*\.sqlite3?\b
rm\s+(-rf?\s+)?\S*\.db\b
rm\s+(-rf?\s+)?/var/lib/(mysql|postgresql|mongodb)
