#!/usr/bin/env bash
set -euo pipefail

if ! git rev-parse --verify HEAD >/dev/null 2>&1; then
  base_ref="$(git hash-object -t tree /dev/null)"
else
  base_ref="HEAD"
fi

schema_changed=0
while IFS= read -r path; do
  if [ "$path" = "prisma/schema.prisma" ]; then
    schema_changed=1
    break
  fi
done < <(git diff --cached --name-only --diff-filter=ACMR "$base_ref")

if [ "$schema_changed" -ne 1 ]; then
  exit 0
fi

migration_changed=0
while IFS= read -r path; do
  case "$path" in
    prisma/migrations/*|prisma/migration_lock.toml)
      migration_changed=1
      break
      ;;
  esac
done < <(git diff --cached --name-only --diff-filter=ACMR "$base_ref")

if [ "$migration_changed" -ne 1 ]; then
  echo "prisma/schema.prisma changed but no migration was staged."
  echo "Run: pnpm db:migrate --name <migration-name>"
  exit 1
fi
