You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			72 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
| package svc
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"entgo.io/ent/dialect/sql/schema"
 | |
| 	"git.noahlan.cn/n-admin/n-admin-server/rpc/core/ent"
 | |
| 	"git.noahlan.cn/n-admin/n-admin-server/rpc/core/internal/config"
 | |
| 	"git.noahlan.cn/noahlan/ntool/nmapper"
 | |
| 	"git.noahlan.cn/noahlan/ntool/nmapper/wrapper"
 | |
| 	"github.com/zeromicro/go-zero/core/service"
 | |
| 	"github.com/zeromicro/go-zero/core/stores/redis"
 | |
| 
 | |
| 	"git.noahlan.cn/noahlan/ntool-biz/core/i18n"
 | |
| 	"git.noahlan.cn/noahlan/ntool-biz/zero/logz"
 | |
| 	"git.noahlan.cn/noahlan/ntool/nlog"
 | |
| 	"github.com/zeromicro/go-zero/core/logx"
 | |
| 
 | |
| 	// required by schema hooks.
 | |
| 	_ "git.noahlan.cn/n-admin/n-admin-server/rpc/core/ent/runtime"
 | |
| )
 | |
| 
 | |
| type ServiceContext struct {
 | |
| 	Config config.Config
 | |
| 	DB     *ent.Client
 | |
| 	Redis  *redis.Redis
 | |
| 
 | |
| 	Mapper  *nmapper.MapperObject
 | |
| 	Convert *Convert
 | |
| }
 | |
| 
 | |
| func NewServiceContext(c config.Config) *ServiceContext {
 | |
| 	tmp := &ServiceContext{Config: c}
 | |
| 
 | |
| 	nlog.MustSetup(logz.WrapConf(c.Log))
 | |
| 	logx.SetWriter(logz.NewWriter())
 | |
| 
 | |
| 	// 配置多语言
 | |
| 	i18n.InitWithConfig(c.I18nConf)
 | |
| 
 | |
| 	// redis
 | |
| 	tmp.Redis = redis.MustNewRedis(redis.RedisConf{
 | |
| 		Host: c.RedisConf.Addr,
 | |
| 		Type: c.RedisConf.Type,
 | |
| 		Pass: c.RedisConf.Password,
 | |
| 		Tls:  c.RedisConf.Tls,
 | |
| 	})
 | |
| 
 | |
| 	// database
 | |
| 	dbOpts := make([]ent.Option, 0)
 | |
| 	dbOpts = append(dbOpts, ent.Log(nlog.Info))
 | |
| 	dbOpts = append(dbOpts, ent.Driver(c.DatabaseConf.NewNoCacheDriver()))
 | |
| 	if c.Mode == service.DevMode || c.Mode == service.TestMode {
 | |
| 		dbOpts = append(dbOpts, ent.Debug())
 | |
| 	}
 | |
| 	tmp.DB = ent.NewClient(dbOpts...)
 | |
| 	// 初始化数据库结构
 | |
| 	if err := tmp.DB.Schema.Create(context.Background(),
 | |
| 		schema.WithDropColumn(true),
 | |
| 		schema.WithDropIndex(true),
 | |
| 		schema.WithForeignKeys(false)); err != nil {
 | |
| 		nlog.Errorw("数据库错误", nlog.Field("err", err))
 | |
| 		panic(err)
 | |
| 	}
 | |
| 
 | |
| 	// mapper
 | |
| 	tmp.Mapper = nmapper.NewMapper(nmapper.WithTypeWrapper(wrapper.StrWrapper()...))
 | |
| 
 | |
| 	// convert
 | |
| 	tmp.Convert = NewConvert(tmp)
 | |
| 	return tmp
 | |
| }
 |