kra/internal/data/data.go

97 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package data
import (
"fmt"
"kra/internal/biz/example"
"kra/internal/conf"
dataexample "kra/internal/data/example"
datasystem "kra/internal/data/system"
pkgcasbin "kra/pkg/casbin"
"github.com/casbin/casbin/v2"
_ "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,
NewCasbinEnforcer,
NewOssUploader,
NewDataAuthorityProvider,
// System
datasystem.NewUserRepo,
datasystem.NewApiRepo,
datasystem.NewAuthorityRepo,
datasystem.NewAuthorityBtnRepo,
datasystem.NewCasbinRepo,
datasystem.NewMenuRepo,
datasystem.NewDictionaryRepo,
datasystem.NewDictionaryDetailRepo,
datasystem.NewJwtBlacklistRepo,
datasystem.NewOperationRecordRepo,
datasystem.NewParamsRepo,
datasystem.NewErrorRepo,
datasystem.NewVersionRepo,
datasystem.NewExportTemplateRepo,
datasystem.NewAutoCodeRepo,
datasystem.NewAutoCodeHistoryRepo,
datasystem.NewAutoCodePackageRepo,
// Example
dataexample.NewFileUploadRepo,
dataexample.NewCustomerRepo,
dataexample.NewAttachmentCategoryRepo,
dataexample.NewBreakpointContinueRepo,
)
// Data 数据层包装器
type Data struct {
db *gorm.DB
}
// NewData 创建数据层包装器
func NewData(db *gorm.DB) (*Data, func(), error) {
cleanup := func() {
// 关闭数据库连接
sqlDB, err := db.DB()
if err == nil {
sqlDB.Close()
}
}
return &Data{db: db}, cleanup, nil
}
// NewDB 创建数据库连接
func NewDB(c *conf.Mysql) (*gorm.DB, error) {
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?%s",
c.Username, c.Password, c.Path, c.Port, c.DbName, c.Config)
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
})
if err != nil {
return nil, err
}
return db, nil
}
// NewCasbinEnforcer 创建Casbin Enforcer
func NewCasbinEnforcer(db *gorm.DB) (*casbin.SyncedCachedEnforcer, error) {
return pkgcasbin.InitCasbin(db, "")
}
// NewOssUploader 创建OSS上传器默认使用空实现
func NewOssUploader() example.OssUploader {
// TODO: 根据配置返回实际的OSS实现
return &example.NilOssUploader{}
}
// NewDataAuthorityProvider 创建数据权限提供者(默认使用简单实现)
func NewDataAuthorityProvider() example.DataAuthorityProvider {
// TODO: 根据需要返回实际的数据权限实现
return &example.SimpleDataAuthorityProvider{}
}