2 Star 0 Fork 0

TeamsHub/backend-gopkg

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
mysql.go 3.50 KB
一键复制 编辑 原始数据 按行查看 历史
HCY 提交于 2024-05-14 12:49 . [ADD] GenerateInt64
package orm
import (
"fmt"
"gitee.com/wuzheng0709/backend-gopkg/infrastructure/config"
"gitee.com/wuzheng0709/backend-gopkg/infrastructure/pkg/gin/log"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
)
type Writer struct {
}
func (w Writer) Printf(format string, args ...interface{}) {
// log.Infof(format, args...)
fmt.Printf(format, args...)
}
var mysqlDB *gorm.DB
var d *dbRepo
func init() {
if config.C.Mysql.Address != "" {
mysqlDB = ConnectMySql(config.C.Mysql.UserName, config.C.Mysql.Password, config.C.Mysql.Address, config.C.Mysql.Port, config.C.Mysql.DbName)
}
//写入数据库
//d = &dbRepo{
// DbR: db,
// DbW: db,
// SeafileDb: ConnectMySql("seafile", "Kohn3eep", "39.99.183.235", 3306, "seafile_db"),
//}
}
func ConnectMySql(MySqlUserName, Password, Address string, Port int, dbName string) *gorm.DB {
log.Info(dbName + " mysql 链接中。。。")
var err error
//newLogger := logger.New(
// Writer{},
// logger.Config{
// SlowThreshold: 200 * time.Millisecond, // Slow SQL threshold
// LogLevel: logger.Info, // Log level
// IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
// Colorful: true, // Disable color
// },
//)
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
MySqlUserName, Password, Address, Port, dbName)
newdb, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true, // 使用单数表名,启用该选项,此时,`User` 的表名应该是 `user`
},
Logger: log.NewGorm().LogMode(logger.Info),
})
if err != nil {
log.Fatalf("failed to connect database:%v", err)
}
// newdb.SingularTable(true)
//newdb.Use(
// dbresolver.Register(dbresolver.Config{ /* xxx */ }).
// SetConnMaxIdleTime(time.Hour).
// SetConnMaxLifetime(24 * time.Hour).
// SetMaxIdleConns(100).
// SetMaxOpenConns(200),
//)
// newdb.Use(prometheus.New(prometheus.Config{
// DBName: "micro", // 使用 `DBName` 作为指标 label
// RefreshInterval: 15, // 指标刷新频率(默认为 15 秒)
// PushAddr: "39.100.125.246:9090", // 如果配置了 `PushAddr`,则推送指标
// StartServer: true, // 启用一个 http 服务来暴露指标
// HTTPServerPort: 3920, // 配置 http 服务监听端口,默认端口为 8080 (如果您配置了多个,只有第一个 `HTTPServerPort` 会被使用)
// MetricsCollector: []prometheus.MetricsCollector{
// &prometheus.MySQL{
// VariableNames: []string{"Threads_running"},
// },
// }, // 用户自定义指标
// }))
log.Info(dbName + " mysql 链接成功")
return newdb
}
// get db
func GetMysqlDB() *gorm.DB {
return mysqlDB
}
var _ Repo = (*dbRepo)(nil)
type Repo interface {
i()
GetDbR() *gorm.DB
GetDbW() *gorm.DB
GetSeafileDb() *gorm.DB
DbRClose() error
DbWClose() error
}
type dbRepo struct {
DbR *gorm.DB
DbW *gorm.DB
SeafileDb *gorm.DB
}
func GetDBRepo() *dbRepo {
return d
}
func (d *dbRepo) i() {}
func (d *dbRepo) GetDbR() *gorm.DB {
return d.DbR
}
func (d *dbRepo) GetDbW() *gorm.DB {
return d.DbW
}
func (d *dbRepo) GetSeafileDb() *gorm.DB {
return d.SeafileDb
}
func (d *dbRepo) DbRClose() error {
sqlDB, _ := d.DbR.DB()
return sqlDB.Close()
}
func (d *dbRepo) DbWClose() error {
sqlDB, _ := d.DbW.DB()
return sqlDB.Close()
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wuzheng0709/backend-gopkg.git
git@gitee.com:wuzheng0709/backend-gopkg.git
wuzheng0709
backend-gopkg
backend-gopkg
v1.3.6

搜索帮助

D67c1975 1850385 1daf7b77 1850385