完成nacos和数据库等配置文件

This commit is contained in:
loser 2022-05-25 18:43:49 +08:00
parent 9bb43f4484
commit af58c03c7c
9 changed files with 128 additions and 0 deletions

9
.env Normal file
View File

@ -0,0 +1,9 @@
# Nacos配置
NACOS_HOST=127.0.0.1
NACOS_PORT=8848
# 命名空间用默认的public的话这儿就不写
NACOS_NAMESPACE=41f4f415-970b-4839-8f71-d4fa4c6d6c30
# 除本文件以外的其他托管到Nacos的配置文件 Ps. 后面可以把NACOS_*和系统启动相关的留着其他的全部托管到Nacos
NACOS_CONFIG_NAME=mysql.yaml
# 是否关闭gorm自动更新表结构
DISABLE_SYNC_MODELS=false

23
client/mysql.go Normal file
View File

@ -0,0 +1,23 @@
package client
import (
"git.echol.cn/loser/logger/log"
"online_code/config"
"git.echol.cn/loser/logger"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
var MySQL *gorm.DB
func InitMySQLClient() {
// 创建连接对象
conn, err := gorm.Open(mysql.Open(config.Scd.MySQL.GetDSN()), &gorm.Config{Logger: logger.DefaultGormLogger()})
if err != nil {
log.Panic("初始化MySQL连接失败, 错误信息: %v", err)
} else {
log.Debug("MySQL连接成功")
}
MySQL = conn
}

26
client/redis.go Normal file
View File

@ -0,0 +1,26 @@
package client
import (
"context"
"git.echol.cn/loser/logger/log"
"github.com/go-redis/redis/v8"
"online_code/config"
)
var Redis *redis.Client
func InitRedisClient() {
conf := config.Scd.Redis
// 初始化连接
conn := redis.NewClient(&redis.Options{
Addr: conf.GetDSN(),
Password: conf.Password,
DB: conf.Db,
})
if err := conn.Ping(context.Background()).Err(); err != nil {
log.Panicf("Redis连接初始化失败: %v", err)
} else {
log.Debug("Redis连接初始化成功")
}
Redis = conn
}

9
config/app.go Normal file
View File

@ -0,0 +1,9 @@
package config
type appInfo struct {
AppName string `mapstructure:"name" yaml:"name"` // 应用名称
Port uint64 `mapstructure:"port" yaml:"port"` // 端口号
Prefix string `mapstructure:"prefix" yaml:"prefix"` // 接口前缀
Version string `mapstructure:"version" yaml:"version"` // 版本号
Monster bool `mapstructure:"monster" yaml:"monster"` // 妖怪模式
}

12
config/config.go Normal file
View File

@ -0,0 +1,12 @@
package config
var Scd systemConfigData
var Nacos nacosConfig
// 配置信息
type systemConfigData struct {
Admin appInfo `mapstructure:"admin" yaml:"admin"` // 系统配置-Admin
Api appInfo `mapstructure:"api" yaml:"api"` // 系统配置-Api
MySQL mysqlConfig `mapstructure:"mysql" yaml:"mysql"` // MySQL配置
Redis redisConfig `mapstructure:"redis" yaml:"redis"` // Redis配置
}

20
config/mysql.go Normal file
View File

@ -0,0 +1,20 @@
package config
import (
"fmt"
)
// MySQL配置
type mysqlConfig struct {
Host string `mapstructure:"host" yaml:"host"` // 主机
Port int `mapstructure:"port" yaml:"port"` // 端口
User string `mapstructure:"user" yaml:"user"` // 用户名
Password string `mapstructure:"password" yaml:"password"` // 密码
Db string `mapstructure:"db" yaml:"db"` // 数据库名称
}
// GetDSN 返回 MySQL 连接字符串
func (c mysqlConfig) GetDSN() string {
return fmt.Sprintf("%s:%s@tcp(%s:%v)/%s?charset=utf8mb4&parseTime=True&loc=Local",
c.User, c.Password, c.Host, c.Port, c.Db)
}

9
config/nacos.go Normal file
View File

@ -0,0 +1,9 @@
package config
// nacosConfig Nacos配置
type nacosConfig struct {
Host string `env:"NACOS_HOST"` // 主机
Port uint64 `env:"NACOS_PORT" envDefault:"8848"` // 端口
NamespaceId string `env:"NACOS_NAMESPACE"` // 命名空间
CenterConfigName string `env:"NACOS_CONFIG_NAME" envDefault:"gtest.yml"` // 外部配置文件名,多个以逗号隔开
}

15
config/redis.go Normal file
View File

@ -0,0 +1,15 @@
package config
import "fmt"
// Redis配置
type redisConfig struct {
Host string `mapstructure:"host" yaml:"host"` // 主机
Port int `mapstructure:"port" yaml:"port"` // 端口
Password string `mapstructure:"password" yaml:"password"` // 密码
Db int `mapstructure:"db" yaml:"db"` // 数据库名称
}
func (r redisConfig) GetDSN() string {
return fmt.Sprintf("%s:%v", r.Host, r.Port)
}

5
go.mod
View File

@ -5,14 +5,18 @@ go 1.18
require ( require (
git.echol.cn/loser/logger v1.0.14 git.echol.cn/loser/logger v1.0.14
github.com/gin-gonic/gin v1.7.7 github.com/gin-gonic/gin v1.7.7
github.com/go-redis/redis/v8 v8.11.5
github.com/google/uuid v1.1.2 github.com/google/uuid v1.1.2
gorm.io/driver/mysql v1.3.2
gorm.io/gorm v1.23.5 gorm.io/gorm v1.23.5
) )
require ( require (
gitee.ltd/lxh/logger v1.0.14 // indirect
github.com/beorn7/perks v1.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect
github.com/caarlos0/env/v6 v6.9.2 // indirect github.com/caarlos0/env/v6 v6.9.2 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
github.com/gin-contrib/sse v0.1.0 // indirect github.com/gin-contrib/sse v0.1.0 // indirect
github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/kit v0.12.0 // indirect
github.com/go-kit/log v0.2.1 // indirect github.com/go-kit/log v0.2.1 // indirect
@ -20,6 +24,7 @@ require (
github.com/go-playground/locales v0.13.0 // indirect github.com/go-playground/locales v0.13.0 // indirect
github.com/go-playground/universal-translator v0.17.0 // indirect github.com/go-playground/universal-translator v0.17.0 // indirect
github.com/go-playground/validator/v10 v10.4.1 // indirect github.com/go-playground/validator/v10 v10.4.1 // indirect
github.com/go-sql-driver/mysql v1.6.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.2 // indirect github.com/golang/protobuf v1.5.2 // indirect
github.com/golang/snappy v0.0.4 // indirect github.com/golang/snappy v0.0.4 // indirect