package data import ( "kra/internal/conf" "kra/internal/data/query" _ "github.com/go-sql-driver/mysql" "github.com/google/wire" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" ) // ProviderSet is data providers. var ProviderSet = wire.NewSet(NewDB, NewData) // Data 数据层 type Data struct { DB *gorm.DB } // NewDB 创建数据库连接 func NewDB(c *conf.Data) (*gorm.DB, error) { db, err := gorm.Open(mysql.Open(c.Database.Source), &gorm.Config{ Logger: logger.Default.LogMode(logger.Info), }) if err != nil { return nil, err } // 初始化 gen query query.SetDefault(db) return db, nil } // NewData 创建 Data 实例 func NewData(db *gorm.DB) (*Data, func(), error) { cleanup := func() { sqlDB, _ := db.DB() if sqlDB != nil { sqlDB.Close() } } return &Data{DB: db}, cleanup, nil }