interfaces

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Oct 15, 2022 License: MIT Imports: 13 Imported by: 7

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ConfigManual = map[string]string{

	"config:autoreconnect": `auto reconnect database in first init`,
	"config:startinterval": `first timeout duration after failed`,
	"config:maxerror":      `how many reconnect before trigger error`,

	"config:sql:enable": `enable sql database`,
	"config:sql:host": `sql server address, must be valid rules hostname_rfc1123
	ex: localhost, 127.0.0.1, service.domain, 10.10.10.10, etc.`,
	"config:sql:port":     `sql server port number`,
	"config:sql:username": `sql server username`,
	"config:sql:password": `sql server password`,
	"config:sql:database": `sql database name`,
	"config:sql:options":  `this option will be added after username:password@protocol(address)/dbname?`,
	"config:sql:connection": `if this value not empty, another mysql parameter will be ignored.
	use this, if you have a custom protocol connection.
	like username:password@unix(/tmp/mysql.sock)/dbname.`,
	"config:sql:dbpath":      `sqllite database file location path`,
	"config:rabbitmq:enable": `enable rabbitmq database message brokers`,
	"config:rabbitmq:host": `rabbitmq server address, must be valid rules hostname_rfc1123
	ex: localhost, 127.0.0.1, service.domain, 10.10.10.10, etc.`,
	"config:rabbitmq:port":                `rabbitmq server port number`,
	"config:rabbitmq:username":            `rabbitmq server username`,
	"config:rabbitmq:password":            `rabbitmq server password`,
	"config:rabbitmq:reconnectDuration":   `rabbitmq reconnect duration (in second).`,
	"config:rabbitmq:dedicatedConnection": `dedicated connection for each consumer, more reliable but more cost.`,
	"config:redis:host": `redis server address, must be valid rules hostname_rfc1123
	ex: localhost, 127.0.0.1, service.domain, 10.10.10.10, etc.`,
	"config:redis:port":     `redis server port number`,
	"config:redis:password": `redis server password`,
	"config:redis:pool":     `number of redis pool`,
}
View Source
var RecordNotFound = errors.New("record not found in database")

RecordNotFound - global error record not found type

Functions

func SetManual

func SetManual(man map[string]string) map[string]string

Types

type ConsumerCallback

type ConsumerCallback func(Messages, ConsumerCallbackIsDone)

type ConsumerCallbackIsDone added in v0.0.6

type ConsumerCallbackIsDone struct {
	Done       context.CancelFunc
	EndRequest func()
}

type Database

type Database interface {
	Init(logger.Logger)
	SetTracer(tracing.Tracing)
	LoadRabbitMQ(string, RabbitMQProviderConfig) RabbitMQ
	LoadSQL(string, SQLConfig) SQL
	LoadRedis(string, RedisProviderConfig) Redis
	LoadEmbedded(EmbeddedOptions) Embedded
	LoadKafka(string, KafkaProviderConfig) Kafka
}

type Embedded

type Embedded interface {
	DB() *nutsdb.DB
	Set(bucket string, key string, value interface{}, encoding Encoding) (err error)
	Get(bucket string, key string, value interface{}, encoding Encoding) (err error)
	Delete(bucket string, key string) (err error)
	GetAllKeys(bucket string) (keys []string, err error)
}

type EmbeddedOptions

type EmbeddedOptions struct {
	Directory string
}

type Encoder

type Encoder struct {
	Raw      io.Reader
	Encoding Encoding
	// contains filtered or unexported fields
}

func (*Encoder) Context

func (c *Encoder) Context() context.Context

func (*Encoder) Decode

func (c *Encoder) Decode(data interface{}) error

func (*Encoder) Encode

func (c *Encoder) Encode(data interface{}) (res []byte, err error)

func (*Encoder) Exchange

func (c *Encoder) Exchange() string

func (*Encoder) RoutingKey

func (c *Encoder) RoutingKey() string

func (*Encoder) SetContext

func (c *Encoder) SetContext(ctx context.Context)

type Encoding

type Encoding int
const (
	EncodingBase64Gob Encoding = iota
	EncodingGob
	EncodingProto
	EncodingNone
	EncodingJSON
)

type Kafka added in v0.0.6

type Kafka interface {
	Consumer(KafkaOptions, ConsumerCallback)
	Producer(ProducerIsReady)
	Push(ctx context.Context, id string, options KafkaOptions, body interface{}, cb ConsumerCallback) error
}

type KafkaOptions added in v0.0.6

type KafkaOptions struct {
	Topic          string
	RegistryValue  string
	Group          string
	SchemeVersion  int
	SchemeID       int
	Encoding       Encoding
	MultipleThread bool
	Limiter        int
}

type KafkaProviderConfig added in v0.0.6

