Documentation
¶
Overview ¶
Package kit implements a highly opitionated Go backend kit.
Index ¶
- Variables
- func Env(env string) _environment
- func Key(key string) _key
- func Lvl(lvl int) _level
- func NewError(message string) func() *Error
- func NewException(status int, code string) func() *Exception
- type API
- type Binder
- type BinderConfig
- type CLI
- type Cache
- func (self *Cache) Close(ctx context.Context) error
- func (self *Cache) Delete(ctx context.Context, key string) error
- func (self *Cache) Get(ctx context.Context, key string, dest interface{}) error
- func (self *Cache) Health(ctx context.Context) error
- func (self *Cache) Set(ctx context.Context, key string, value interface{}, ttl *time.Duration) error
- type CacheConfig
- type CacheRetryConfig
- type Command
- type Database
- func (self *Database) Close(ctx context.Context) error
- func (self *Database) Exec(ctx context.Context, stmt *sqlf.Stmt) (int, error)
- func (self *Database) Health(ctx context.Context) error
- func (self *Database) Query(ctx context.Context, stmt *sqlf.Stmt) error
- func (self *Database) Transaction(ctx context.Context, fn func(ctx context.Context) error) error
- type DatabaseConfig
- type DatabaseRetryConfig
- type Entity
- type Error
- func (self Error) Error() string
- func (self Error) Is(err error) bool
- func (self Error) Unwrap() error
- func (self *Error) With(message string) *Error
- func (self *Error) Withf(message string, args ...interface{}) *Error
- func (self *Error) Wrap(err error) *Error
- func (self *Error) WrapAs(err error) *Error
- func (self *Error) WrapAsWithDepth(depth int, err error) *Error
- func (self *Error) WrapWithDepth(depth int, err error) *Error
- type Exception
- func (self *Exception) Cause(err error) *Exception
- func (self *Exception) CauseAs(err error) *Exception
- func (self Exception) Code() string
- func (self Exception) Error() string
- func (self Exception) Is(err error) bool
- func (self Exception) MarshalJSON() ([]byte, error)
- func (self *Exception) Redact()
- func (self Exception) Status() int
- func (self Exception) Unwrap() error
- func (self *Exception) With(message string) *Exception
- func (self *Exception) Withf(message string, args ...interface{}) *Exception
- type ExceptionHandler
- type ExceptionHandlerConfig
- type Localizer
- type LocalizerConfig
- type Logger
- func (self Logger) Close(ctx context.Context) error
- func (self Logger) Debug(i ...interface{})
- func (self Logger) Debugf(format string, i ...interface{})
- func (self Logger) Error(i ...interface{})
- func (self Logger) Errorf(format string, i ...interface{})
- func (self Logger) Fatal(i ...interface{})
- func (self Logger) Fatalf(format string, i ...interface{})
- func (self Logger) Flush(ctx context.Context) error
- func (self *Logger) Header() string
- func (self Logger) Info(i ...interface{})
- func (self Logger) Infof(format string, i ...interface{})
- func (self Logger) Level() _level
- func (self Logger) Logger() *zerolog.Logger
- func (self Logger) Output() io.Writer
- func (self Logger) Panic(i ...interface{})
- func (self Logger) Panicf(format string, i ...interface{})
- func (self Logger) Prefix() string
- func (self Logger) Print(i ...interface{})
- func (self Logger) Printf(format string, i ...interface{})
- func (self *Logger) SetHeader(h string)
- func (self *Logger) SetLevel(l _level)
- func (self *Logger) SetOutput(w io.Writer)
- func (self *Logger) SetPrefix(p string)
- func (self *Logger) SetVerbose(v bool)
- func (self Logger) Verbose() bool
- func (self Logger) Warn(i ...interface{})
- func (self Logger) Warnf(format string, i ...interface{})
- func (self Logger) WithLevel(level _level, i ...interface{})
- func (self Logger) WithLevelf(level _level, format string, i ...interface{})
- type LoggerConfig
- type Middleware
- type Migrator
- type MigratorConfig
- type MigratorRetryConfig
- type Model
- type Observer
- func (self Observer) Close(ctx context.Context) error
- func (self Observer) Debug(ctx context.Context, i ...interface{})
- func (self Observer) Debugf(ctx context.Context, format string, i ...interface{})
- func (self Observer) Error(ctx context.Context, i ...interface{})
- func (self Observer) Errorf(ctx context.Context, format string, i ...interface{})
- func (self Observer) Fatal(ctx context.Context, i ...interface{})
- func (self Observer) Fatalf(ctx context.Context, format string, i ...interface{})
- func (self Observer) Flush(ctx context.Context) error
- func (self Observer) GetTrace(ctx context.Context) xid.ID
- func (self Observer) Info(ctx context.Context, i ...interface{})
- func (self Observer) Infof(ctx context.Context, format string, i ...interface{})
- func (self Observer) Metric()
- func (self Observer) Panic(ctx context.Context, i ...interface{})
- func (self Observer) Panicf(ctx context.Context, format string, i ...interface{})
- func (self Observer) Print(ctx context.Context, i ...interface{})
- func (self Observer) Printf(ctx context.Context, format string, i ...interface{})
- func (self Observer) SetTrace(ctx context.Context, traceID xid.ID) context.Context
- func (self Observer) TraceQuery(ctx context.Context, sql string, args ...interface{}) (context.Context, func())
- func (self Observer) TraceRequest(ctx context.Context, request *http.Request) (context.Context, func())
- func (self Observer) TraceSpan(ctx context.Context, name ...string) (context.Context, func())
- func (self Observer) Warn(ctx context.Context, i ...interface{})
- func (self Observer) Warnf(ctx context.Context, format string, i ...interface{})
- func (self Observer) WithLevel(ctx context.Context, level _level, i ...interface{})
- func (self Observer) WithLevelf(ctx context.Context, level _level, format string, i ...interface{})
- type ObserverConfig
- type ObserverGilkConfig
- type ObserverRetryConfig
- type ObserverSentryConfig
- type Payload
- type Renderer
- func (self *Renderer) Render(w io.Writer, name string, data interface{}, c echo.Context) error
- func (self *Renderer) RenderBytes(template string, data interface{}) ([]byte, error)
- func (self *Renderer) RenderString(template string, data interface{}) (string, error)
- func (self *Renderer) RenderWriter(w io.Writer, template string, data interface{}) error
- type RendererConfig
- type Repository
- type Serializer
- type SerializerConfig
- type Server
- type ServerConfig
- type Service
- type Task
- type Usecase
- type View
- type Worker
Constants ¶
This section is empty.
Variables ¶
var ( KeyBase _key = "kit:" KeyDatabaseTransaction _key = KeyBase + "database:transaction" KeyLocalizerLocale _key = KeyBase + "localizer:locale" KeyTraceID _key = KeyBase + "trace:id" )
Builtin context/cache keys.
var ( EnvDevelopment _environment = "dev" EnvProduction _environment = "prod" )
Builtin environments.
var ( LvlTrace _level = -5 LvlDebug _level = -4 LvlInfo _level = -3 LvlWarn _level = -2 LvlError _level = -1 LvlNone _level )
Builtin levels.
var ( ErrDeadlineExceeded = NewError("deadline exceeded") ErrLoggerGeneric = NewError("logger failed") ErrLoggerTimedOut = NewError("logger timed out") ErrBinderGeneric = NewError("binder failed") ErrExceptionHandlerGeneric = NewError("error handler failed") ErrMigratorGeneric = NewError("migrator failed") ErrMigratorTimedOut = NewError("migrator timed out") ErrObserverGeneric = NewError("observer failed") ErrObserverTimedOut = NewError("observer timed out") ErrSerializerGeneric = NewError("serializer failed") ErrRendererGeneric = NewError("renderer failed") ErrLocalizerGeneric = NewError("localizer failed") ErrServerGeneric = NewError("server failed") ErrServerTimedOut = NewError("server timed out") ErrDatabaseGeneric = NewError("database failed") ErrDatabaseTimedOut = NewError("database timed out") ErrDatabaseUnhealthy = NewError("database unhealthy") ErrDatabaseTransactionFailed = NewError("database transaction failed") ErrDatabaseNoRows = NewError("database no rows in result set") ErrDatabaseIntegrityViolation = NewError("database integrity constraint violation") ErrCacheGeneric = NewError("cache failed") ErrCacheTimedOut = NewError("cache timed out") ErrCacheUnhealthy = NewError("cache unhealthy") ErrCacheMiss = NewError("cache key not found") )
Builtin errors.
var ( // ExcServerGeneric generic server exception. ExcServerGeneric = NewException(http.StatusInternalServerError, "ERR_SERVER_GENERIC") ExcServerUnavailable = NewException(http.StatusServiceUnavailable, "ERR_SERVER_UNAVAILABLE") // ExcRequestTimeout request timeout exception. ExcRequestTimeout = NewException(http.StatusGatewayTimeout, "ERR_REQUEST_TIMEOUT") // ExcClientGeneric generic client exception. ExcClientGeneric = NewException(http.StatusBadRequest, "ERR_CLIENT_GENERIC") // ExcInvalidRequest invalid request exception. ExcInvalidRequest = NewException(http.StatusBadRequest, "ERR_INVALID_REQUEST") // ExcNotFound not found exception. ExcNotFound = NewException(http.StatusNotFound, "ERR_NOT_FOUND") ExcUnauthorized = NewException(http.StatusUnauthorized, "ERR_UNAUTHORIZED") )
Builtin exceptions.
var Utils = _utils{}
Utils contains the builtin utils.
Functions ¶
func NewException ¶
Types ¶
type API ¶
type API interface {
}
TODO: check whether this should do anything more than just being a tag
type Binder ¶
type Binder struct {
// contains filtered or unexported fields
}
func NewBinder ¶
func NewBinder(observer Observer, config BinderConfig) *Binder
type BinderConfig ¶
type BinderConfig struct {
}
type CLI ¶
type CLI interface {
}
TODO: check whether this should do anything more than just being a tag with https://github.com/mkideal/cli
type CacheConfig ¶
type CacheConfig struct {
CacheHost string
CachePort int
CachePassword string
CacheMinConns *int
CacheMaxConns *int
CacheMaxConnIdleTime *time.Duration
CacheMaxConnLifeTime *time.Duration
CacheReadTimeout *time.Duration
CacheWriteTimeout *time.Duration
CacheDialTimeout *time.Duration
CacheAcquireTimeout *time.Duration
RetryConfig *CacheRetryConfig
}
type CacheRetryConfig ¶
type Command ¶
type Command interface {
}
TODO: check whether this should do anything more than just being a tag
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
func NewDatabase ¶
type DatabaseConfig ¶
type DatabaseConfig struct {
DatabaseHost string
DatabasePort int
DatabaseSSLMode string
DatabaseUser string
DatabasePassword string
DatabaseName string
AppName string
DatabaseMinConns *int
DatabaseMaxConns *int
DatabaseMaxConnIdleTime *time.Duration
DatabaseMaxConnLifeTime *time.Duration
RetryConfig *DatabaseRetryConfig
}
type DatabaseRetryConfig ¶
type Entity ¶
type Entity interface {
}
TODO: check whether this should do anything more than just being a tag
type Exception ¶
type Exception struct {
// contains filtered or unexported fields
}
func (Exception) MarshalJSON ¶
type ExceptionHandler ¶
type ExceptionHandler struct {
// contains filtered or unexported fields
}
func NewExceptionHandler ¶
func NewExceptionHandler(observer Observer, config ExceptionHandlerConfig) *ExceptionHandler
type ExceptionHandlerConfig ¶
type ExceptionHandlerConfig struct {
Environment _environment
}
type Localizer ¶
type Localizer struct {
// contains filtered or unexported fields
}
func NewLocalizer ¶
func NewLocalizer(observer Observer, config LocalizerConfig) (*Localizer, error)
type LocalizerConfig ¶
type Logger ¶
type Logger struct {
// contains filtered or unexported fields
}
func NewLogger ¶
func NewLogger(config LoggerConfig) *Logger
func (*Logger) SetVerbose ¶
func (Logger) WithLevelf ¶
type LoggerConfig ¶
type Middleware ¶
type Middleware interface {
}
TODO: check whether this should do anything more than just being a tag
type Migrator ¶
type Migrator struct {
// contains filtered or unexported fields
}
func NewMigrator ¶
type MigratorConfig ¶
type MigratorRetryConfig ¶
type Model ¶
type Model interface {
}
TODO: check whether this should do anything more than just being a tag
type Observer ¶
type Observer struct {
Logger
// contains filtered or unexported fields
}
func NewObserver ¶
func NewObserver(ctx context.Context, config ObserverConfig) (*Observer, error)
func (Observer) TraceQuery ¶
func (Observer) TraceRequest ¶
type ObserverConfig ¶
type ObserverConfig struct {
Environment _environment
Release string
AppName string
Level _level
SentryConfig *ObserverSentryConfig
GilkConfig *ObserverGilkConfig
RetryConfig *ObserverRetryConfig
}
type ObserverGilkConfig ¶
type ObserverGilkConfig struct {
Port int
}
type ObserverRetryConfig ¶
type ObserverSentryConfig ¶
type ObserverSentryConfig struct {
Dsn string
}
type Payload ¶
type Payload interface {
}
TODO: check whether this should do anything more than just being a tag
type Renderer ¶
type Renderer struct {
// contains filtered or unexported fields
}
func NewRenderer ¶
func NewRenderer(observer Observer, config RendererConfig) (*Renderer, error)
func (*Renderer) RenderBytes ¶
func (*Renderer) RenderString ¶
type RendererConfig ¶
type Repository ¶
type Repository interface {
}
TODO: check whether this should do anything more than just being a tag
type Serializer ¶
type Serializer struct {
// contains filtered or unexported fields
}
func NewSerializer ¶
func NewSerializer(observer Observer, config SerializerConfig) *Serializer
func (*Serializer) Deserialize ¶
func (self *Serializer) Deserialize(c echo.Context, i interface{}) error
type SerializerConfig ¶
type SerializerConfig struct {
}
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
func NewServer ¶
func NewServer(observer Observer, serializer Serializer, binder Binder, renderer Renderer, exceptionHandler ExceptionHandler, config ServerConfig) *Server
func (*Server) Use ¶
func (self *Server) Use(middleware ...echo.MiddlewareFunc)
type ServerConfig ¶
type Service ¶
type Service interface {
}
TODO: check whether this should do anything more than just being a tag
type Task ¶
type Task interface {
}
TODO: check whether this should do anything more than just being a tag
type Usecase ¶
type Usecase interface {
}
TODO: check whether this should do anything more than just being a tag
type View ¶
type View interface {
}
TODO: check whether this should do anything more than just being a tag
type Worker ¶
type Worker interface {
}
TODO: check whether this should do anything more than just being a tag with https://github.com/hibiken/asynq