Documentation ¶
Overview ¶
*
- @ Author: Daniel Tan
- @ Date: 2020-04-07 09:41:11
- @ LastEditTime: 2020-07-29 19:03:26
- @ LastEditors: Daniel Tan
- @ Description:
- @ FilePath: /trinitygo/application/app.go
- @
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{}, map[reflect.Type]interface{})
- func DiFree(dest interface{})
- func DiSelfCheck(destName interface{}, pool *sync.Pool, logger *golog.Logger, ...)
- func GetAutoFreeTags(object interface{}, index int) bool
- func GetAutowiredTags(object interface{}, index int) bool
- func GetResourceTags(object interface{}, index int) string
- func TransactionTag(object interface{}, index int) bool
- type AppMock
- func (a *AppMock) Conf() conf.Conf
- func (a *AppMock) ContextPool() *ContextPool
- func (a *AppMock) ControllerPool() *ControllerPool
- func (a *AppMock) DB() *gorm.DB
- func (a *AppMock) Enforcer() *casbin.Enforcer
- func (a *AppMock) GetGRPCServer() *grpc.Server
- func (a *AppMock) InitGRPC()
- func (a *AppMock) InitHTTP()
- func (a *AppMock) InitRouter()
- func (a *AppMock) InstallDB(f func() *gorm.DB)
- func (a *AppMock) InstancePool() *InstancePool
- func (a *AppMock) IsLogSelfCheck() bool
- func (a *AppMock) Keyword() keyword.Keyword
- func (a *AppMock) Logger() *golog.Logger
- func (a *AppMock) RegRuntimeKey(runtime ...truntime.RuntimeKey) Application
- func (a *AppMock) ResponseFactory() func(status int, res interface{}, runtime map[string]string) interface{}
- func (a *AppMock) RuntimeKeys() []truntime.RuntimeKey
- func (a *AppMock) ServeGRPC()
- func (a *AppMock) ServeHTTP()
- func (a *AppMock) UseInterceptor(interceptor ...grpc.UnaryServerInterceptor) Application
- func (a *AppMock) UseMiddleware(middleware ...gin.HandlerFunc) Application
- type Application
- type Context
- type ContextImpl
- func (c *ContextImpl) Application() Application
- func (c *ContextImpl) AutoFree() bool
- func (c *ContextImpl) AutoFreeOff()
- func (c *ContextImpl) AutoFreeOn()
- 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(res interface{}, err error)
- func (c *ContextImpl) HTTPResponseInternalErr(err error)
- func (c *ContextImpl) HTTPResponseOk(res interface{}, err error)
- func (c *ContextImpl) HTTPStatus(code int)
- func (c *ContextImpl) IsConfigured() bool
- func (c *ContextImpl) NewHTTPServiceRequest(serviceName string, method httputil.RequestMethod, path string, body []byte) (int, interface{}, error)
- func (c *ContextImpl) Runtime() map[string]string
- func (c *ContextImpl) SafeCommit()
- func (c *ContextImpl) SafeRollback()
- func (c *ContextImpl) SetIsConfigured()
- type ContextMock
- func (c *ContextMock) Application() Application
- func (c *ContextMock) AutoFree() bool
- func (c *ContextMock) AutoFreeOff()
- func (c *ContextMock) AutoFreeOn()
- func (c *ContextMock) DB() *gorm.DB
- func (c *ContextMock) DBTx() *gorm.DB
- func (c *ContextMock) DBTxIsOpen() bool
- func (c *ContextMock) GetCurrentUser() (interface{}, error)
- func (c *ContextMock) GinCtx() *gin.Context
- func (c *ContextMock) HTTPResponse(interface{}, error)
- func (c *ContextMock) HTTPResponseInternalErr(error)
- func (c *ContextMock) HTTPResponseOk(interface{}, error)
- func (c *ContextMock) HTTPStatus(code int)
- func (c *ContextMock) IsConfigured() bool
- func (c *ContextMock) NewHTTPServiceRequest(serviceName string, method httputil.RequestMethod, path string, body []byte) (int, interface{}, error)
- func (c *ContextMock) Runtime() map[string]string
- func (c *ContextMock) SafeCommit()
- func (c *ContextMock) SafeRollback()
- func (c *ContextMock) SetIsConfigured()
- 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{}, 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{}, 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{}, 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 GetAutoFreeTags ¶ added in v0.1.10
GetAutoFreeTags get autofree tags from struct default true
func GetAutowiredTags ¶ added in v0.0.22
GetAutowiredTags get autowired tags from struct default false
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 AppMock ¶ added in v0.0.40
AppMock for application mock
func (*AppMock) ContextPool ¶ added in v0.0.40
func (a *AppMock) ContextPool() *ContextPool
ContextPool mock
func (*AppMock) ControllerPool ¶ added in v0.0.40
func (a *AppMock) ControllerPool() *ControllerPool
ControllerPool mock
func (*AppMock) Enforcer ¶ added in v0.0.40
func (a *AppMock) Enforcer() *casbin.Enforcer
Enforcer mock
func (*AppMock) GetGRPCServer ¶ added in v0.0.40
GetGRPCServer mock
func (*AppMock) InstancePool ¶ added in v0.0.40
func (a *AppMock) InstancePool() *InstancePool
InstancePool mock
func (*AppMock) IsLogSelfCheck ¶ added in v0.0.40
IsLogSelfCheck mock
func (*AppMock) RegRuntimeKey ¶ added in v0.0.40
func (a *AppMock) RegRuntimeKey(runtime ...truntime.RuntimeKey) Application
RegRuntimeKey mock
func (*AppMock) ResponseFactory ¶ added in v0.0.40
func (a *AppMock) ResponseFactory() func(status int, res interface{}, runtime map[string]string) interface{}
ResponseFactory mock
func (*AppMock) RuntimeKeys ¶ added in v0.0.40
func (a *AppMock) RuntimeKeys() []truntime.RuntimeKey
RuntimeKeys mock
func (*AppMock) UseInterceptor ¶ added in v0.0.40
func (a *AppMock) UseInterceptor(interceptor ...grpc.UnaryServerInterceptor) Application
UseInterceptor mock
func (*AppMock) UseMiddleware ¶ added in v0.0.40
func (a *AppMock) UseMiddleware(middleware ...gin.HandlerFunc) Application
UseMiddleware mock
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) (int, interface{}, error) Application() Application Runtime() map[string]string DB() *gorm.DB DBTx() *gorm.DB AutoFreeOn() AutoFreeOff() SafeCommit() SafeRollback() DBTxIsOpen() bool GinCtx() *gin.Context GetCurrentUser() (interface{}, error) HTTPStatus(code int) HTTPResponseInternalErr(error) HTTPResponseOk(interface{}, error) HTTPResponse(interface{}, error) SetIsConfigured() IsConfigured() bool AutoFree() bool // 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) AutoFree ¶ added in v0.1.12
func (c *ContextImpl) AutoFree() bool
AutoFree set auto free on
func (*ContextImpl) AutoFreeOff ¶ added in v0.1.12
func (c *ContextImpl) AutoFreeOff()
AutoFreeOff set auto free off
func (*ContextImpl) AutoFreeOn ¶ added in v0.1.12
func (c *ContextImpl) AutoFreeOn()
AutoFreeOn set auto free on
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(res interface{}, err error)
HTTPResponse handle 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) HTTPStatus ¶ added in v0.1.3
func (c *ContextImpl) HTTPStatus(code int)
HTTPStatus set http status
func (*ContextImpl) IsConfigured ¶ added in v0.1.12
func (c *ContextImpl) IsConfigured() bool
IsConfigured get app
func (*ContextImpl) NewHTTPServiceRequest ¶ added in v0.0.35
func (c *ContextImpl) NewHTTPServiceRequest(serviceName string, method httputil.RequestMethod, path string, body []byte) (int, interface{}, error)
NewHTTPServiceRequest new http service request
func (*ContextImpl) Runtime ¶
func (c *ContextImpl) Runtime() map[string]string
Runtime get runtime info
func (*ContextImpl) SetIsConfigured ¶ added in v0.1.12
func (c *ContextImpl) SetIsConfigured()
SetIsConfigured get app
type ContextMock ¶ added in v0.0.40
ContextMock mock impl for Context
func (*ContextMock) Application ¶ added in v0.0.40
func (c *ContextMock) Application() Application
Application application mock
func (*ContextMock) AutoFree ¶ added in v0.1.12
func (c *ContextMock) AutoFree() bool
func (*ContextMock) AutoFreeOff ¶ added in v0.1.12
func (c *ContextMock) AutoFreeOff()
AutoFreeOff set auto free off
func (*ContextMock) AutoFreeOn ¶ added in v0.1.12
func (c *ContextMock) AutoFreeOn()
AutoFreeOn set auto free on
func (*ContextMock) DBTxIsOpen ¶ added in v0.0.40
func (c *ContextMock) DBTxIsOpen() bool
DBTxIsOpen mock
func (*ContextMock) GetCurrentUser ¶ added in v0.0.40
func (c *ContextMock) GetCurrentUser() (interface{}, error)
GetCurrentUser get current user
func (*ContextMock) GinCtx ¶ added in v0.0.40
func (c *ContextMock) GinCtx() *gin.Context
GinCtx mock
func (*ContextMock) HTTPResponse ¶ added in v0.0.40
func (c *ContextMock) HTTPResponse(interface{}, error)
HTTPResponse mock
func (*ContextMock) HTTPResponseInternalErr ¶ added in v0.0.40
func (c *ContextMock) HTTPResponseInternalErr(error)
HTTPResponseInternalErr mock
func (*ContextMock) HTTPResponseOk ¶ added in v0.0.40
func (c *ContextMock) HTTPResponseOk(interface{}, error)
HTTPResponseOk mock
func (*ContextMock) HTTPStatus ¶ added in v0.1.3
func (c *ContextMock) HTTPStatus(code int)
HTTPStatus mock
func (*ContextMock) IsConfigured ¶ added in v0.1.12
func (c *ContextMock) IsConfigured() bool
func (*ContextMock) NewHTTPServiceRequest ¶ added in v0.0.40
func (c *ContextMock) NewHTTPServiceRequest(serviceName string, method httputil.RequestMethod, path string, body []byte) (int, interface{}, error)
NewHTTPServiceRequest Mock
func (*ContextMock) Runtime ¶ added in v0.0.40
func (c *ContextMock) Runtime() map[string]string
Runtime runtime mock
func (*ContextMock) SafeCommit ¶ added in v0.0.40
func (c *ContextMock) SafeCommit()
SafeCommit mock
func (*ContextMock) SafeRollback ¶ added in v0.0.40
func (c *ContextMock) SafeRollback()
SafeRollback mock
func (*ContextMock) SetIsConfigured ¶ added in v0.1.12
func (c *ContextMock) SetIsConfigured()
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, 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{}, 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{}, 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