Documentation
¶
Index ¶
Constants ¶
const ( DevEnv = "dev" StgEnv = "stg" PrdEnv = "prd" DefaultEnv = DevEnv )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AppFlagSet ¶
func (*AppFlagSet) GetSampleEnvs ¶
func (f *AppFlagSet) GetSampleEnvs()
func (*AppFlagSet) Parse ¶
func (f *AppFlagSet) Parse(args []string)
func (*AppFlagSet) ShowTable ¶ added in v1.0.2
func (f *AppFlagSet) ShowTable(data [][]string)
type HttpServer ¶
type HttpServer interface {
Runnable
// Add handlers to GIN
AddHandler(HttpServerHandler)
// Return server config
//GetConfig() http_server.Config
// URI that the server is listening
URI() string
AddMiddleware(gin.HandlerFunc)
Routes() []gin.RouteInfo
}
GIN HTTP server for REST API
type HttpServerHandler ¶
HTTP Server Handler for register some routes and gin handlers
type Option ¶
type Option func(*service)
Convenience option method for creating/initializing a service
func WithFileLogger ¶
func WithFileLogger() Option
Service will write log data to file with this option
func WithInitConfig ¶
func WithInitConfig(r PrefixConfigure) Option
Add init component to SDK, example elasticsearch, .... that is third party service These components will init config for service from flag and return service in plugin Behind, it can init config, example get key jwt, key env
func WithInitRunnable ¶
func WithInitRunnable(r PrefixRunnable) Option
Add init component to SDK These components will run sequentially before service run
func WithRunnable ¶
Add Runnable component to SDK These components will run parallel in when service run
func WithVersion ¶
Every deployment needs a specific version
type PrefixConfigure ¶
type PrefixConfigure interface {
InitFlags()
HasPrefix
}
Config init flag for other config without init service Example set jwt key,... Service Provider for service thirth party Example: Telegram bot, elasticsearch, prdiction IO,...
type PrefixRunnable ¶
type Runnable ¶
type Runnable interface {
Name() string
InitFlags()
Configure() error
Run() error
Stop() <-chan bool
}
Runnable is an abstract object in SDK Almost components are Runnable. SDK will manage their lifecycle InitFlags -> Configure -> Run -> Stop
type Service ¶
type Service interface {
// A part of Service, it's passed to all handlers/functions
ServiceContext
// Name of the service
Name() string
// Version of the service
Version() string
// Gin HTTP Server wrapper
HTTPServer() HttpServer
// Init with options, they can be db connections or
// anything the service need handle before starting
Init() error
// This method returns service if it is registered on discovery
IsRegistered() bool
// Start service and its all component.
// It will be stopped if any service return error
Start() error
// Stop service and its all component.
Stop()
// Method export all flags to std/terminal
// We might use: "> .env" to move its content .env file
OutEnv()
//Router table
RouteTable()
SetHttpServer(has bool) Service
Create() Service
}
The heart of SDK, Service represents for a real micro service with its all components
type ServiceContext ¶
type ServiceContext interface {
// Logger for a specific service, usually it has a prefix to distinguish
// with each others
Logger(prefix string) logger.Logger
// Get component with prefix
Get(prefix string) (interface{}, bool)
MustGet(prefix string) interface{}
Env() string
}
Service Context: A wrapper for all things needed for developing a service
Directories
¶
| Path | Synopsis |
|---|---|
|
examples
|
|
|
aws
command
|
|
|
elastic
command
|
|
|
fcm
command
|
|
|
httpservice
command
|
|
|
imgprocessing
command
|
|
|
Logging provider Log only fully init when app.Run() called
|
Logging provider Log only fully init when app.Run() called |
|
util
|
|