.PHONY: help install build run dev clean docker-up docker-down migrate test

help:
	@echo "漏洞管理后端 API 开发命令"
	@echo ""
	@echo "  make install      - 安装 Go 依赖"
	@echo "  make build        - 编译二进制文件"
	@echo "  make run          - 运行服务"
	@echo "  make dev          - 开发模式运行（需要安装 air）"
	@echo "  make clean        - 清理构建产物"
	@echo "  make docker-up    - 启动 Docker MySQL"
	@echo "  make docker-down  - 停止 Docker MySQL"
	@echo "  make migrate      - 初始化数据库"
	@echo "  make test         - 运行测试"
	@echo ""

install:
	@echo "安装 Go 依赖..."
	go mod download
	go mod tidy

build:
	@echo "编译二进制文件..."
	go build -o bin/vul-backend cmd/api/main.go
	@echo "编译完成: bin/vul-backend"

run:
	@echo "启动服务..."
	go run cmd/api/main.go

dev:
	@echo "开发模式启动..."
	@if command -v air > /dev/null; then \
		air -c .air.toml; \
	else \
		echo "未安装 air，使用 go run..."; \
		go run cmd/api/main.go; \
	fi

clean:
	@echo "清理构建产物..."
	rm -rf bin/
	go clean

docker-up:
	@echo "启动 MySQL 容器..."
	docker-compose -f scripts/docker-compose.yml up -d
	@echo "等待 MySQL 就绪..."
	@sleep 5
	@echo "MySQL 已启动！"

docker-down:
	@echo "停止 MySQL 容器..."
	docker-compose -f scripts/docker-compose.yml down

migrate:
	@echo "初始化数据库..."
	@if docker ps | grep -q vul-backend-mysql; then \
		docker exec -i vul-backend-mysql mysql -uroot -psecuritycenter < scripts/mysql-init.sql; \
		echo "数据库初始化完成！"; \
	else \
		echo "错误: MySQL 容器未运行，请先执行 make docker-up"; \
		exit 1; \
	fi

test:
	@echo "运行测试..."
	go test -v ./...

logs:
	@echo "查看 MySQL 日志..."
	docker-compose -f scripts/docker-compose.yml logs -f mysql

.DEFAULT_GOAL := help
