// 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 }