xdb

package
v0.7.8 Latest Latest
Warning

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

Go to latest
Published: Feb 10, 2025 License: MIT Imports: 19 Imported by: 2

Documentation

Index

Constants

View Source
const (
	SymbolAt      = "@"
	SymbolAnd     = "&"
	SymbolOr      = "|"
	SymbolReplace = "$"
)
View Source
const (
	MissTypeParam      = "param"
	MissTypeOper       = "oper"
	MissTypeSymbol     = "symbol"
	MissDataTypeSymbol = "datatype"
)
View Source
const DbTypeNode = "dbs"

Variables

View Source
var (
	SecretKey         = "glue.xdb12345678"
	SecretMode        = "cbc/pkcs7"
	BaseSecretEnvName = "BASE_SECRET_ENV_NAME"
)
View Source
var CheckIsNil func(input any) bool = DefaultIsNil

CheckIsNil 检查是否为空

View Source
var ConnRefactor func(connName string, cfg *Config) (newcfg *Config, err error)

数据库连接重构方法

View Source
var (
	DateFormat = "2006-01-02 15:04:05"
)
View Source
var DecryptConn func(connName, conn string) (newConn string, err error) = defaultDecryptConn

DecryptConn 解密数据库链接

View Source
var Default = &Config{
	MaxOpen:       10,
	MaxIdle:       5,
	LifeTime:      600,
	ShowQueryLog:  false,
	LongQueryTime: 500,
	LoggerName:    "dbslowsql",
	Debug:         false,
}
View Source
var (
	//新建一个符号处理
	NewOperator func(name string, callback OperatorCallback) Operator
)
View Source
var (
	//新建一个SqlState
	NewSqlState func(Placeholder) SqlState
)
View Source
var (
	// 新建一个请求参数处理器
	NewStmtDbTypeProcessor func(matchers ...StmtDbTypeHandler) StmtDbTypeProcessor
)
View Source
var (

	// 新建一个模板匹配器
	NewTemplateMatcher func(matchers ...ExpressionMatcher) TemplateMatcher
)

Functions

func DefaultIsNil added in v0.7.0

func DefaultIsNil(input interface{}) bool

func Deregister

func Deregister(name string)

Deregister 清理配置适配器

func GetDbType added in v0.2.5

func GetDbType(proto, dbtype string) (reflect.Type, bool)

func NewBuilder

func NewBuilder() container.StandardBuilder

func NewError added in v0.1.30

func NewError(err error, execSql string, args []interface{}) error

func NewPanicError added in v0.2.0

func NewPanicError(err error, strace string) error

func RegistExpressionMatcher added in v0.7.0

func RegistExpressionMatcher(proto string, matcher ExpressionMatcher) (err error)

RegistExpressionMatcher 给数据库注册语法解析

func RegistTemplate added in v0.7.0

func RegistTemplate(tpl SQLTemplate) (err error)

RegistTemplate 注册模板

func Register

func Register(resolver Resolver)

Register 注册配置文件适配器

func RegisterDbType added in v0.2.5

func RegisterDbType(dbType string, reflectType reflect.Type) (err error)

func RegisterProtoDbType added in v0.7.0

func RegisterProtoDbType(proto, dbType string, reflectType reflect.Type) (err error)

func RegistryLogger added in v0.1.31

func RegistryLogger(logger Logger)

func TransArgs added in v0.7.0

func TransArgs(args []sql.NamedArg) []any

Types

type Config added in v0.2.3

type Config struct {
	Proto         string `json:"proto" valid:"required"`
	Conn          string `json:"conn" valid:"required" label:"连接字符串"`
	MaxOpen       int    `json:"max_open" valid:"required" label:"最大打开连接数"`
	MaxIdle       int    `json:"max_idle" valid:"required" label:"最大空闲连接数"`
	LifeTime      int    `json:"life_time" valid:"required" label:"单个连接时长(秒)"`
	ShowQueryLog  bool   `json:"show_query_log"  label:"开启慢查询日志"`
	LongQueryTime int    `json:"long_query_time"  label:"慢查询阈值(毫秒)"`
	LoggerName    string `json:"logger_name" label:"日志提供程序"`
	Debug         bool   `json:"debug" label:"调试模式"`
	// contains filtered or unexported fields
}

func DefaultRefactor added in v0.2.6

func DefaultRefactor(connName string, cfg *Config) (newcfg *Config, err error)

type DBParam added in v0.7.0

