```
feat(database): 自动迁移表结构并优化数据库初始化函数 将 `AutoMigrate` 逻辑从各数据库初始化方法中提取至统一的 `NewDatabase` 方法内, 避免重复代码。同时修改 `Databases`、`Etcd`、`Memory` 和 `RedisCache` 函数签名, 使其返回实例而非通过参数传递,提高代码可读性和一致性。 ```
This commit is contained in:
parent
518c237061
commit
21716c4340
|
@ -34,6 +34,14 @@ func NewDatabase(driver string, dsn []string, options *types.SqlOptions) (db *go
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// auto migrate table.
|
||||||
|
if len(MigrateTables) > 0 {
|
||||||
|
err = db.AutoMigrate(MigrateTables...)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return db, nil
|
return db, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,13 +82,6 @@ func NewMysql(dsn []string, options *types.SqlOptions) (gormDb *gorm.DB, err err
|
||||||
// SetConnMaxLifetime 设置了连接可复用的最大时间。
|
// SetConnMaxLifetime 设置了连接可复用的最大时间。
|
||||||
sqlDB.SetConnMaxLifetime(options.ConnMaxLifetime)
|
sqlDB.SetConnMaxLifetime(options.ConnMaxLifetime)
|
||||||
|
|
||||||
if len(MigrateTables) > 0 {
|
|
||||||
err = gormDb.AutoMigrate(MigrateTables...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return gormDb, nil
|
return gormDb, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,12 +120,5 @@ func NewPostgres(dsn []string, options *types.SqlOptions) (gormDb *gorm.DB, err
|
||||||
// SetConnMaxLifetime 设置了连接可复用的最大时间。
|
// SetConnMaxLifetime 设置了连接可复用的最大时间。
|
||||||
sqlDB.SetConnMaxLifetime(options.ConnMaxLifetime)
|
sqlDB.SetConnMaxLifetime(options.ConnMaxLifetime)
|
||||||
|
|
||||||
if len(MigrateTables) > 0 {
|
|
||||||
err = gormDb.AutoMigrate(MigrateTables...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Databases(cfg *conf.DBConf, db *gorm.DB, opts *types.SqlOptions) {
|
func Databases(cfg *conf.DBConf, opts *types.SqlOptions) *gorm.DB {
|
||||||
if cfg == nil || len(cfg.Source) == 0 {
|
if cfg == nil || len(cfg.Source) == 0 {
|
||||||
panic("No Database Source Found !")
|
panic("No Database Source Found !")
|
||||||
}
|
}
|
||||||
|
@ -18,10 +18,10 @@ func Databases(cfg *conf.DBConf, db *gorm.DB, opts *types.SqlOptions) {
|
||||||
print.Info("[BSM - %s] Databases: %v", vars.ServiceKey, cfg)
|
print.Info("[BSM - %s] Databases: %v", vars.ServiceKey, cfg)
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
db, err = database.NewDatabase(cfg.Driver, cfg.Source, opts)
|
db, err := database.NewDatabase(cfg.Driver, cfg.Source, opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
print.Error("Database Init Failed !")
|
print.Error("Database Init Failed !")
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
return
|
return db
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import (
|
||||||
clientv3 "go.etcd.io/etcd/client/v3"
|
clientv3 "go.etcd.io/etcd/client/v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Etcd(cfg *conf.EtcdConf, cli *clientv3.Client) {
|
func Etcd(cfg *conf.EtcdConf) (cli *clientv3.Client){
|
||||||
if cfg == nil || len(cfg.Endpoints) == 0 {
|
if cfg == nil || len(cfg.Endpoints) == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
"github.com/allegro/bigcache/v3"
|
"github.com/allegro/bigcache/v3"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Memory(cli *bigcache.BigCache, opts *bigcache.Config) {
|
func Memory(opts *bigcache.Config) (cli *bigcache.BigCache) {
|
||||||
if opts == nil {
|
if opts == nil {
|
||||||
opts = &bigcache.Config{
|
opts = &bigcache.Config{
|
||||||
Shards: 1024,
|
Shards: 1024,
|
||||||
|
@ -32,4 +32,5 @@ func Memory(cli *bigcache.BigCache, opts *bigcache.Config) {
|
||||||
}
|
}
|
||||||
|
|
||||||
print.Success("[BSM - %s] Memory Cache: Shards=%d, MaxEntrySize=%d", vars.ServiceKey, opts.Shards, opts.MaxEntrySize)
|
print.Success("[BSM - %s] Memory Cache: Shards=%d, MaxEntrySize=%d", vars.ServiceKey, opts.Shards, opts.MaxEntrySize)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,11 +6,13 @@ import (
|
||||||
"git.apinb.com/bsm-sdk/core/vars"
|
"git.apinb.com/bsm-sdk/core/vars"
|
||||||
)
|
)
|
||||||
|
|
||||||
func RedisCache(cfg string, cli *redis.RedisClient) {
|
func RedisCache(cfg string) (cli *redis.RedisClient) {
|
||||||
if cfg != "" {
|
if cfg != "" {
|
||||||
cli = redis.New(cfg, vars.ServiceKey)
|
cli = redis.New(cfg, vars.ServiceKey)
|
||||||
|
|
||||||
// print inform.
|
// print inform.
|
||||||
print.Info("[BSM - %s] Cache: %s, DBIndex: %d", vars.ServiceKey, cfg, cli.DB)
|
print.Info("[BSM - %s] Cache: %s, DBIndex: %d", vars.ServiceKey, cfg, cli.DB)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue