feat(database): 自动迁移表结构并优化数据库初始化函数 将 `AutoMigrate` 逻辑从各数据库初始化方法中提取至统一的 `NewDatabase` 方法内, 避免重复代码。同时修改 `Databases`、`Etcd`、`Memory` 和 `RedisCache` 函数签名, 使其返回实例而非通过参数传递,提高代码可读性和一致性。 ```
37 lines
831 B
Go
37 lines
831 B
Go
package with
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"git.apinb.com/bsm-sdk/core/print"
|
|
"git.apinb.com/bsm-sdk/core/vars"
|
|
"github.com/allegro/bigcache/v3"
|
|
)
|
|
|
|
func Memory(opts *bigcache.Config) (cli *bigcache.BigCache) {
|
|
if opts == nil {
|
|
opts = &bigcache.Config{
|
|
Shards: 1024,
|
|
LifeWindow: 10 * time.Minute,
|
|
CleanWindow: 5 * time.Minute,
|
|
MaxEntriesInWindow: 1000 * 10 * 60,
|
|
MaxEntrySize: 500,
|
|
Verbose: true,
|
|
HardMaxCacheSize: 8192,
|
|
OnRemove: nil,
|
|
OnRemoveWithReason: nil,
|
|
}
|
|
}
|
|
|
|
var err error
|
|
cli, err = bigcache.New(context.Background(), *opts)
|
|
if err != nil {
|
|
print.Error("Memory Cache Fatal Error")
|
|
panic(err)
|
|
}
|
|
|
|
print.Success("[BSM - %s] Memory Cache: Shards=%d, MaxEntrySize=%d", vars.ServiceKey, opts.Shards, opts.MaxEntrySize)
|
|
return
|
|
}
|