.PHONY: install clean db-reset db-seed-fake db-seed-test-users admin-reset admin-rotate-otp \
	run run-gunicorn docker-db-reset docker-db-seed-fake docker-db-seed-test-users \
	docker-admin-reset docker-admin-rotate-otp docker-build docker-up docker-down docker-logs \
	docker-restart docker-db-reset-xplat docker-db-seed-fake-xplat docker-db-seed-test-users-xplat \
	docker-admin-reset-xplat docker-admin-rotate-otp-xplat docker-build-xplat docker-up-xplat \
	docker-down-xplat docker-logs-xplat cache-clear cache-status cache-keys dev-up dev-down \
	prod-build prod-up prod-logs cache-warmup cache-monitor

install:
	pip install -r requirements.txt

clean:
	rm -f ~/.local/share/controles/database.db*
	rm -f database.db*
	rm -f data/database.db*
	rm -f admin_qr.png
	rm -f data/admin_qr.png
	rm -f /tmp/admin_qr.png

db-reset: clean
	PYTHONUNBUFFERED=1 python -B scripts/manage.py db_reset

# Apenas seed (seed_database.py)
db-seed-fake:
	PYTHONUNBUFFERED=1 python -B scripts/manage.py db_seed_fake

# Apenas seed (create_test_users.py)
db-seed-test-users:
	PYTHONUNBUFFERED=1 python -B scripts/manage.py db_seed_test_users

# Busca o OTP padrão
admin-reset:
	PYTHONUNBUFFERED=1 python -B scripts/manage.py admin_reset

# Novo OTP
admin-rotate-otp:
	PYTHONUNBUFFERED=1 python -B scripts/manage.py admin_rotate_otp

# Server padrão do python
run:
	PYTHONUNBUFFERED=1 python -B app.py

# server padrão de produção (recomendado)
run-gunicorn:
	PYTHONUNBUFFERED=1 python -B -m gunicorn --bind 0.0.0.0:5000 app:app

# Docker commands
docker-db-reset:
	mkdir -p data logs
	docker-compose -f docker-compose.yml exec app python -B scripts/manage.py db_reset

docker-db-seed-fake:
	docker-compose -f docker-compose.yml exec app python -B scripts/manage.py db_seed_fake

docker-db-seed-test-users:
	docker-compose -f docker-compose.yml exec app python -B scripts/manage.py db_seed_test_users

docker-admin-reset:
	docker-compose -f docker-compose.yml exec app python -B scripts/manage.py admin_reset

docker-admin-rotate-otp:
	docker-compose -f docker-compose.yml exec app python -B scripts/manage.py admin_rotate_otp

docker-build:
	mkdir -p data logs
	docker-compose -f docker-compose.yml build

docker-up:
	mkdir -p data logs
	docker-compose -f docker-compose.yml up -d

docker-down:
	docker-compose -f docker-compose.yml down

docker-logs:
	docker-compose -f docker-compose.yml logs -f

docker-restart:
	docker-compose -f docker-compose.yml restart

# Docker commands (fallback cross-platform)
docker-db-reset-xplat:
	docker-compose -f docker-compose.crossplatform.yml exec app python -B scripts/manage.py db_reset

docker-db-seed-fake-xplat:
	docker-compose -f docker-compose.crossplatform.yml exec app python -B scripts/manage.py db_seed_fake

docker-db-seed-test-users-xplat:
	docker-compose -f docker-compose.crossplatform.yml exec app python -B scripts/manage.py db_seed_test_users

docker-admin-reset-xplat:
	docker-compose -f docker-compose.crossplatform.yml exec app python -B scripts/manage.py admin_reset

docker-admin-rotate-otp-xplat:
	docker-compose -f docker-compose.crossplatform.yml exec app python -B scripts/manage.py admin_rotate_otp

docker-build-xplat:
	mkdir -p data logs
	docker-compose -f docker-compose.crossplatform.yml build

docker-up-xplat:
	docker-compose -f docker-compose.crossplatform.yml up -d

docker-down-xplat:
	docker-compose -f docker-compose.crossplatform.yml down

docker-logs-xplat:
	docker-compose -f docker-compose.crossplatform.yml logs -f

# Redis cache commands
cache-clear:
	docker-compose -f docker-compose.yml exec redis redis-cli FLUSHDB

cache-status:
	docker-compose -f docker-compose.yml exec redis redis-cli INFO

cache-keys:
	docker-compose -f docker-compose.yml exec redis redis-cli KEYS "*"

# Development with Docker
dev-up: docker-build docker-up
	@echo "Development environment started with Redis cache"
	@echo "Application: http://localhost:5000"

dev-down: docker-down
	@echo "Development environment stopped"

# Production commands
prod-build:
	docker-compose -f docker-compose.yml build --no-cache

prod-up:
	docker-compose -f docker-compose.yml up -d

prod-logs:
	docker-compose -f docker-compose.yml logs -f app

# Cache management
cache-warmup:
	@echo "Warming up cache..."
	curl -X GET http://localhost:5000/api/dashboard/stats
	curl -X GET http://localhost:5000/api/dashboard/militante-stats
	curl -X GET http://localhost:5000/api/dashboard/financial-stats
	@echo "Cache warmup completed"

cache-monitor:
	@echo "Monitoring Redis cache..."
	watch -n 5 'docker-compose -f docker-compose.yml exec redis redis-cli INFO memory'
