tpl

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Dec 28, 2023 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TotalPattern = `[@]\{\w*[\.]?\w+\}|[&]\{\w*[\.]?\w+\}|[\|]\{\w*[\.]?\w+\}`
	// ParamPattern   = `[@]\{\w*[\.]?\w+\}`
	// AndPattern     = `[&]\{\w*[\.]?\w+\}`
	// OrPattern      = `[\|]\{\w*[\.]?\w+\}`
	ReplacePattern = `\$\{\w*[\.]?\w+\}`
)

Variables

This section is empty.

Functions

func AnalyzeTPLFromCache

func AnalyzeTPLFromCache(template SQLTemplate, tpl string, input map[string]interface{}, ph Placeholder) (sql string, values []any, err error)

AnalyzeTPLFromCache 从缓存中获取已解析的SQL语句 @表达式,替换为参数化字符如: :1,:2,:3 $表达式,检查值,值为空时返加"",否则直接替换字符 &条件表达式,检查值,值为空时返加"",否则返回: and name=value |条件表达式,检查值,值为空时返回"", 否则返回: or name=value

func GetPatternRegexp added in v0.5.0

func GetPatternRegexp(pattern string) *regexp.Regexp

获取模式匹配的正则表达式

func GetPropName

func GetPropName(fullKey string) (propName string)

func IsNil

func IsNil(input interface{}) bool

func Register

func Register(tpl SQLTemplate)

func RegisterSymbol added in v0.5.0

func RegisterSymbol(dbProto string, symbol Symbol) error

RegisterSymbol 给数据库注册语法解析

func TransArgs added in v0.1.41

func TransArgs(args []sql.NamedArg) []interface{}

Types

type DBParam added in v0.1.30

type DBParam map[string]interface{}

func (DBParam) Get added in v0.1.30

func (p DBParam) Get(name string, ph Placeholder) (phName string, argVal interface{}, err xdb.MissParamError)

func (DBParam) GetVal added in v0.1.41

func (p DBParam) GetVal(name string) (val interface{}, err xdb.MissParamError)

type FixedContext

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

FixedContext 模板

func (*FixedContext) AnalyzeTPL

func (ctx *FixedContext) AnalyzeTPL(tpl string, input map[string]interface{}, ph Placeholder) (sql string, item *ReplaceItem, err error)

func (*FixedContext) GetSQLContext

func (ctx *FixedContext) GetSQLContext(tpl string, input map[string]interface{}) (query string, args []any, err error)

GetSQLContext 获取查询串

func (FixedContext) Name

func (ctx FixedContext) Name() string

func (*FixedContext) Placeholder

func (ctx *FixedContext) Placeholder() Placeholder

func (*FixedContext) RegisterSymbol added in v0.5.0

func (ctx *FixedContext) RegisterSymbol(symbol Symbol) error

type Placeholder

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

type ReplaceItem

type ReplaceItem struct {
	Names       []string
	Values      []interface{}
	NameCache   map[string]string
	Placeholder Placeholder
	HasAndOper  bool
	HasOrOper   bool
}

func DefaultAnalyze

func DefaultAnalyze(symbols SymbolMap, tpl string, input map[string]interface{}, placeholder Placeholder) (string, *ReplaceItem, error)

func (*ReplaceItem) CanCache added in v0.1.41

func (p *ReplaceItem) CanCache() bool

func (*ReplaceItem) Clone added in v0.1.41

func (p *ReplaceItem) Clone() *ReplaceItem

type SQLTemplate

type SQLTemplate interface {
	Name() string
	Placeholder() Placeholder
	GetSQLContext(tpl string, input map[string]interface{}) (query string, args []any, err error)
	AnalyzeTPL(tpl string, input map[string]interface{}, ph Placeholder) (sql string, item *ReplaceItem, err error)
	RegisterSymbol(symbol Symbol) error
}

Template 模板上下文

func GetDBTemplate

func GetDBTemplate(name string) (SQLTemplate, error)

GetDBTemplate 获取数据库上下文操作

func NewFixed

func NewFixed(name, prefix string) SQLTemplate

func NewSeq

func NewSeq(name, prefix string) SQLTemplate

type SeqContext

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

SeqContext 参数化时使用@+参数名作为占位符的SQL数据库如:oracle,sql server

func (*SeqContext) AnalyzeTPL

func (ctx *SeqContext) AnalyzeTPL(tpl string, input map[string]interface{}, ph Placeholder) (sql string, item *ReplaceItem, err error)

func (*SeqContext) GetSQLContext

func (ctx *SeqContext) GetSQLContext(tpl string, input map[string]interface{}) (sql string, args []any, err error)

GetSQLContext 获取查询串

func (SeqContext) Name

func (ctx SeqContext) Name() string

func (*SeqContext) Placeholder

func (ctx *SeqContext) Placeholder() Placeholder

func (*SeqContext) RegisterSymbol added in v0.5.0

func (ctx *SeqContext) RegisterSymbol(symbol Symbol) error

type Symbol added in v0.5.0

type Symbol interface {
	Name() string
	GetPattern() string
	Callback(DBParam, string, *ReplaceItem) (string, xdb.MissParamError)
}

type SymbolCallback

type SymbolCallback func(DBParam, string, *ReplaceItem) (string, xdb.MissParamError)

type SymbolMap added in v0.5.0

type SymbolMap interface {
	GetPattern() string
	Store(name string, callback SymbolCallback)
	Register(symbol Symbol) error
	LoadOrStore(name string, callback SymbolCallback) (loaded bool)
	Delete(name string)
	Load(name string) (SymbolCallback, bool)
	Clone() SymbolMap
}

func NewSymbolMap added in v0.5.0

func NewSymbolMap() SymbolMap

Jump to

Keyboard shortcuts

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