type DBParam map[string]any

func (DBParam) GetVal added in v0.7.0

func (p DBParam) GetVal(name string) (val interface{}, err MissError)

type DbConn added in v0.5.17

type DbConn interface {
	GetSqlDB() *sql.DB
}

type DbError added in v0.1.30

type DbError interface {
	Error() string
	Inner() error
	SQL() string
	Args() []interface{}
}

type DbParamConverter added in v0.7.0

type DbParamConverter interface {
	ToDbParam() map[string]any
}

type DynamicType added in v0.7.0

type DynamicType int
const (
	DynamicNone    DynamicType = 0
	DynamicAnd     DynamicType = 1
	DynamicOr      DynamicType = 2
	DynamicReplace DynamicType = 4
)

type Executer

type Executer interface {
	Query(ctx context.Context, sql string, input any, opts ...TemplateOption) (data Rows, err error)
	Multi(ctx context.Context, sql string, input any, opts ...TemplateOption) (data []Rows, err error)
	First(ctx context.Context, sql string, input any, opts ...TemplateOption) (data Row, err error)
	Scalar(ctx context.Context, sql string, input any, opts ...TemplateOption) (data interface{}, err error)
	Exec(ctx context.Context, sql string, input any, opts ...TemplateOption) (r Result, err error)

	QueryAs(ctx context.Context, sql string, input any, result any, opts ...TemplateOption) (err error)
	FirstAs(ctx context.Context, sql string, input any, result any, opts ...TemplateOption) (err error)
}

Executer 数据库操作对象集合

type ExpressionBuildCallback added in v0.7.0

type ExpressionBuildCallback func(item ExpressionValuer, state SqlState, param DBParam) (expression string, err MissError)

表达式回调

type ExpressionCache added in v0.7.0

type ExpressionCache interface {
	Build(SqlState, DBParam) (sql string, err error)
}

type ExpressionItem added in v0.7.0

type ExpressionItem struct {
	Matcher                 ExpressionMatcher
	FullField               string
	PropName                string
	Oper                    string
	Symbol                  Symbol
	ExpressionBuildCallback ExpressionBuildCallback
}

func (*ExpressionItem) Build added in v0.7.0

func (m *ExpressionItem) Build(state SqlState, param DBParam) (expression string, err MissError)

func (*ExpressionItem) GetFullfield added in v0.7.0

func (m *ExpressionItem) GetFullfield() string

func (*ExpressionItem) GetMatcher added in v0.7.0

func (m *ExpressionItem) GetMatcher() ExpressionMatcher

func (*ExpressionItem) GetOper added in v0.7.0

func (m *ExpressionItem) GetOper() string

func (*ExpressionItem) GetOperatorCallback added in v0.7.0

func (m *ExpressionItem) GetOperatorCallback() (callback OperatorCallback, ok bool)

func (*ExpressionItem) GetPropName added in v0.7.0

func (m *ExpressionItem) GetPropName() string

func (*ExpressionItem) GetSymbol added in v0.7.0

func (m *ExpressionItem) GetSymbol() Symbol

type ExpressionMatcher added in v0.7.0

type ExpressionMatcher interface {
	Name() string                                //表达式名称
	Pattern() string                             //表达式正则匹配
	GetOperatorMap() OperatorMap                 //符号列表
	MatchString(string) (ExpressionValuer, bool) //匹配执行
}

属性表达式匹配器

type ExpressionMatcherMap added in v0.7.0

type ExpressionMatcherMap interface {
	Regist(...ExpressionMatcher)
	Load(name string) (ExpressionMatcher, bool)
	Find(call func(matcher ExpressionMatcher) bool) ExpressionMatcher
	GetMatcherRegexp() *regexp.Regexp
}

type ExpressionValuer added in v0.7.0

type ExpressionValuer interface {
	GetMatcher() ExpressionMatcher
	GetOperatorCallback() (callback OperatorCallback, ok bool)
	GetPropName() string
	GetFullfield() string
	GetOper() string
	GetSymbol() Symbol
	Build(state SqlState, input DBParam) (string, MissError)
}

xdb表达式

type IDB

type IDB interface {
	Executer
	Begin() (ITrans, error)
	Close() error
	GetImpl() interface{}
	Transaction(TransactionCallback) error
}

IDB 数据库操作接口

type ITrans

type ITrans interface {
	Executer
	Rollback() error
	Commit() error
}

ITrans 数据库事务接口