type KafkaProviderConfig struct {
	Enable           bool   `yaml:"enable" default:"false" desc:"config:kafka:enable"`
	Host             string `yaml:"host" default:"127.0.0.1:9092" desc:"config:kafka:host"`
	Registry         string `yaml:"registry" default:"" desc:"config:kafka:registry"`
	Username         string `yaml:"username" default:""  desc:"config:kafka:username"`
	Password         string `yaml:"password" default:"" desc:"config:kafka:password"`
	SecurityProtocol string `yaml:"securityProtocol" default:"SASL_SSL"  desc:"config:kafka:securityProtocol"`
	Mechanisms       string `yaml:"mechanisms" default:"PLAIN"  desc:"config:kafka:mechanisms"`
	Debug            string `yaml:"debug" default:"consumer"  desc:"config:kafka:debug"`
}

type Messages

type Messages interface {
	Exchange() string
	RoutingKey() string
	Decode(interface{}) error
	SetContext(context.Context)
	Context() context.Context
}

func NewEncoder

func NewEncoder(raw io.Reader, exchange, routingKey string, enc Encoding) Messages

type ProducerIsReady added in v0.0.6

type ProducerIsReady func()

type Provider

type Provider int
const (
	ProviderMysql Provider = iota + 1
	ProviderRabbitMQ
	ProviderRedis
	ProviderKafka
)

type RabbitMQ

type RabbitMQ interface {
	Consumer(RabbitMQOptions, ConsumerCallback)
	Producer(RabbitMQOptions)
	Push(ctx context.Context,
		id, exchange,
		key string,
		body interface{},
		cb ConsumerCallback) error
}

type RabbitMQOptions

type RabbitMQOptions struct {
	Exchange     string
	ExchangeType string
	RoutingKey   string
	Durable      bool
	AutoDeleted  bool
	NoWait       bool
	Encoding     Encoding
}

type RabbitMQProviderConfig

type RabbitMQProviderConfig struct {
	Enable              bool   `yaml:"enable" default:"false" desc:"config:rabbitmq:enable"`
	Host                string `yaml:"host" default:"127.0.0.1" desc:"config:rabbitmq:host"`
	Port                int    `yaml:"port" default:"5672" desc:"config:rabbitmq:port"`
	Username            string `yaml:"username" default:"guest"  desc:"config:rabbitmq:username"`
	Password            string `yaml:"password" default:"guest" desc:"config:rabbitmq:password"`
	ReconnectDuration   int    `yaml:"reconnectDuration" default:"5" desc:"config:rabbitmq:reconnectDuration"`
	DedicatedConnection bool   `yaml:"dedicatedConnection" default:"false" desc:"config:rabbitmq:dedicatedConnection"`
}

type Redis added in v0.0.2

type Redis interface {
	Init() error
	GetPool() (pool *radix.Pool)
}

type RedisProviderConfig added in v0.0.2

type RedisProviderConfig struct {
	Enable        bool   `yaml:"enable" default:"false" desc:"config:redis:enable"`
	Host          string `yaml:"host" default:"127.0.0.1" desc:"config:redis:host"`
	Port          int    `yaml:"port" default:"6379" desc:"config:redis:port"`
	Password      string `yaml:"password" default:"" desc:"config:redis:password"`
	Pool          int    `yaml:"pool" default:"10" desc:"config:redis:pool"`
	AutoReconnect bool   `yaml:"autoreconnect" default:"false"  desc:"config:autoreconnect"`
	StartInterval int    `yaml:"startinterval" default:"2"  desc:"config:startinterval"`
	MaxError      int    `yaml:"maxerror" default:"5"  desc:"config:maxerror"`
}

type SQL

type SQL interface {
	Config() SQLConfig
	Start() error
	Orm() *gorm.DB
	SQLite() error
	MySQL() error
	SQLServer() error
	Close() error
	Clickhouse() error
}

type SQLConfig

type SQLConfig struct {
	Driver             string `yaml:"driver" default:"mysql" desc:"config:sql:enable"`
	Enable             bool   `yaml:"enable" default:"false" desc:"config:sql:enable"`
	Host               string `yaml:"host" default:"127.0.0.1" desc:"config:sql:host"`
	Port               int    `yaml:"port" default:"3306" desc:"config:sql:port"`
	Username           string `yaml:"username" default:"root"  desc:"config:sql:username"`
	Password           string `yaml:"password" default:"root" desc:"config:sql:password"`
	Database           string `yaml:"database" default:"mydb" desc:"config:sql:database"`
	Options            string `yaml:"options" default:"" desc:"config:sql:options"`
	Connection         string `yaml:"connection" default:"" desc:"config:sql:connection"`
	AutoReconnect      bool   `yaml:"autoreconnect" default:"false"  desc:"config:autoreconnect"`
	StartInterval      int    `yaml:"startinterval" default:"2"  desc:"config:startinterval"`
	MaxError           int    `yaml:"maxerror" default:"5"  desc:"config:maxerror"`
	DBPath             string `yaml:"dbpath" default:"./sqlite.db" desc:"config:sql:dbpath"`
	Sslmode            string `yaml:"sslmode" default:"disable" desc:"config:sql:sslmode"`
	TimeoutConnection  int    `yaml:"timeoutConnection" default:"5000" desc:"config:sql:timeoutConnection"`
	TimeoutTransaction int    `yaml:"timeoutTransaction" default:"5000" desc:"config:sql:timeoutTransaction"`
}

Jump to

Keyboard shortcuts

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