package main

import (
	"log"

	"git.huangwc.com/pig/pig-farm-controller/internal/core"
	"git.huangwc.com/pig/pig-farm-controller/internal/infra/logs"
)

func main() {
	// 1. 创建应用实例
	// 所有复杂的初始化逻辑都已封装在 NewApplication 中
	app, err := core.NewApplication("config/config.yml")
	if err != nil {
		// 在应用启动的最早期阶段，如果核心组件创建失败，
		// 我们的自定义 logger 可能还未初始化，因此这里使用标准库的 log.Fatalf
		log.Fatalf("应用初始化失败: %v", err)
	}

	// 2. 启动应用
	// Start 方法会阻塞，直到应用被关闭
	if err := app.Start(); err != nil {
		// 如果 Start 过程（主要是优雅关闭阶段）出现错误，
		// 此时我们的 logger 已经是可用的，可以用它来记录错误。
		logs.GetLogger(app.Ctx).Errorf("应用启动或关闭时发生错误: %v", err)
	}
}
