#!/bin/bash

# WAGW SaaS Database Helper

set -e

echo "🗄️  WAGW SaaS Database Helper"
echo "=============================="

show_help() {
    echo ""
    echo "Usage: db.sh [command]"
    echo ""
    echo "Commands:"
    echo "  shell        Open PostgreSQL shell"
    echo "  backup       Create database backup"
    echo "  restore      Restore database from backup"
    echo "  fresh        Drop and recreate database"
    echo "  migrate      Run migrations"
    echo "  seed         Run seeders"
    echo "  status       Show migration status"
    echo "  help         Show this help message"
    echo ""
}

case "${1:-help}" in
    shell)
        echo "Opening PostgreSQL shell..."
        docker compose exec postgres psql -U wagw_user -d wagw_saas
        ;;
    backup)
        echo "Creating database backup..."
        docker compose exec postgres pg_dump -U wagw_user wagw_saas > "backup-$(date +%Y%m%d-%H%M%S).sql"
        echo "✓ Backup created: backup-$(date +%Y%m%d-%H%M%S).sql"
        ;;
    restore)
        if [ -z "$2" ]; then
            echo "Error: Please specify backup file"
            echo "Usage: db.sh restore backup-file.sql"
            exit 1
        fi
        echo "Restoring database from $2..."
        cat "$2" | docker compose exec -T postgres psql -U wagw_user -d wagw_saas
        echo "✓ Database restored"
        ;;
    fresh)
        echo "Dropping and recreating database..."
        docker compose exec app php artisan migrate:fresh
        echo "✓ Database reset"
        ;;
    migrate)
        echo "Running migrations..."
        docker compose exec app php artisan migrate
        echo "✓ Migrations completed"
        ;;
    seed)
        echo "Running seeders..."
        docker compose exec app php artisan db:seed
        echo "✓ Seeders completed"
        ;;
    status)
        echo "Migration status..."
        docker compose exec app php artisan migrate:status
        ;;
    help|--help|-h)
        show_help
        ;;
    *)
        echo "Unknown command: ${1}"
        show_help
        exit 1
        ;;
esac
