package main

import (
	log "app.yhyue.com/moapp/jylog"
	"bp.jydev.jianyu360.cn/BaseService/gateway/common/db"
	"bp.jydev.jianyu360.cn/BaseService/gateway/core/logs"
	"bp.jydev.jianyu360.cn/BaseService/gateway/core/proxy"
	"bp.jydev.jianyu360.cn/BaseService/gateway/core/proxy/middleware"
	"bp.jydev.jianyu360.cn/BaseService/gateway/core/proxy/rpc"
	"bp.jydev.jianyu360.cn/BaseService/gateway/core/util"
	"github.com/gogf/gf/contrib/trace/jaeger/v2"
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/os/gcfg"
	"github.com/gogf/gf/v2/os/gctx"
)

func init() {
	g.Cfg().GetAdapter().(*gcfg.AdapterFile).SetFileName("./etc/config.yaml") //设置配置文件
	db.InitDatabases()                                                        // 初始化数据库
	logs.InitLogs()                                                           // 初始化日志组件
	rpc.InitBaseServerRpc()                                                   // 初始化rpc服务连接
	middleware.InitFilterPolyManager()                                        // 初始化
	util.InitApiEncryptPrivatePublicKey()                                     //初始化公钥
}

func main() {
	mainCtx := gctx.New()
	//初始化链路跟踪
	if jaegerAddress := g.Cfg().MustGet(mainCtx, "jaeger.address", "").String(); jaegerAddress != "" {
		tp, err := jaeger.Init(g.Cfg().MustGet(mainCtx, "jaeger.name", "gateway").String(), jaegerAddress)
		if err != nil {
			log.WithContext(mainCtx).Fatal(err)
		}
		defer tp.Shutdown(mainCtx)
	}
	//初始化网关服务并启动服务
	proxy.InitGateWayServer(mainCtx).Run()
}
