kit

package module
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2022 License: MIT Imports: 43 Imported by: 0

README

kit Integration Publication Go Reference

Highly opitionated Go backend kit.

  • TODO: TODOS INSIDE THE CODE
  • TODO: A TABLE WITH EVERY GO PROGRAMMING ASPECT AND THE kit.

Documentation

Overview

Package kit implements a highly opitionated Go backend kit.

Index

Constants

This section is empty.

Variables

View Source
var (
	KeyBase                _key = "kit:"
	KeyDatabaseTransaction _key = KeyBase + "database:transaction"
	KeyLocalizerLocale     _key = KeyBase + "localizer:locale"
	KeyTraceID             _key = KeyBase + "trace:id"
)

Builtin context/cache keys.

View Source
var (
	EnvDevelopment _environment = "dev"
	EnvProduction  _environment = "prod"
)

Builtin environments.

View Source
var (
	LvlTrace _level = -5
	LvlDebug _level = -4
	LvlInfo  _level = -3
	LvlWarn  _level = -2
	LvlError _level = -1
	LvlNone  _level
)

Builtin levels.

View Source
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.

View Source
var (
	// ExcServerGeneric generic server exception.
	ExcServerGeneric = NewException(http.StatusInternalServerError, "ERR_SERVER_GENERIC")
	// ExcServerUnavailable server Unavailable exception.
	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 unauthorized exception.
	ExcUnauthorized = NewException(http.StatusUnauthorized, "ERR_UNAUTHORIZED")
)

Builtin exceptions.

View Source
var Utils = _utils{}

Utils contains the builtin utils.

Functions

func Env added in v0.2.0

func Env(env string) _environment

func Key added in v0.2.0

func Key(key string) _key

func Lvl added in v0.2.0

func Lvl(lvl int) _level

func NewError

func NewError(message string) func() *Error

func NewException

func NewException(status int, code string) func() *Exception

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

func (*Binder) Bind

func (self *Binder) Bind(i interface{}, c echo.Context) error

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 Cache

type Cache struct {
	// contains filtered or unexported fields
}

func NewCache

func NewCache(ctx context.Context, observer Observer, config CacheConfig) (*Cache, error)

func (*Cache) Close

func (self *Cache) Close(ctx context.Context) error

func (*Cache) Delete

func (self *Cache) Delete(ctx context.Context, key string) error

func (*Cache) Get

func (self *Cache) Get(ctx context.Context, key string, dest interface{}) error

func (*Cache) Health

func (self *Cache) Health(ctx context.Context) error

func (*Cache) Set

func (self *Cache) Set(ctx context.Context, key string, value interface{}, ttl *time.Duration) error

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 CacheRetryConfig struct {
	Attempts     int
	InitialDelay time.Duration
	LimitDelay   time.Duration
}

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

func NewDatabase(ctx context.Context, observer Observer, config DatabaseConfig) (*Database, error)

func (*Database) Close

func (self *Database) Close(ctx context.Context) error

func (*Database) Exec

func (self *Database) Exec(ctx context.Context, stmt *sqlf.Stmt) (int, error)

func (*Database) Health

func (self *Database) Health(ctx context.Context) error

func (*Database) Query

func (self *Database) Query(ctx context.Context, stmt *sqlf.Stmt) error

func (*Database) Transaction

func (self *Database) Transaction(ctx context.Context, fn func(ctx context.Context) error) error

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 DatabaseRetryConfig struct {
	Attempts     int
	InitialDelay time.Duration
	LimitDelay   time.Duration
}

type Entity

type Entity interface {
}

TODO: check whether this should do anything more than just being a tag

type Error

type Error struct {
	// contains filtered or unexported fields
}

func (Error) Error

func (self Error) Error() string

func (Error) Is

func (self Error) Is(err error) bool

func (Error) Unwrap

func (self Error) Unwrap() error

func (*Error) With

func (self *Error) With(message string) *Error

func (*Error) Withf

func (self *Error) Withf(message string, args ...interface{}) *Error

func (*Error) Wrap

func (self *Error) Wrap(err error) *Error

func (*Error) WrapAs

func (self *Error) WrapAs(err error) *Error

func (*Error) WrapAsWithDepth

func (self *Error) WrapAsWithDepth(depth int, err error) *Error

func (*Error) WrapWithDepth

func (self *Error) WrapWithDepth(depth int, err error) *Error

type Exception

type Exception struct {
	// contains filtered or unexported fields
}

func (*Exception) Cause

func (self *Exception) Cause(err error) *Exception

func (*Exception) CauseAs

func (self *Exception) CauseAs(err error) *Exception

