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.
 
 
 
 
 
 

59 lines
1.2 KiB

// Code scaffolded by goctl. Safe to edit.
// goctl 1.9.2
package svc
import (
"github.com/youruser/base/internal/config"
"github.com/youruser/base/internal/middleware"
"github.com/youruser/base/model"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"github.com/zeromicro/go-zero/rest"
)
type ServiceContext struct {
Config config.Config
Cors rest.Middleware
Log rest.Middleware
Auth rest.Middleware
// 数据库连接
DB *gorm.DB
}
func NewServiceContext(c config.Config) *ServiceContext {
// 创建数据库连接
dsn := c.MySQL.DSN
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic("Failed to connect database: " + err.Error())
}
// 自动迁移表
err = db.AutoMigrate(&model.User{}, &model.Profile{})
if err != nil {
panic("Failed to migrate database: " + err.Error())
}
return &ServiceContext{
Config: c,
Cors: middleware.NewCorsMiddleware().Handle,
Log: middleware.NewLogMiddleware().Handle,
Auth: middleware.NewAuthMiddleware().Handle,
DB: db,
}
}
// Close 关闭资源
func (s *ServiceContext) Close() error {
if s.DB != nil {
sqlDB, err := s.DB.DB()
if err != nil {
return err
}
return sqlDB.Close()
}
return nil
}