Documentation ¶
Index ¶
- func DecodeGRPCRuntimeKey(ctx context.Context, runtimeKey []truntime.RuntimeKey) map[string]string
- func DecodeHTTPRuntimeKey(c *gin.Context, runtimeKey []truntime.RuntimeKey) map[string]string
- func DiAllFields(dest interface{}, tctx Context, app Application, c *gin.Context, ...) map[reflect.Type]interface{}
- func DiFree(dest interface{})
- func DiSelfCheck(destName interface{}, pool *sync.Pool, logger *golog.Logger, ...)
- func GetAutowiredTags(object interface{}, index int) bool
- func GetResourceTags(object interface{}, index int) string
- func TransactionTag(object interface{}, index int) bool
- type Application
- type Context
- type ContextImpl
- func (c *ContextImpl) Application() Application
- func (c *ContextImpl) DB() *gorm.DB
- func (c *ContextImpl) DBTx() *gorm.DB
- func (c *ContextImpl) DBTxIsOpen() bool
- func (c *ContextImpl) GetCurrentUser() (interface{}, error)
- func (c *ContextImpl) GinCtx() *gin.Context
- func (c *ContextImpl) HTTPResponse(status int, res interface{}, err error)
- func (c *ContextImpl) HTTPResponseCreated(res interface{}, err error)
- func (c *ContextImpl) HTTPResponseErr(status int, err error)
- func (c *ContextImpl) HTTPResponseInternalErr(err error)
- func (c *ContextImpl) HTTPResponseOk(res interface{}, err error)
- func (c *ContextImpl) HTTPResponseUnauthorizedErr(err error)
- func (c *ContextImpl) NewHTTPServiceRequest(serviceName string, method httputil.RequestMethod, path string, body []byte) (interface{}, error)
- func (c *ContextImpl) Runtime() map[string]string
- func (c *ContextImpl) SafeCommit()
- func (c *ContextImpl) SafeRollback()
- type ContextPool
- type ControllerPool
- func (s *ControllerPool) ControllerFuncSelfCheck(instancePool *InstancePool, isLog bool, logger *golog.Logger)
- func (s *ControllerPool) GetController(controllerName string, tctx Context, app Application, c *gin.Context) (interface{}, map[reflect.Type]interface{})
- func (s *ControllerPool) GetControllerFuncName(controllerName string) (string, bool)
- func (s *ControllerPool) GetControllerMap() []string
- func (s *ControllerPool) GetControllerValidators(controllerName string) []Validator
- func (s *ControllerPool) NewController(controllerType string, instance reflect.Type)
- func (s *ControllerPool) NewControllerFunc(controllerType string, funcName string)
- func (s *ControllerPool) NewControllerValidators(controllerType string, validator ...Validator)
- type DBLogger
- type InstancePool
- func (s *InstancePool) CheckInstanceNameIfExist(instanceName reflect.Type) bool
- func (s *InstancePool) GetInstance(instanceType reflect.Type, tctx Context, app Application, c *gin.Context) (interface{}, map[reflect.Type]interface{})
- func (s *InstancePool) GetInstanceType(tags string) []reflect.Type
- func (s *InstancePool) InstanceDISelfCheck(app Application)
- func (s *InstancePool) InstanceMapping() map[string]reflect.Type
- func (s *InstancePool) NewInstance(instanceType reflect.Type, instancePool *sync.Pool, instanceTags []string)
- func (s *InstancePool) Release(instance interface{})
- type LogConfig
- type Logger
- type RequestMap
- type SkipperFunc
- type Validator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DecodeGRPCRuntimeKey ¶
DecodeGRPCRuntimeKey decode runtime key from ctx
func DecodeHTTPRuntimeKey ¶
DecodeHTTPRuntimeKey decode http runtime
func DiAllFields ¶
func DiAllFields(dest interface{}, tctx Context, app Application, c *gin.Context, instanceMapping map[string]reflect.Type) map[reflect.Type]interface{}
DiAllFields di service pool
func DiSelfCheck ¶ added in v0.0.22
func DiSelfCheck(destName interface{}, pool *sync.Pool, logger *golog.Logger, instancePool *InstancePool, instanceMapping map[string]reflect.Type)
DiSelfCheck ()map[reflect.Type]interface{} {}
func GetAutowiredTags ¶ added in v0.0.22
GetAutowiredTags get autowired tags from struct
func GetResourceTags ¶ added in v0.0.22
GetResourceTags get resource tags
func TransactionTag ¶ added in v0.0.22
TransactionTag get the transaction tag from struct
Types ¶
type Application ¶
type Application interface { IsLogSelfCheck() bool Logger() *golog.Logger RuntimeKeys() []truntime.RuntimeKey Conf() conf.Conf Keyword() keyword.Keyword ContextPool() *ContextPool DB() *gorm.DB Enforcer() *casbin.Enforcer InstallDB(f func() *gorm.DB) ControllerPool() *ControllerPool InstancePool() *InstancePool UseInterceptor(interceptor ...grpc.UnaryServerInterceptor) Application UseMiddleware(middleware ...gin.HandlerFunc) Application RegRuntimeKey(runtime ...truntime.RuntimeKey) Application InitGRPC() InitHTTP() InitRouter() GetGRPCServer() *grpc.Server ServeGRPC() ServeHTTP() ResponseFactory() func(status int, res interface{}, runtime map[string]string) interface{} }
Application global app interface
type Context ¶
type Context interface { NewHTTPServiceRequest(serviceName string, method httputil.RequestMethod, path string, body []byte) (interface{}, error) Application() Application Runtime() map[string]string DB() *gorm.DB DBTx() *gorm.DB SafeCommit() SafeRollback() DBTxIsOpen() bool GinCtx() *gin.Context GetCurrentUser() (interface{}, error) HTTPResponseInternalErr(error) HTTPResponseErr(int, error) HTTPResponseOk(interface{}, error) HTTPResponseCreated(interface{}, error) HTTPResponse(int, interface{}, error) // contains filtered or unexported methods }
Context record all thing inside one request
func MockContext ¶
MockContext used for unittest , don't use in production
func NewContext ¶
func NewContext(app Application, funcToGetWhoAmI func(app Application, c *gin.Context, db *gorm.DB) (interface{}, error)) Context
NewContext new contedt
type ContextImpl ¶
type ContextImpl struct {
// contains filtered or unexported fields
}
ContextImpl Context impl
func (*ContextImpl) Application ¶
func (c *ContextImpl) Application() Application
Application get app
func (*ContextImpl) DBTxIsOpen ¶
func (c *ContextImpl) DBTxIsOpen() bool
DBTxIsOpen return is transaction is open
func (*ContextImpl) GetCurrentUser ¶ added in v0.0.35
func (c *ContextImpl) GetCurrentUser() (interface{}, error)
GetCurrentUser get current User
func (*ContextImpl) HTTPResponse ¶
func (c *ContextImpl) HTTPResponse(status int, res interface{}, err error)
HTTPResponse handle response
func (*ContextImpl) HTTPResponseCreated ¶
func (c *ContextImpl) HTTPResponseCreated(res interface{}, err error)
HTTPResponseCreated handle http http.StatusCreated 201 response
func (*ContextImpl) HTTPResponseErr ¶
func (c *ContextImpl) HTTPResponseErr(status int, err error)
HTTPResponseErr handle http 400 response
func (*ContextImpl) HTTPResponseInternalErr ¶
func (c *ContextImpl) HTTPResponseInternalErr(err error)
HTTPResponseInternalErr handle http 400 response
func (*ContextImpl) HTTPResponseOk ¶
func (c *ContextImpl) HTTPResponseOk(res interface{}, err error)
HTTPResponseOk handle http http.StatusOK 200 response
func (*ContextImpl) HTTPResponseUnauthorizedErr ¶
func (c *ContextImpl) HTTPResponseUnauthorizedErr(err error)
HTTPResponseUnauthorizedErr handle http 400 response
func (*ContextImpl) NewHTTPServiceRequest ¶ added in v0.0.35
func (c *ContextImpl) NewHTTPServiceRequest(serviceName string, method httputil.RequestMethod, path string, body []byte) (interface{}, error)
NewHTTPServiceRequest new http service request
func (*ContextImpl) Runtime ¶
func (c *ContextImpl) Runtime() map[string]string
Runtime get runtime info
type ContextPool ¶
type ContextPool struct {
// contains filtered or unexported fields
}
ContextPool is the context pool, it's used inside router and the framework by itself.
It's the only one real implementation inside this package because it used widely.
func New ¶
func New(newFunc func() Context) *ContextPool
New creates and returns a new context pool.
func (*ContextPool) Acquire ¶
func (c *ContextPool) Acquire(app Application, runtime map[string]string, db *gorm.DB, ginCtx *gin.Context) Context
Acquire returns a Context from pool. See Release.
func (*ContextPool) Attach ¶
func (c *ContextPool) Attach(newFunc func() Context)
Attach changes the pool's return value Context.
func (*ContextPool) Release ¶
func (c *ContextPool) Release(ctx Context)
Release puts a Context back to its pull, this function releases its resources. See Acquire.
func (*ContextPool) ReleaseLight ¶
func (c *ContextPool) ReleaseLight(ctx Context)
ReleaseLight will just release the object back to the pool, but the clean method is caller's responsibility now
type ControllerPool ¶
type ControllerPool struct {
// contains filtered or unexported fields
}
ControllerPool service pool if grpc string is the full method of method if http os the GET@/ping/:id need to filter controllerFuncMap to filter funcname
func NewControllerPool ¶
func NewControllerPool() *ControllerPool
NewControllerPool new pool with init map
func (*ControllerPool) ControllerFuncSelfCheck ¶ added in v0.0.22
func (s *ControllerPool) ControllerFuncSelfCheck(instancePool *InstancePool, isLog bool, logger *golog.Logger)
ControllerFuncSelfCheck self check http request registered func exist or not
func (*ControllerPool) GetController ¶
func (s *ControllerPool) GetController(controllerName string, tctx Context, app Application, c *gin.Context) (interface{}, map[reflect.Type]interface{})
GetController from pool
func (*ControllerPool) GetControllerFuncName ¶
func (s *ControllerPool) GetControllerFuncName(controllerName string) (string, bool)
GetControllerFuncName get controller func name
func (*ControllerPool) GetControllerMap ¶
func (s *ControllerPool) GetControllerMap() []string
GetControllerMap get controller map
func (*ControllerPool) GetControllerValidators ¶
func (s *ControllerPool) GetControllerValidators(controllerName string) []Validator
GetControllerValidators get controller func name
func (*ControllerPool) NewController ¶
func (s *ControllerPool) NewController(controllerType string, instance reflect.Type)
NewController add new service
func (*ControllerPool) NewControllerFunc ¶
func (s *ControllerPool) NewControllerFunc(controllerType string, funcName string)
NewControllerFunc register funcname for controllertype
func (*ControllerPool) NewControllerValidators ¶
func (s *ControllerPool) NewControllerValidators(controllerType string, validator ...Validator)
NewControllerValidators register funcname for controllertype
type DBLogger ¶
type DBLogger struct {
// contains filtered or unexported fields
}
DBLogger db logger
func NewDBLogger ¶
func NewDBLogger(app Application, runtime map[string]string, config ...*LogConfig) *DBLogger
NewDBLogger new db logger
type InstancePool ¶ added in v0.0.25
type InstancePool struct {
// contains filtered or unexported fields
}
InstancePool service pool
func NewInstancePool ¶ added in v0.0.25
func NewInstancePool() *InstancePool
NewInstancePool new pool with init map
func (*InstancePool) CheckInstanceNameIfExist ¶ added in v0.0.25
func (s *InstancePool) CheckInstanceNameIfExist(instanceName reflect.Type) bool
CheckInstanceNameIfExist check contain name if exist
func (*InstancePool) GetInstance ¶ added in v0.0.25
func (s *InstancePool) GetInstance(instanceType reflect.Type, tctx Context, app Application, c *gin.Context) (interface{}, map[reflect.Type]interface{})
GetInstance get service with di
func (*InstancePool) GetInstanceType ¶ added in v0.0.25
func (s *InstancePool) GetInstanceType(tags string) []reflect.Type
GetInstanceType get all service type
func (*InstancePool) InstanceDISelfCheck ¶ added in v0.0.25
func (s *InstancePool) InstanceDISelfCheck(app Application)
InstanceDISelfCheck self check di request registered func exist or not
func (*InstancePool) InstanceMapping ¶ added in v0.0.25
func (s *InstancePool) InstanceMapping() map[string]reflect.Type
InstanceMapping instance mapping
func (*InstancePool) NewInstance ¶ added in v0.0.25
func (s *InstancePool) NewInstance(instanceType reflect.Type, instancePool *sync.Pool, instanceTags []string)
NewInstance add new instance
func (*InstancePool) Release ¶ added in v0.0.25
func (s *InstancePool) Release(instance interface{})
Release release service
type LogConfig ¶
type LogConfig struct { ProjectName bool ProjectVersion bool // Method displays the request path (bool). // Defaults to true. Path bool // used in http request , show http method // default true Method bool // ClientIP // default true ClientIP bool // used in http request , show http status Status bool // used in http request , show body size BodySize bool // Req show request info // Defaults to true. Request bool // Response show response info // Defaults to true. Response bool // Error show error messagee // Defaults to true. Error bool // Latency show latency // Default to true Latency bool // Runtime // Default to true Runtime bool // Defaults nil LogFunc func(now time.Time, projectName, projectVersion, method string, latency time.Duration, runtimeValue map[string]string) // Skippers will according method to see if skip the logger middleware Skippers []SkipperFunc }
LogConfig middleware config
func DefaultLogConfig ¶
func DefaultLogConfig() *LogConfig
DefaultLogConfig default log middleware setting
type Logger ¶
type Logger interface { Interceptor() func(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) Middleware() gin.HandlerFunc }
Logger for log middleware
func NewLogLogger ¶
func NewLogLogger(app Application, config *LogConfig) Logger
NewLogLogger new log logger
type RequestMap ¶
type RequestMap struct { Method httputil.RequestMethod SubPath string FuncName string Validators []Validator }
RequestMap request map to register request
func NewRequestMapping ¶
func NewRequestMapping(method httputil.RequestMethod, path string, funcName string, validators ...Validator) *RequestMap
NewRequestMapping request mapping @funcName if funcname is "" , trinitygoo will use the default http method name to find the method e.g : http method "GET" ==> find method "GET"
type SkipperFunc ¶
SkipperFunc check if method need to be skip