github.com/wfusion/gofusion@v1.1.14/db/ctx.go (about)

     1  package db
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/wfusion/gofusion/common/utils"
     7  
     8  	fusCtx "github.com/wfusion/gofusion/context"
     9  )
    10  
    11  func GetCtxGormDB(ctx context.Context) *DB {
    12  	return utils.GetCtxAny(ctx, fusCtx.KeyGormDB, (*DB)(nil))
    13  }
    14  
    15  func GetCtxGormDBByName(ctx context.Context, name string) (db *DB) {
    16  	utils.TravelCtx(ctx, func(ctx context.Context) bool {
    17  		db = utils.GetCtxAny(ctx, fusCtx.KeyGormDB, (*DB)(nil))
    18  		return db != nil && db.Name == name
    19  	})
    20  	return
    21  }
    22  
    23  func GetCtxGormDBByNameList(ctx context.Context, nameList []string) (db *DB) {
    24  	names := utils.NewSet(nameList...)
    25  	utils.TravelCtx(ctx, func(ctx context.Context) bool {
    26  		db = utils.GetCtxAny(ctx, fusCtx.KeyGormDB, (*DB)(nil))
    27  		return db != nil && names.Contains(db.Name)
    28  	})
    29  	return
    30  }
    31  
    32  func SetCtxGormDB(ctx context.Context, db *DB) context.Context {
    33  	return utils.SetCtxAny(ctx, fusCtx.KeyGormDB, db)
    34  }