#!/bin/bash

# TK-MP-Project Docker 실행 스크립트
# 환경별로 적절한 Docker Compose 설정을 사용하여 실행

set -e

# 색상 정의
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 도움말 함수
show_help() {
    echo -e "${BLUE}TK-MP-Project Docker 실행 스크립트${NC}"
    echo ""
    echo "사용법: $0 [환경] [명령]"
    echo ""
    echo "환경:"
    echo "  dev        개발 환경 (기본값)"
    echo "  prod       프로덕션 환경"
    echo "  synology   시놀로지 NAS 환경"
    echo ""
    echo "명령:"
    echo "  up         서비스 시작 (기본값)"
    echo "  down       서비스 중지"
    echo "  restart    서비스 재시작"
    echo "  logs       로그 확인"
    echo "  build      이미지 다시 빌드"
    echo "  status     서비스 상태 확인"
    echo ""
    echo "예시:"
    echo "  $0                    # 개발 환경으로 시작"
    echo "  $0 dev up            # 개발 환경으로 시작"
    echo "  $0 prod up           # 프로덕션 환경으로 시작"
    echo "  $0 synology up       # 시놀로지 환경으로 시작"
    echo "  $0 dev logs          # 개발 환경 로그 확인"
    echo "  $0 dev down          # 개발 환경 중지"
}

# 환경 설정
ENVIRONMENT=${1:-dev}
COMMAND=${2:-up}

# 환경별 Docker Compose 파일 설정
case $ENVIRONMENT in
    dev|development)
        COMPOSE_FILES="-f docker-compose.yml -f docker-compose.override.yml"
        ENV_NAME="개발"
        ;;
    prod|production)
        COMPOSE_FILES="-f docker-compose.yml -f docker-compose.prod.yml"
        ENV_NAME="프로덕션"
        ;;
    synology|nas)
        COMPOSE_FILES="-f docker-compose.yml -f docker-compose.synology.yml"
        ENV_NAME="시놀로지"
        ;;
    help|-h|--help)
        show_help
        exit 0
        ;;
    *)
        echo -e "${RED}❌ 알 수 없는 환경: $ENVIRONMENT${NC}"
        echo "사용 가능한 환경: dev, prod, synology"
        exit 1
        ;;
esac

# .env 파일 확인
if [ ! -f .env ]; then
    echo -e "${YELLOW}⚠️  .env 파일이 없습니다. env.example을 복사하여 .env 파일을 생성합니다.${NC}"
    cp env.example .env
    echo -e "${GREEN}✅ .env 파일이 생성되었습니다. 필요시 설정을 수정하세요.${NC}"
fi

# 명령 실행
echo -e "${BLUE}🐳 TK-MP-Project ${ENV_NAME} 환경 ${COMMAND} 실행${NC}"
echo "Docker Compose 파일: $COMPOSE_FILES"
echo ""

case $COMMAND in
    up|start)
        echo -e "${GREEN}🚀 서비스를 시작합니다...${NC}"
        docker-compose $COMPOSE_FILES up -d
        echo ""
        echo -e "${GREEN}✅ 서비스가 시작되었습니다!${NC}"
        echo ""
        echo "접속 주소:"
        case $ENVIRONMENT in
            dev|development)
                echo "  - 프론트엔드: http://localhost:13000"
                echo "  - 백엔드 API: http://localhost:18000"
                echo "  - API 문서: http://localhost:18000/docs"
                echo "  - pgAdmin: http://localhost:5050"
                ;;
            prod|production)
                echo "  - 웹사이트: http://localhost"
                echo "  - HTTPS: https://localhost (SSL 설정 시)"
                ;;
            synology|nas)
                echo "  - 프론트엔드: http://localhost:10173"
                echo "  - 백엔드 API: http://localhost:10080"
                echo "  - API 문서: http://localhost:10080/docs"
                echo "  - pgAdmin: http://localhost:15050"
                ;;
        esac
        ;;
    down|stop)
        echo -e "${YELLOW}🛑 서비스를 중지합니다...${NC}"
        docker-compose $COMPOSE_FILES down
        echo -e "${GREEN}✅ 서비스가 중지되었습니다.${NC}"
        ;;
    restart)
        echo -e "${YELLOW}🔄 서비스를 재시작합니다...${NC}"
        docker-compose $COMPOSE_FILES restart
        echo -e "${GREEN}✅ 서비스가 재시작되었습니다.${NC}"
        ;;
    logs)
        echo -e "${BLUE}📋 로그를 확인합니다...${NC}"
        docker-compose $COMPOSE_FILES logs -f
        ;;
    build)
        echo -e "${BLUE}🔨 이미지를 다시 빌드합니다...${NC}"
        docker-compose $COMPOSE_FILES build --no-cache
        echo -e "${GREEN}✅ 빌드가 완료되었습니다.${NC}"
        ;;
    status|ps)
        echo -e "${BLUE}📊 서비스 상태를 확인합니다...${NC}"
        docker-compose $COMPOSE_FILES ps
        ;;
    *)
        echo -e "${RED}❌ 알 수 없는 명령: $COMMAND${NC}"
        echo "사용 가능한 명령: up, down, restart, logs, build, status"
        exit 1
        ;;
esac

