tpl

package
v0.1.37 Latest Latest
Warning

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

Go to latest
Published: Jan 20, 2023 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	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 []interface{})

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

func DefaultAnalyze

func DefaultAnalyze(symbols Symbols, tpl string, input map[string]interface{}, placeholder Placeholder) (string, []string, []interface{})

func GetPropName

func GetPropName(fullKey string) (propName string)

func IsNil

func IsNil(input interface{}) bool

func Register

func Register(tpl SQLTemplate)

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) (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, names []string, values []interface{})

func (*FixedContext) GetSQLContext

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

GetSQLContext 获取查询串

func (*FixedContext) HandleAndSymbols added in v0.1.22

func (ctx *FixedContext) HandleAndSymbols(template string, input map[string]interface{}, ph Placeholder) (sql string, values []interface{}, exists bool)

func (*FixedContext) HandleOrSymbols added in v0.1.22

func (ctx *FixedContext) HandleOrSymbols(template string, input map[string]interface{}, ph Placeholder) (sql string, values []interface{}, exists bool)

func (FixedContext) Name

func (ctx FixedContext) Name() string

func (*FixedContext) Placeholder

func (ctx *FixedContext) Placeholder() Placeholder

type Placeholder

type Placeholder interface {
	Get() string
	Clone() Placeholder
}

type ReplaceItem

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

type SQLTemplate

type SQLTemplate interface {
	Name() string
	Placeholder() Placeholder
	GetSQLContext(tpl string, input map[string]interface{}) (query string, args []interface{})
	AnalyzeTPL(tpl string, input map[string]interface{}, ph Placeholder) (sql string, names []string, values []interface{})
	HandleAndSymbols(tpl string, input map[string]interface{}, ph Placeholder) (sql string, values []interface{}, exists bool)
	HandleOrSymbols(tpl string, input map[string]interface{}, ph Placeholder) (sql string, values []interface{}, exists bool)
}

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, names []string, values []interface{})

func (*SeqContext) GetSQLContext

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

GetSQLContext 获取查询串

func (*SeqContext) HandleAndSymbols added in v0.1.22

func (ctx *SeqContext) HandleAndSymbols(template string, input map[string]interface{}, ph Placeholder) (sql string, values []interface{}, exists bool)

func (*SeqContext) HandleOrSymbols added in v0.1.22

func (ctx *SeqContext) HandleOrSymbols(template string, input map[string]interface{}, ph Placeholder) (sql string, values []interface{}, exists bool)

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