# Math Platform - Makefile
# Quick commands for development and deployment

.PHONY: help start stop restart build test logs health backup restore monitor validate clean

# Default target
help:
	@echo "Math Platform - Available Commands:"
	@echo ""
	@echo "Development:"
	@echo "  make start       - Start all services"
	@echo "  make stop        - Stop all services"
	@echo "  make restart     - Restart all services"
	@echo "  make build       - Build Docker images"
	@echo "  make rebuild     - Rebuild images without cache"
	@echo ""
	@echo "Testing & Validation:"
	@echo "  make test        - Run E2E tests"
	@echo "  make health      - Run health check"
	@echo "  make validate    - Validate deployment readiness"
	@echo "  make monitor     - Real-time monitoring"
	@echo ""
	@echo "Database:"
	@echo "  make migrate     - Run database migrations"
	@echo "  make seed        - Seed database"
	@echo "  make studio      - Open Prisma Studio"
	@echo "  make backup      - Create database backup"
	@echo "  make restore     - Restore from backup"
	@echo ""
	@echo "Logs & Debugging:"
	@echo "  make logs        - View all logs"
	@echo "  make logs-be     - View backend logs"
	@echo "  make logs-fe     - View frontend logs"
	@echo "  make ps          - Show running containers"
	@echo ""
	@echo "Maintenance:"
	@echo "  make clean       - Clean Docker resources"
	@echo "  make prune       - Remove unused Docker resources"

# Start services
start:
	@echo "Starting Math Platform services..."
	@./docker/start.sh

# Stop services
stop:
	@echo "Stopping Math Platform services..."
	@./docker/stop.sh

# Restart services
restart:
	@echo "Restarting Math Platform services..."
	@./docker/stop.sh
	@./docker/start.sh

# Build Docker images
build:
	@echo "Building Docker images..."
	@docker-compose build

# Rebuild without cache
rebuild:
	@echo "Rebuilding Docker images (no cache)..."
	@docker-compose build --no-cache

# Run E2E tests
test:
	@echo "Running E2E tests..."
	@./scripts/test-e2e.sh

# Health check
health:
	@echo "Checking system health..."
	@./scripts/health-check.sh

# Validate deployment
validate:
	@echo "Validating deployment readiness..."
	@./scripts/validate-deployment.sh

# Monitor services
monitor:
	@echo "Starting real-time monitor..."
	@./scripts/monitor.sh

# Database migrations
migrate:
	@echo "Running database migrations..."
	@docker-compose exec backend npx prisma migrate deploy

# Seed database
seed:
	@echo "Seeding database..."
	@docker-compose exec backend npm run prisma:seed

# Prisma Studio
studio:
	@echo "Opening Prisma Studio..."
	@docker-compose exec backend npx prisma studio

# Database backup
backup:
	@echo "Creating database backup..."
	@./docker/backup.sh

# Restore from backup
restore:
	@echo "Available backups:"
	@./docker/backup.sh --list
	@echo "\nUsage: make restore FILE=path/to/backup.sql.gz"

# View logs
logs:
	@docker-compose logs -f

# Backend logs
logs-be:
	@docker-compose logs -f backend

# Frontend logs
logs-fe:
	@docker-compose logs -f frontend

# Show running containers
ps:
	@docker-compose ps

# Clean Docker resources
clean:
	@echo "Stopping and removing containers..."
	@docker-compose down
	@echo "Removing orphaned containers..."
	@docker-compose down --remove-orphans

# Prune unused Docker resources
prune:
	@echo "Pruning unused Docker resources..."
	@docker system prune -f
	@echo "Pruning unused images..."
	@docker image prune -a -f
