You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.2 KiB
Go

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
})
}