func (Exception) Code

func (self Exception) Code() string

func (Exception) Error

func (self Exception) Error() string

func (Exception) Is

func (self Exception) Is(err error) bool

func (Exception) MarshalJSON

func (self Exception) MarshalJSON() ([]byte, error)

func (*Exception) Redact

func (self *Exception) Redact()

func (Exception) Status

func (self Exception) Status() int

func (Exception) Unwrap

func (self Exception) Unwrap() error

func (*Exception) With

func (self *Exception) With(message string) *Exception

func (*Exception) Withf

func (self *Exception) Withf(message string, args ...interface{}) *Exception

type ExceptionHandler

type ExceptionHandler struct {
	// contains filtered or unexported fields
}

func NewExceptionHandler

func NewExceptionHandler(observer Observer, config ExceptionHandlerConfig) *ExceptionHandler

func (*ExceptionHandler) Handle

func (self *ExceptionHandler) Handle(err error, ctx echo.Context)

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)

func (Localizer) GetLocale

func (self Localizer) GetLocale(ctx context.Context) language.Tag

func (Localizer) Localize

func (self Localizer) Localize(ctx context.Context, copy string, i ...interface{}) string

func (*Localizer) Refresh

func (self *Localizer) Refresh() error

func (Localizer) SetLocale

func (self Localizer) SetLocale(ctx context.Context, locale language.Tag) context.Context

type LocalizerConfig

type LocalizerConfig struct {
	LocalesPath      *string
	LocaleExtensions *regexp.Regexp
	DefaultLocale    language.Tag
}

type Logger

type Logger struct {
	// contains filtered or unexported fields
}

func NewLogger

func NewLogger(config LoggerConfig) *Logger

func (Logger) Close

func (self Logger) Close(ctx context.Context) error

func (Logger) Debug

func (self Logger) Debug(i ...interface{})

func (Logger) Debugf

func (self Logger) Debugf(format string, i ...interface{})

func (Logger) Error

func (self Logger) Error(i ...interface{})

func (Logger) Errorf

func (self Logger) Errorf(format string, i ...interface{})

func (Logger) Fatal

func (self Logger) Fatal(i ...interface{})

func (Logger) Fatalf

func (self Logger) Fatalf(format string, i ...interface{})

func (Logger) Flush

func (self Logger) Flush(ctx context.Context) error

func (*Logger) Header

func (self *Logger) Header() string

func (Logger) Info

func (self Logger) Info(i ...interface{})

func (Logger) Infof

func (self Logger) Infof(format string, i ...interface{})

func (Logger) Level

func (self Logger) Level() _level

func (Logger) Logger

func (self Logger) Logger() *zerolog.Logger

func (Logger) Output

func (self Logger) Output() io.Writer

func (Logger) Panic

func (self Logger) Panic(i ...interface{})

func (Logger) Panicf

func (self Logger) Panicf(format string, i ...interface{})

func (Logger) Prefix

func (self Logger) Prefix() string

func (Logger) Print

func (self Logger) Print(i ...interface{})

func (Logger) Printf

func (self Logger) Printf(format string, i ...interface{})

func (*Logger) SetHeader

func (self *Logger) SetHeader(h string)

func (*Logger) SetLevel

func (self *Logger) SetLevel(l _level)

func (*Logger) SetOutput

func (self *Logger) SetOutput(w io.Writer)

func (*Logger) SetPrefix

func (self *Logger) SetPrefix(p string)

func (*Logger) SetVerbose

func (self *Logger) SetVerbose(v bool)

func (Logger) Verbose

func (self Logger) Verbose() bool

func (Logger) Warn

func (self Logger) Warn(i ...interface{})

func (Logger) Warnf

func (self Logger) Warnf(format string, i ...interface{})

func (Logger) WithLevel

func (self Logger) WithLevel(level _level, i ...interface{})

func (Logger) WithLevelf

func (self Logger) WithLevelf(level _level, format string, i ...interface{})

type LoggerConfig

type LoggerConfig struct {
	AppName        string
	Level          _level
	SkipFrameCount *int
}

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

func NewMigrator(ctx context.Context, observer Observer, config MigratorConfig) (*Migrator, error)

func (*Migrator) Apply

func (self *Migrator) Apply(ctx context.Context, schemaVersion int) error

TODO: concurrent-safe

func (*Migrator) Assert

func (self *Migrator) Assert(ctx context.Context, schemaVersion int) error

TODO: concurrent-safe

func (*Migrator) Close

func (self *Migrator) Close(ctx context.Context) error

func (*Migrator) Rollback

