#!/bin/bash
# 验证 Go GIN/GORM 项目结构

set -e

echo "=== Go 项目结构验证 ==="

# 检查 go.mod
if [ ! -f "go.mod" ]; then
    echo "❌ 缺少 go.mod"
    exit 1
fi
echo "✅ go.mod 存在"

# 检查核心目录
DIRS=("internal/service" "internal/dao" "internal/model" "pkg/common")
for dir in "${DIRS[@]}"; do
    if [ -d "$dir" ]; then
        echo "✅ $dir 存在"
    else
        echo "⚠️  $dir 不存在"
    fi
done

# 检查 handler 目录（两种风格）
if [ -d "api" ] || [ -d "internal/handler" ]; then
    echo "✅ handler 目录存在"
else
    echo "⚠️  缺少 api/ 或 internal/handler/"
fi

# 检查反向依赖（dao 不应引用 service）
echo ""
echo "=== 检查依赖方向 ==="
if grep -r "internal/service" internal/dao/ 2>/dev/null; then
    echo "❌ dao 层存在对 service 的反向依赖"
    exit 1
fi
echo "✅ 无反向依赖"

# 检查 time.Now() 使用
echo ""
echo "=== 检查 time.Now() 使用 ==="
if grep -rn "time\.Now()" --include="*.go" internal/ api/ 2>/dev/null | grep -v "_test.go"; then
    echo "⚠️  发现直接使用 time.Now()，应使用 TimeUtils.Now()"
else
    echo "✅ 无直接 time.Now() 调用"
fi

echo ""
echo "=== 验证完成 ==="
