package main import ( "log" "sync" "time" "github.com/go-redis/redis/v8" "github.com/rocboss/paopao-ce/global" "github.com/rocboss/paopao-ce/internal/model" "github.com/rocboss/paopao-ce/internal/service" "github.com/rocboss/paopao-ce/pkg/logger" "github.com/rocboss/paopao-ce/pkg/setting" "github.com/rocboss/paopao-ce/pkg/zinc" ) func init() { err := setupSetting() if err != nil { log.Fatalf("init.setupSetting err: %v", err) } err = setupLogger() if err != nil { log.Fatalf("init.setupLogger err: %v", err) } err = setupDBEngine() if err != nil { log.Fatalf("init.setupDBEngine err: %v", err) } client := zinc.NewClient(global.SearchSetting) service.Initialize(global.DBEngine, client) } func setupSetting() error { setting, err := setting.NewSetting() if err != nil { return err } err = setting.ReadSection("Server", &global.ServerSetting) if err != nil { return err } err = setting.ReadSection("App", &global.AppSetting) if err != nil { return err } err = setting.ReadSection("Runtime", &global.RuntimeSetting) if err != nil { return err } err = setting.ReadSection("Log", &global.LoggerSetting) if err != nil { return err } err = setting.ReadSection("Database", &global.DatabaseSetting) if err != nil { return err } err = setting.ReadSection("Search", &global.SearchSetting) if err != nil { return err } err = setting.ReadSection("Redis", &global.RedisSetting) if err != nil { return err } err = setting.ReadSection("JWT", &global.JWTSetting) if err != nil { return err } err = setting.ReadSection("Storage", &global.AliossSetting) if err != nil { return err } global.JWTSetting.Expire *= time.Second global.ServerSetting.ReadTimeout *= time.Second global.ServerSetting.WriteTimeout *= time.Second global.Mutex = &sync.Mutex{} return nil } func setupLogger() error { logger, err := logger.New(global.LoggerSetting) if err != nil { return err } global.Logger = logger return nil } func setupDBEngine() error { var err error global.DBEngine, err = model.NewDBEngine(global.DatabaseSetting) if err != nil { return err } global.Redis = redis.NewClient(&redis.Options{ Addr: global.RedisSetting.Host, Password: global.RedisSetting.Password, DB: global.RedisSetting.DB, }) return nil }