You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
1.5 KiB
63 lines
1.5 KiB
package data |
|
|
|
import ( |
|
"git.gz.internal.jumaiyx.cn/jm/jmproto/conf" |
|
"git.gz.internal.jumaiyx.cn/job/room-mike-hot-timer/internal/data/model" |
|
"git.gz.internal.jumaiyx.cn/job/room-mike-hot-timer/pkg/redis" |
|
"git.gz.internal.jumaiyx.cn/pkg/log" |
|
"github.com/google/wire" |
|
_ "github.com/jackc/pgx/v4/stdlib" |
|
"gorm.io/driver/postgres" |
|
"gorm.io/gorm" |
|
"time" |
|
) |
|
|
|
// ProviderSet is data providers. |
|
var ProviderSet = wire.NewSet( |
|
NewData, |
|
NewRoomMikeRepo, |
|
NewInitValue, |
|
) |
|
|
|
// Data . |
|
type Data struct { |
|
db *gorm.DB |
|
cache *redis.Cache |
|
} |
|
|
|
// NewData . |
|
func NewData(c *conf.Data, log log.Logger) (*Data, func(), error) { |
|
cleanup := func() { |
|
log.Info("closing the data resources") |
|
} |
|
|
|
dsn := c.Database.Source |
|
client, err := gorm.Open(postgres.Open(dsn), &gorm.Config{}) |
|
if err != nil { |
|
log.Errorf("failed creating schema resources: %v", err) |
|
return nil, nil, err |
|
} |
|
sqlDB, err := client.DB() |
|
if err != nil { |
|
log.Errorf("failed creating schema resources: %v", err) |
|
return nil, nil, err |
|
} |
|
// SetMaxIdleConns 设置空闲连接池中连接的最大数量 |
|
sqlDB.SetMaxIdleConns(10) |
|
|
|
// SetMaxOpenConns 设置打开数据库连接的最大数量 |
|
sqlDB.SetMaxOpenConns(100) |
|
|
|
// SetConnMaxLifetime 设置了连接可复用的最大时间 |
|
sqlDB.SetConnMaxLifetime(time.Hour) |
|
cache := redis.NewCache(log, c.Redis) |
|
err = model.AutoMigrate(client, cache) |
|
if err != nil { |
|
log.Errorf("failed creating schema resources: %v", err) |
|
return nil, nil, err |
|
} |
|
return &Data{ |
|
db: client, |
|
cache: cache, // redis |
|
}, cleanup, nil |
|
}
|
|
|