Documentation ¶
Overview ¶
exp 包中是用于 SQL 语句生成的各种组件
exp.go 中保存了 exp 包的一些未分类组件
TODO ¶
普通的表达式没有处理字符串转义,需要接受外部传入的数据的话,请一定参数化
目前还没有对纯文本文法中的命名做映射,要享受转换的能力,请使用 table 和 field 类型
select.go 文件提供以 Sel 类型为核心的 Select 语句生成功能
NOTE ¶
Table 的 name 应该是模型的类型名而非表名,表名只在注册模型的时候显式出现 ¶
table 和 field 都是指应用层命名,也就是表和字段对应的类型名和字段名 暂时还不支持主子表的嵌套表示,这个应该尽快实现 在 Postgres 中,用双引号包围的命名大小写敏感,可以包含带有空格等特殊符号的字符 这里暂时没有计划支持。这个别名功能主要供应用层编程使用, 暂时看不到复杂的数据库或应用层命名能带来什么好处。 NOTE:Table 的 name 应该是模型的类型名而非表名,表名只在注册模型的时候显式出现
Index ¶
- func Arg(order int) *arg
- func FTS(field Exp, query Exp) *fullTextSearch
- func FieldIsNull(field Exp) fieldIsNull
- func IncOrder(e Exp, step int)
- func Not(exp Exp) *not
- func Snippet(s string) *snippet
- type Del
- type Env
- type Exp
- func And(x, y Exp) Exp
- func As(exp Exp, name string) Exp
- func BinOpt(name string, left, right Exp) Exp
- func Brackets(exp Exp) Exp
- func Count(fields ...Exp) Exp
- func Counts() Exp
- func Desc(field Exp) Exp
- func Equal(x, y Exp) Exp
- func Func(name string, args ...Exp) Exp
- func Great(x, y Exp) Exp
- func In(test Exp, set ...Exp) Exp
- func Integer(data int) Exp
- func IsNullFunc(field Exp, exp Exp) Exp
- func Less(x, y Exp) Exp
- func Like(x, y Exp) Exp
- func NotEqual(x, y Exp) Exp
- func NullIf(field Exp, exp Exp) Exp
- func Or(x, y Exp) Exp
- func Text(data string) Exp
- func Timestamp(data time.Time) Exp
- func X() Exp
- type Field
- type Ins
- type Sel
- func (sel Sel) Eval(env Env) string
- func (sel *Sel) From(t *Table) *Sel
- func (sel *Sel) GroupBy(fields ...Exp) *Sel
- func (sel *Sel) Having(exp Exp) *Sel
- func (sel *Sel) Join(t *Table, on Exp) *Sel
- func (sel *Sel) LeftJoin(t *Table, on Exp) *Sel
- func (sel *Sel) Limit(limit int) *Sel
- func (sel *Sel) Offset(offset int) *Sel
- func (sel *Sel) OrderBy(fields ...Exp) *Sel
- func (sel *Sel) Where(exp Exp) *Sel
- type Table
- type Upd
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Arg ¶
func Arg(order int) *arg
我也觉得自动生成序列号比较省力气啊。不过想了半天, $%d 就是为了可以指定参数插入位置啊, 自动生成顺序就白瞎了啊…… 将来可能会把这个变成支持命名的,order虽然更省事儿,但是命名相对来说更省心
func FieldIsNull ¶
func FieldIsNull(field Exp) fieldIsNull
Types ¶
type Exp ¶
func IsNullFunc ¶
func Text ¶
Text 函数用于生成text类型的表达式。 text 就是 PostgreSQL 的 text 类型。由于作者太懒,先用这个代替所有的文本和字符串类型用吧, 在 PG 里其实一般的规模好像也问题不大……
type Ins ¶
type Ins struct {
// contains filtered or unexported fields
}
Insert 结构体的 Returing 操作会返回到结构参数的对效应字段,而 Insert 一组值则会将得到的结果集返回
type Sel ¶
type Sel struct {
// contains filtered or unexported fields
}
desc 应该能作用到确定的排序字段
func SelectThem ¶
type Table ¶
func NewTable ¶
这里的goname必须是一个fullname,即 type.PkgPath()+"."+type.Name(), 如 time.Time。 原本想传一个 reflect.Type ,后来我琢磨了一下,在实际调用场景里好像现构造一个 reflect.Type 也不省心……