collect

package
v0.0.0-...-cfac0d7 Latest Latest
Warning

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

Go to latest
Published: May 1, 2024 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const ARR_OBJ_SPLIT = "________________COLLECT_SQL_OBJ_ARR_PARAM_SPLIT________________"
View Source
const ArrSplit = "_______________COLLECT_SQL_ARR_PARAM_SPLIT________________"
View Source
const LIST_OBJ = "list_obj"
View Source
const LIST_SIMPLE = "list_simple"
View Source
const PARAM_LIST_OBJ = "list_obj"
View Source
const PARAM_LIST_SIMPLE = "list_simple"
View Source
const PARAM_SIMPLE_PARAM = "simple"
View Source
const SIMPLE_PARAM = "simple"
View Source
const SPLIT = "________________COLLECT_SQL_NORMAL_PARAM_SPLIT________________"

Variables

This section is empty.

Functions

func GetSqlParamKey

func GetSqlParamKey(sqlParamKey string) string

func GetSqlParamKeyName

func GetSqlParamKeyName(param_key string) string

func GetSqlParamKeyValue

func GetSqlParamKeyValue(param_key string, param_value interface{}, to_param_key bool) string

* * to_param_key 渲染第一次模板变量为true *

Types

type AttrParam

type AttrParam struct {
	AttrName  string
	AttrValue interface{}
}

type BaseParam

type BaseParam interface {
	// 设置字段名名
	SetParamKey(string)
	// 设置原始key
	SetParamKeyOrinal(string)
	// 设置字段值
	SetParamKeyValue(interface{})
	// 获取字段名的参数值,比如 to_param_key 为true ,直接返回字段名称,如果为false ,直接返回 sql占位符号 ?。如果是数组则是,多个? 拼接的字符串
	GetSqlParamKeyValue(to_param_key bool) interface{}
	// 获取字段名,获取模板变量里面的字段名称,比如 {{.userList}},获取变量userList
	GetSqlParamParamKey() string
	// 获取原始变量值{{.userList}},获取变量{{.userList}}
	GetParamKeyOriginal() string
	// 获取参数的值
	GetValue() []interface{}
	// 获取数组对象列表的key
	GetSqlParamParamKeyList() []AttrParam
	// 设置子变量名称
	SetChildKeys(childrenKeys []string)
}

todo 定义一个结构体 1 根据字段名返回参数情况下,字段名,值情况下的字段名。用于渲染渲染第一sql 渲染变量处理,第二次渲染预编译变量 2 返回字段名形式下的,参数值列表,用于第二次的渲染参数值 3 返回 2渲染实际结果值

func GetArrayObjParamObj

func GetArrayObjParamObj(paramKey string, childrenKeys []string, params map[string]interface{}) BaseParam

* * 获取数组对象列表

func GetSimpleParamObj

func GetSimpleParamObj(ParamKeyOriginal string, params map[string]interface{}) BaseParam

* * 获取简单对象

func NewParam

func NewParam(param_key string, param_key_original string, param_value interface{}) BaseParam

func NewParamFromMap

func NewParamFromMap(param_key_original string, param map[string]interface{}) BaseParam

type NormalArray

type NormalArray struct {
	NormalParam
}

func (*NormalArray) GetSqlParamKeyValue

func (t *NormalArray) GetSqlParamKeyValue(to_param_key bool) interface{}

获取数组的参数变量

func (*NormalArray) GetSqlParamParamKeyList

func (t *NormalArray) GetSqlParamParamKeyList() []AttrParam

* * 获取数组对象的key

type NormalArrayObj

type NormalArrayObj struct {
	NormalParam
}

func (*NormalArrayObj) GetSqlParamKeyValue

func (t *NormalArrayObj) GetSqlParamKeyValue(to_param_key bool) interface{}

获取数组的参数变量

func (*NormalArrayObj) GetSqlParamParamKeyList

func (t *NormalArrayObj) GetSqlParamParamKeyList() []AttrParam

* * 获取数组对象的key

type NormalParam

type NormalParam struct {
	// 转换后key
	ParamKey string
	// 原始key
	ParamKeyOriginal string
	// 值
	ParamValue interface{}
	// 子变量
	ChildKeys []string
}

func (*NormalParam) GetParamKeyOriginal

func (t *NormalParam) GetParamKeyOriginal() string

func (*NormalParam) GetSqlParamKeyValue

func (t *NormalParam) GetSqlParamKeyValue(to_param_key bool) interface{}

* * to_param_key 渲染第一次模板变量为true *

func (*NormalParam) GetSqlParamParamKey

func (t *NormalParam) GetSqlParamParamKey() string

func (*NormalParam) GetSqlParamParamKeyList

func (t *NormalParam) GetSqlParamParamKeyList() []AttrParam

* * 获取数组对象的key

func (*NormalParam) GetValue

func (t *NormalParam) GetValue() []interface{}

* * 获取变量的实际值

func (*NormalParam) SetChildKeys

func (t *NormalParam) SetChildKeys(childrenKeys []string)

func (*NormalParam) SetParamKey

func (t *NormalParam) SetParamKey(param_key string)

func (*NormalParam) SetParamKeyOrinal

func (t *NormalParam) SetParamKeyOrinal(param_key_original string)

func (*NormalParam) SetParamKeyValue

func (t *NormalParam) SetParamKeyValue(param_key_value interface{})

type SqlParamName

type SqlParamName struct {
	Name        string         // 变量名称
	Value       interface{}    // 值
	VarType     string         // 变量类型
	ItemName    string         // 子变量前缀
	ItemVarList []SqlParamName // 子变量列表
}

* sql 变量类型

func (*SqlParamName) GetItemName

func (t *SqlParamName) GetItemName() string

func (*SqlParamName) GetItemVarList

func (t *SqlParamName) GetItemVarList() []SqlParamName

func (*SqlParamName) GetName

func (t *SqlParamName) GetName() string

func (*SqlParamName) IsSimple

func (t *SqlParamName) IsSimple() bool

type SqlTemplate

type SqlTemplate struct {
	SqlContent string
	Nodes      []parse.Node
	Tpl        text_template.Template
}

* * sql 模板 *

func NewSqlTemplate

func NewSqlTemplate(sqlContent string) *SqlTemplate

* * 初始化模板 *

func NewSqlTemplateByTpl

func NewSqlTemplateByTpl(tpl *text_template.Template) *SqlTemplate

* * 初始化模板 *

func (*SqlTemplate) Content2Sql

func (t *SqlTemplate) Content2Sql(params map[string]interface{}, to_param_key bool) (string, map[string]interface{}, []interface{})

* *

根据sql 模板渲染sql, 并且获取变量
sql 模板内容转执行sql,sql 需要渲染2次。
第一次处理if else ,处理显示和隐藏的变量,
第二次将变量替换为sql 里面的站位符号,处理成预编译语句
sql 只处理params第一层变量,不处理2、3层变量以及更深层次的变量,如果有2、3层变量将直接渲染,请注意否有sql 注入的风险
也不能像写html 层级,各种标签
@param sql_content SQL 内容
@param params      请求参数
@to_param_key      是否转参数字段,第一次需要处理if else ,第二次渲染预编译的sql

*

func (*SqlTemplate) VarNameList

func (t *SqlTemplate) VarNameList(params map[string]interface{}) []BaseParam

* ** 获取变量列表 *

Jump to

Keyboard shortcuts

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