func (self *Migrator) Rollback(ctx context.Context, schemaVersion int) error

TODO: concurrent-safe

type MigratorConfig

type MigratorConfig struct {
	MigrationsPath   *string
	DatabaseHost     string
	DatabasePort     int
	DatabaseSSLMode  string
	DatabaseUser     string
	DatabasePassword string
	DatabaseName     string
	RetryConfig      *MigratorRetryConfig
}

type MigratorRetryConfig

type MigratorRetryConfig struct {
	Attempts     int
	InitialDelay time.Duration
	LimitDelay   time.Duration
}

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) Close

func (self Observer) Close(ctx context.Context) error

func (Observer) Debug

func (self Observer) Debug(ctx context.Context, i ...interface{})

func (Observer) Debugf

func (self Observer) Debugf(ctx context.Context, format string, i ...interface{})

func (Observer) Error

func (self Observer) Error(ctx context.Context, i ...interface{})

func (Observer) Errorf

func (self Observer) Errorf(ctx context.Context, format string, i ...interface{})

func (Observer) Fatal

func (self Observer) Fatal(ctx context.Context, i ...interface{})

func (Observer) Fatalf

func (self Observer) Fatalf(ctx context.Context, format string, i ...interface{})

func (Observer) Flush

func (self Observer) Flush(ctx context.Context) error

func (Observer) GetTrace

func (self Observer) GetTrace(ctx context.Context) xid.ID

func (Observer) Info

func (self Observer) Info(ctx context.Context, i ...interface{})

func (Observer) Infof

func (self Observer) Infof(ctx context.Context, format string, i ...interface{})

func (Observer) Metric

func (self Observer) Metric()

TODO

func (Observer) Panic

func (self Observer) Panic(ctx context.Context, i ...interface{})

func (Observer) Panicf

func (self Observer) Panicf(ctx context.Context, format string, i ...interface{})

func (Observer) Print

func (self Observer) Print(ctx context.Context, i ...interface{})

func (Observer) Printf

func (self Observer) Printf(ctx context.Context, format string, i ...interface{})

func (Observer) SetTrace

func (self Observer) SetTrace(ctx context.Context, traceID xid.ID) context.Context

func (Observer) TraceQuery

func (self Observer) TraceQuery(ctx context.Context, sql string, args ...interface{}) (context.Context, func())

func (Observer) TraceRequest

func (self Observer) TraceRequest(ctx context.Context, request *http.Request) (context.Context, func())

func (Observer) TraceSpan

func (self Observer) TraceSpan(ctx context.Context, name ...string) (context.Context, func())

func (Observer) Warn

func (self Observer) Warn(ctx context.Context, i ...interface{})

func (Observer) Warnf

func (self Observer) Warnf(ctx context.Context, format string, i ...interface{})

func (Observer) WithLevel

func (self Observer) WithLevel(ctx context.Context, level _level, i ...interface{})

func (Observer) WithLevelf

func (self Observer) WithLevelf(ctx context.Context, level _level, format string, i ...interface{})

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 ObserverRetryConfig struct {
	Attempts     int
	InitialDelay time.Duration
	LimitDelay   time.Duration
}

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) Render

func (self *Renderer) Render(w io.Writer, name string, data interface{}, c echo.Context) error

func (*Renderer) RenderBytes

func (self *Renderer) RenderBytes(template string, data interface{}) ([]byte, error)

func (*Renderer) RenderString

func (self *Renderer) RenderString(template string, data interface{}) (string, error)

func (*Renderer) RenderWriter

func (self *Renderer) RenderWriter(w io.Writer, template string, data interface{}) error

type RendererConfig

type RendererConfig struct {
	TemplatesPath      *string
	TemplateExtensions *regexp.Regexp
}

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

func (*Serializer) Serialize

func (self *Serializer) Serialize(c echo.Context, i interface{}, indent string) 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) Close

func (self *Server) Close(ctx context.Context) error

func (*Server) Host

func (self *Server) Host(host string, middleware ...echo.MiddlewareFunc) *echo.Group

func (*Server) Run

func (self *Server) Run() error

func (*Server) Use

func (self *Server) Use(middleware ...echo.MiddlewareFunc)

type ServerConfig

type ServerConfig struct {
	Environment              _environment
	AppPort                  int
	RequestHeaderMaxSize     *int
	RequestBodyMaxSize       *int
	RequestFileMaxSize       *int
	RequestKeepAliveTimeout  *time.Duration
	RequestReadTimeout       *time.Duration
	RequestReadHeaderTimeout *time.Duration
	ResponseWriteTimeout     *time.Duration
}

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

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL