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