type InvalidArgTypeError added in v0.5.0

type InvalidArgTypeError struct {
	Type reflect.Type
}

func (InvalidArgTypeError) Error added in v0.5.0

func (e InvalidArgTypeError) Error() string

type Logger added in v0.1.31

type Logger interface {
	Name() string
	Log(ctx context.Context, elapsed int64, sql string, args ...interface{})
}

func GetLogger added in v0.1.31

func GetLogger(loggerName string) (Logger, bool)

type MatcherOption added in v0.7.0

type MatcherOption func(*MatcherOptions)

func WithBuildCallback added in v0.7.0

func WithBuildCallback(callback ExpressionBuildCallback) MatcherOption

WithBuildCallback 制定matcher的表达式生成回调

func WithOperator added in v0.7.0

func WithOperator(operator ...Operator) MatcherOption

WithOperator 增加一个符号处理函数 与WithOperatorMap 二选一

func WithOperatorMap added in v0.7.0

func WithOperatorMap(operatorMap OperatorMap) MatcherOption

WithOperatorMap 制定matcher的符号处理函数 与WithOperator 二选一

type MatcherOptions added in v0.7.0

type MatcherOptions struct {
	BuildCallback ExpressionBuildCallback
	OperatorMap   OperatorMap
}

type MissError added in v0.5.1

type MissError interface {
	Error() string
	Type() string
	Name() string
}

func NewMissDataTypeError added in v0.7.0

func NewMissDataTypeError(name string) MissError

func NewMissOperError added in v0.5.1

func NewMissOperError(name string) MissError

func NewMissParamError added in v0.5.0

func NewMissParamError(name string, innerErr error) MissError

func NewMissPropError added in v0.7.0

func NewMissPropError(name string) MissError

func NewMissSymbolError added in v0.7.0

func NewMissSymbolError(name string) MissError

type MissListError added in v0.5.1

type MissListError interface {
	Error() string
}

func NewMissListError added in v0.5.1

func NewMissListError(errList ...MissError) MissListError

type Operator added in v0.7.0

type Operator interface {
	Name() string
	Callback(valuer ExpressionValuer, param DBParam, phName string, value any) string
}

Operator 操作符处理接口

type OperatorCallback added in v0.7.0

type OperatorCallback func(valuer ExpressionValuer, param DBParam, phName string, value any) string

OperatorCallback 操作符回调函数

type OperatorMap added in v0.7.0

type OperatorMap interface {
	//Store(name string, callback OperatorCallback)
	Load(name string) (Operator, bool)
	Clone() OperatorMap
	Range(func(name string, callback Operator) bool)
}

OperatorMap 操作符映射接口

func NewOperatorMap added in v0.7.0

func NewOperatorMap(operators ...Operator) OperatorMap

NewOperatorMap 创建操作符映射

type Option added in v0.2.3

type Option func(*Config)

Option 配置选项

func WithLifeTime added in v0.2.3

func WithLifeTime(lifeTime int) Option

func WithLoggerName added in v0.2.3

func WithLoggerName(name string) Option

func WithLongQueryTime added in v0.2.3

func WithLongQueryTime(longQueryTime int) Option

func WithMaxIdle added in v0.2.3

func WithMaxIdle(maxIdle int) Option

func WithMaxOpen added in v0.2.3

func WithMaxOpen(maxOpen int) Option

func WithShowQueryLog added in v0.2.3

func WithShowQueryLog(showQueryLog bool) Option

type PanicError added in v0.2.0

type PanicError interface {
	Error() string
	StackTrace() string
}

type Placeholder added in v0.7.0

type Placeholder interface {
	Get(propName string) (argName string, phName string)
	NamedArg(name string) string
	BuildArgVal(argName string, val interface{}) interface{}
}

type RawMessage added in v0.1.41

type RawMessage []byte

func (RawMessage) MarshalJSON added in v0.1.41

func (m RawMessage) MarshalJSON() ([]byte, error)

MarshalJSON returns m as the JSON encoding of m.

func (*RawMessage) UnmarshalJSON added in v0.1.41

func (m *RawMessage) UnmarshalJSON(data []byte) error

UnmarshalJSON sets *m to a copy of data.

type Resolver added in v0.7.1

type Resolver interface {
	Name() string
	Resolve(connName string, setting config.Config, opts ...Option) (interface{}, error)
}

dbResover 定义配置文件转换方法

type Result

type Result = sql.Result

