package initialize import ( "fmt" "github.com/redis/go-redis/v9" "gold-shop/config" "gopkg.in/yaml.v3" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" "os" "path/filepath" ) const FilePath = "config.yaml" func InitConfig(filePath string) *config.Config { content, err := os.ReadFile(filePath) if err != nil { fmt.Printf("err: %v\n", err) panic(err) } var conf config.Config if err := yaml.Unmarshal(content, &conf); err != nil { fmt.Printf("err: %v\n", err) panic(err) } return &conf } func getCurrentDirectory() (string, error) { path, err := filepath.Abs(os.Args[0]) if err != nil { return "", err } dir := filepath.Dir(path) return dir, nil } func InitDB(conf *config.Config) *gorm.DB { var mysqlLogger logger.Interface mysqlLogger = logger.Default.LogMode(logger.Info) db, err := gorm.Open(mysql.Open(conf.Database.GetDsn()), &gorm.Config{ Logger: mysqlLogger, }) if err != nil { panic(err) } return db } func InitRedis(conf *config.Config) *redis.Client { return redis.NewClient(&redis.Options{ Addr: conf.Redis.Host + ":" + conf.Redis.Port, Password: conf.Redis.Password, // no password set DB: conf.Redis.DB, // use default DB }) }