# Makefile for Enterprise Asset Management System

.PHONY: help install dev build prod clean logs stop restart schema

# Default target
help:
	@echo "Enterprise Asset Management System - Available Commands:"
	@echo ""
	@echo "Quick Start:"
	@echo "  make quick-start - Complete setup for new developers"
	@echo "  make setup       - Full development environment setup"
	@echo ""
	@echo "Development:"
	@echo "  make install     - Install frontend and node_api dependencies"
	@echo "  make dev         - Start development environment"
	@echo "  make dev-fe      - Start frontend development server"
	@echo "  make dev-api     - Start node API development server"
	@echo "  make schema      - Import database schema and sample data"
	@echo ""
	@echo "Production:"
	@echo "  make build       - Build frontend for production"
	@echo "  make prod        - Build and run production environment"
	@echo ""
	@echo "Docker Management:"
	@echo "  make up          - Start all services"
	@echo "  make down        - Stop all services"
	@echo "  make restart     - Restart all services"
	@echo "  make logs        - Show service logs"
	@echo "  make clean       - Clean up containers and volumes"
	@echo ""
	@echo "Database:"
	@echo "  make db-reset    - Reset database with fresh schema"
	@echo "  make backup      - Create database backup"

# Installation
install:
	@echo "📦 Installing frontend dependencies..."
	cd frontend && npm install
	@echo "📦 Installing node_api dependencies..."
	cd node_api && npm install

# Development
dev:
	@echo "🚀 Starting development environment..."
	@if [ ! -f frontend/.env ]; then \
		echo "📝 Creating environment file..."; \
		cp frontend/.env.example frontend/.env; \
		echo "⚠️  Please update frontend/.env with your configuration"; \
	fi
	docker-compose up postgres directus redis -d
	@echo "⏳ Waiting for backend services..."
	@sleep 20
	@echo "✅ Backend ready! Import schema with: make schema"
	@echo "Then start frontend with: make dev-fe"

dev-fe:
	@echo "🎯 Starting frontend development server..."
	cd frontend && npm run dev

dev-api:
	@echo "🎯 Starting node API development server..."
	cd node_api && npm run dev

# Schema setup
schema:
	@echo "🗃️ Setting up database schema..."
	@echo "Schema will be automatically loaded from schema/init.sql"
	@echo "Includes: tables, relationships, sample data, and permissions"
	@echo "✅ Schema import completed!"
	@echo "🔗 Directus Admin: http://localhost:8055/admin"
	@echo "🔑 Admin Login: admin@assetmanagement.com / AssetAdmin2024!"
	@echo "📋 Full permissions configured for Administrator role"

# Building
build:
	@echo "🔨 Building frontend..."
	cd frontend && npm run build

# Production
prod:
	@echo "🚀 Starting production environment..."
	docker-compose down
	docker-compose up --build -d
	@echo "⏳ Waiting for services..."
	@sleep 30
	@echo "✅ Production environment ready!"
	@echo "🔗 Frontend: http://localhost:3000"
	@echo "🔗 Directus Admin: http://localhost:8055/admin"

# Docker management
up:
	docker-compose up -d

down:
	docker-compose down

restart:
	docker-compose restart

logs:
	docker-compose logs -f

clean:
	@echo "🧹 Cleaning up..."
	docker-compose down -v
	docker system prune -f
	@echo "✅ Cleanup complete!"

# Database management
db-reset:
	@echo "🗃️ Resetting database..."
	docker-compose down
	docker volume rm enterprise-asset-management_postgres_data || true
	docker-compose up postgres directus redis -d
	@echo "⏳ Waiting for services..."
	@sleep 25
	make schema
	@echo "✅ Database reset complete!"

# Quick start for new developers
quick-start:
	@echo "🚀 Quick start for new developers..."
	make install
	make dev
	make schema
	@echo ""
	@echo "🎯 Ready to develop!"
	@echo "Run 'make dev-fe' to start the frontend development server"

# Show system status
status:
	@echo "📊 System Status:"
	@echo ""
	@echo "Docker Containers:"
	@docker-compose ps