#!/bin/bash

# AI 小说平台后端部署脚本 - Cloudflare Workers
# 使用方法: ./deploy-backend.sh

echo "🚀 开始部署后端到 Cloudflare Workers..."

# 检查是否登录 Cloudflare
echo "📋 检查 Cloudflare 登录状态..."
if ! wrangler auth whoami &> /dev/null; then
    echo "❌ 未登录 Cloudflare，请先运行: wrangler login"
    exit 1
fi

# 安装依赖
echo "📦 安装 Workers 依赖..."
npm ci

# 创建 D1 数据库（如果不存在）
echo "🗄️ 检查 D1 数据库..."
if ! wrangler d1 info ainovel-db &> /dev/null; then
    echo "🆕 创建 D1 数据库..."
    wrangler d1 create ainovel-db
    
    echo "⚠️  请将上面的 database_id 复制到 wrangler.toml 文件中"
    echo "然后重新运行此脚本"
    exit 1
fi

# 生成数据库类型
echo "🔧 生成数据库类型定义..."
wrangler d1 generate ainovel-db

# 运行数据库迁移
echo "🔄 运行数据库迁移..."
if [ -f "./migrations/001_initial_tables.sql" ]; then
    wrangler d1 execute ainovel-db --file=./migrations/001_initial_tables.sql
else
    echo "⚠️  迁移文件不存在，将跳过数据库迁移"
fi

# 本地开发测试
echo "🧪 本地开发测试..."
read -p "是否要先在本地运行测试？(y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    echo "启动本地开发服务器..."
    npm run dev &
    DEV_PID=$!
    echo "本地服务器已启动 (PID: $DEV_PID)"
    echo "请访问 http://localhost:8787 进行测试"
    echo "按 Ctrl+C 停止服务器并继续部署"
    wait $DEV_PID
fi

# 部署到 Workers
echo "🚀 部署到 Cloudflare Workers..."
if [ "$1" == "--staging" ]; then
    echo "🎯 部署到测试环境..."
    npm run deploy:staging
else
    echo "🎯 部署到生产环境..."
    npm run deploy
fi

# 检查部署状态
if [ $? -eq 0 ]; then
    echo "✅ 后端部署成功!"
    echo ""
    echo "📖 部署信息："
    echo "1. Workers URL: https://ainovel-backend.your-subdomain.workers.dev"
    echo "2. 环境变量设置：wrangler secret put GEMINI_API_KEY"
    echo "3. 查看日志: npm run tail"
    echo ""
    echo "🎉 后端部署完成!"
else
    echo "❌ 后端部署失败!"
    exit 1
fi