代码拉取完成,页面将自动刷新
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()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。