tpl

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Aug 2, 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)

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

func GetPropName

func GetPropName(fullKey string) (propName string)

func IsNil

func IsNil(input interface{}) bool

func Register

func Register(tpl SQLTemplate)

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{})

func (DBParam) GetVal added in v0.1.41

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

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)

func (*FixedContext) GetSQLContext

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

GetSQLContext 获取查询串

func (FixedContext) Name

func (ctx FixedContext) Name() string

func (*FixedContext) Placeholder

func (ctx *FixedContext) Placeholder() Placeholder

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 Symbols, tpl string, input map[string]interface{}, placeholder Placeholder) (string, *ReplaceItem)

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)
	AnalyzeTPL(tpl string, input map[string]interface{}, ph Placeholder) (sql string, item *ReplaceItem)
}

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)

func (*SeqContext) GetSQLContext

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

GetSQLContext 获取查询串

func (SeqContext) Name

func (ctx SeqContext) Name() string

func (*SeqContext) Placeholder

func (ctx *SeqContext) Placeholder() Placeholder

type SymbolCallback

type SymbolCallback func(DBParam, string, *ReplaceItem) string

type Symbols

type Symbols map[string]SymbolCallback

Jump to

Keyboard shortcuts

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