type Row

type Row = xtypes.XMap

Row 单行数据

func NewRow

func NewRow() Row

NewRow 构建Row对象

type Rows

type Rows = xtypes.XMaps

Rows 多行数据

func NewRows

func NewRows() Rows

NewRows 构建Rows

type SQLTemplate added in v0.7.0

type SQLTemplate interface {
	Name() string
	Placeholder() Placeholder
	//获取sql
	GetSQLContext(tpl string, input map[string]any, opts ...TemplateOption) (sql string, args []any, err error)
	//注册表达式匹配解析器
	RegistExpressionMatcher(matchers ...ExpressionMatcher)
	//注册参数处理回调
	RegistStmtDbTypeHandler(handler ...StmtDbTypeHandler)
	//处理一般表达式
	HandleExpr(item SqlState, sqlTpl string, param DBParam) (sql string, err error)
	//获取sql状态
	GetSqlState(*TemplateOptions) SqlState
	//sql状态释放
	ReleaseSqlState(SqlState)
	//sql参数处理
	StmtDbTypeWrap(param any, opt TagOptions) any
}

Template 模板上下文

func GetTemplate added in v0.7.0

func GetTemplate(name string) (SQLTemplate, error)

GetDBTemplate 获取数据库上下文操作

type SqlState added in v0.7.0

type SqlState interface {
	GetNames() []string
	GetValues() []any
	UseExprCache() bool
	SetDynamic(DynamicType)
	HasDynamic(DynamicType) bool
	AppendExpr(propName string, value any) (phName string)
	CanCache() bool
	BuildCache(sql string) ExpressionCache
	WithPlaceholder(Placeholder)
	WithTemplateOptions(*TemplateOptions)
	Reset()
}

SqlState 用户记录sql状态

type StandardDB

type StandardDB interface {
	GetDB(name string, opts ...Option) (q IDB)
	GetImpl(name string, opts ...Option) interface{}
}

StandardDB

func NewStandardDB

func NewStandardDB(container container.Container) StandardDB

NewStandardDBs 创建DB

type StmtDbTypeHandler added in v0.7.7

type StmtDbTypeHandler interface {
	Name() string
	//args:a=b => [a,b]
	Handle(param any, args []string) any
}

type StmtDbTypeProcessor added in v0.7.7

type StmtDbTypeProcessor interface {
	// RegistHandler 注册表达式匹配器
	RegistHandler(handler ...StmtDbTypeHandler)
	Process(param any, tagOpts TagOptions) any
}

type StmtDbTypeWrap added in v0.7.7

type StmtDbTypeWrap = func(param any, opt TagOptions) any

type Symbol added in v0.7.0

type Symbol interface {
	Name() string
	Concat() string
	DynamicType() DynamicType
}

符号接口

type SymbolCallback added in v0.7.0

type SymbolCallback func(SymbolMap, DBParam, string, SqlState) (string, MissError)

符号回调函数

type SymbolMap added in v0.7.0

type SymbolMap interface {
	Regist(Symbol)
	Load(name string) (Symbol, bool)
	Delete(name string)
	Clone() SymbolMap
}

func NewSymbolMap added in v0.7.0

func NewSymbolMap(symbols ...Symbol) SymbolMap

NewSymbolMap 创建一个符号表

type SymbolType added in v0.7.0

type SymbolType int
const (
	SymbolTypeNormal  SymbolType = 1
	SymbolTypeDymanic SymbolType = 2
	SymbolTypeReplace SymbolType = 3
)

type TagOptions added in v0.7.7

type TagOptions = xreflect.TagOptions

type TemplateMatcher added in v0.7.0

type TemplateMatcher interface {
	// RegistMatcher 注册表达式匹配器
	RegistMatcher(matcher ...ExpressionMatcher)
	// GenerateSQL 根据模板生成SQL语句
	GenerateSQL(item SqlState, sqlTpl string, input DBParam) (sql string, err error)
}

TemplateMatcher 模板匹配器

type TemplateOption added in v0.7.0

type TemplateOption func(*TemplateOptions)

func WithExprCache added in v0.7.0

func WithExprCache(use bool) TemplateOption

使用解析缓存

type TemplateOptions added in v0.7.0

type TemplateOptions struct {
	UseExprCache bool
}

表达式解析选项

type TransactionCallback added in v0.2.0

type TransactionCallback func(dbObj Executer) error

Jump to

Keyboard shortcuts

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