#!/bin/bash

# WAGW SaaS All-in-One Helper

set -e

echo "🚀 WAGW SaaS Development Environment"
echo "===================================="
echo ""

show_help() {
    echo "Usage: all.sh [command]"
    echo ""
    echo "Commands:"
    echo "  start        Start all services"
    echo "  stop         Stop all services"
    echo "  restart      Restart all services"
    echo "  status       Show service status"
    echo "  logs         View all logs"
    echo "  install      Install dependencies"
    echo "  migrate      Run migrations"
    echo "  test         Run tests"
    echo "  help         Show this help message"
    echo ""
}

case "${1:-start}" in
    start)
        echo "Starting all services..."
        docker compose up -d
        echo ""
        echo "Services started!"
        echo "  Web:        http://localhost:8088"
        echo "  PostgreSQL: localhost:54328"
        echo "  Redis:      localhost:63798"
        echo "  MinIO:      http://localhost:9001"
        echo "  GOWA:       http://localhost:3000"
        ;;
    stop)
        echo "Stopping all services..."
        docker compose down
        echo "✓ All services stopped"
        ;;
    restart)
        echo "Restarting all services..."
        docker compose restart
        echo "✓ All services restarted"
        ;;
    status)
        echo "Service status:"
        docker compose ps
        ;;
    logs)
        echo "Viewing logs (Ctrl+C to exit)..."
        docker compose logs -f
        ;;
    install)
        echo "Installing dependencies..."
        docker compose exec app composer install
        docker compose exec app php artisan key:generate
        echo "✓ Dependencies installed"
        ;;
    migrate)
        echo "Running migrations..."
        docker compose exec app php artisan migrate
        echo "✓ Migrations completed"
        ;;
    test)
        echo "Running tests..."
        docker compose exec app php artisan test
        ;;
    help|--help|-h)
        show_help
        ;;
    *)
        echo "Unknown command: ${1}"
        show_help
        exit 1
        ;;
esac
