using Microsoft.AspNetCore.Mvc;

namespace DramaLing.API.Controllers;

[ApiController]
[Route("api/[controller]")]
public class HealthController : ControllerBase
{
    /// <summary>
    /// 健康檢查端點
    /// </summary>
    /// <returns>服務健康狀態</returns>
    [HttpGet]
    public IActionResult GetHealth()
    {
        var response = new
        {
            Status = "Healthy",
            Timestamp = DateTime.UtcNow,
            Version = "1.0.0",
            Service = "Drama Ling API"
        };
        
        return Ok(response);
    }

    /// <summary>
    /// 詳細健康檢查
    /// </summary>
    /// <returns>詳細的系統狀態</returns>
    [HttpGet("detailed")]
    public IActionResult GetDetailedHealth()
    {
        var response = new
        {
            Status = "Healthy",
            Timestamp = DateTime.UtcNow,
            Version = "1.0.0",
            Service = "Drama Ling API",
            Environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "Production",
            Uptime = Environment.TickCount64,
            Database = "Connected", // TODO: 實際檢查資料庫連線
            Cache = "Connected",    // TODO: 實際檢查Redis連線
            Memory = new
            {
                WorkingSet = GC.GetTotalMemory(false),
                GcCollections = new
                {
                    Gen0 = GC.CollectionCount(0),
                    Gen1 = GC.CollectionCount(1),
                    Gen2 = GC.CollectionCount(2)
                }
            }
        };
        
        return Ok(response);
    }
}