entitysql

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Sep 16, 2024 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewCreate

func NewCreate(ctx context.Context, drv dialect.Tx, spec *CreateSpec) error

NewCreate 生成创建语句,并执行。 如果执行失败,会回滚事务。

Params:

  • ctx: 上下文。
  • drv: 数据库连接。
  • spec: 创建语句的信息。

func NewDelete

func NewDelete(ctx context.Context, drv dialect.Tx, spec *DeleteSpec) error

NewDelete 生成删除语句,并执行。 如果执行失败,会回滚事务。

Params:

  • ctx: 上下文。
  • drv: 数据库连接。

func NewQuery

func NewQuery(ctx context.Context, drv dialect.Driver, spec *QuerySpec) error

NewQuery 查询一个实体,并将返回的结果扫描到指定的值中。

func NewQueryContext

func NewQueryContext(parent context.Context, c *QueryContext) context.Context

NewQueryContext 将QueryContext添加到context中,并返回一个新的context。

Params:

  • parent: 父context。
  • c: 用于Query,包含了查询语句上下的信息。

Returns:

0: 新的context。

func NewUpdate

func NewUpdate(ctx context.Context, drv dialect.Tx, spec *UpdateSpec) error

NewUpdate 生成更新语句,并执行。 如果执行失败,会回滚事务。

Params:

  • ctx: 上下文。
  • drv: 数据库连接。
  • spec: 更新语句的信息。

func Rollback added in v0.5.0

func Rollback(tx dialect.Tx, err error) error

Rollback 回滚事务。

Types

type Builder

type Builder struct {

	// IsAs 是否使用别名
	IsAs bool
	// contains filtered or unexported fields
}

Builder 用于构建SQL查询的字符串构建器。

func (*Builder) Arg

func (b *Builder) Arg(a any) *Builder

Arg 添加一个参数到生成器中。

Params:

  • a: 参数。

Returns:

0: sql生成器。

func (*Builder) Argf

func (b *Builder) Argf(format string, a any) *Builder

Argf 将输入参数以给定的格式添加到生成器中。

Argf("JSON(?)", b).
Argf("ST_GeomFromText(?)", geom)

Params:

  • format: 格式。
  • a: 参数。

Returns:

0: sql生成器。

func (*Builder) Args

func (b *Builder) Args(args ...any) *Builder

Argf 添加多个参数到生成器中。

Params:

  • args: 参数。

Returns:

0: sql生成器。

func (*Builder) Blank

func (b *Builder) Blank() *Builder

Blank 添加一个空格到查询中。

Returns:

0: sql生成器。

func (*Builder) Comma

func (b *Builder) Comma() *Builder

Comma 添加一个逗号到查询中。

Returns:

0: sql生成器。

func (Builder) Dialect

func (b Builder) Dialect() dialect.DbDriver

Dialect 返回生成器使用的数据库驱动。满足state接口。

Returns:

0: 数据库驱动。

func (*Builder) FindAs added in v0.7.0

func (b *Builder) FindAs(entityName string) string

func (*Builder) Ident

func (b *Builder) Ident(s string) *Builder

Ident 添加标识符到查询中。标识符可以是表名、列名、别名等。

Params:

  • s: 标识符。

Returns:

0: sql生成器。

func (*Builder) IdentComma

func (b *Builder) IdentComma(s ...string) *Builder

IdentComma 添加标识符到查询中,用逗号分隔

Params:

  • s: 标识符。

Returns:

0: sql生成器。

func (*Builder) Join

func (b *Builder) Join(qs ...Querier) *Builder

Join 添加多个查询到生成器中。

Params:

  • qs: 查询。

Returns:

0: sql生成器。

func (*Builder) Len

func (b *Builder) Len() int

Len 返回生成器中查询语句的长度。

Returns:

0: 查询语句的长度。

func (*Builder) Quote

func (b *Builder) Quote(ident string) string

Quote 根据配置的dialect,选择不同的字符引用SQL标识符。默认为"`"(通常用于MySQL)。 用于区分关键字,特殊字符等。

Params:

  • ident: 标识符。

Returns:

0: 引用的标识符。

func (*Builder) Reset

func (b *Builder) Reset()

Reset 重置生成器中的查询语句。

func (*Builder) SetDialect

func (b *Builder) SetDialect(dialect dialect.DbDriver)

SetDialect 设置生成器使用的数据库驱动。满足state接口。

Params:

  • dialect: 数据库驱动。

func (*Builder) SetQualifier added in v0.5.0

func (b *Builder) SetQualifier(qualifier string)

func (*Builder) SetTotal

func (b *Builder) SetTotal(total int)

SetTotal 设置查询树中总共出现的参数数量。满足state接口。

Params:

  • total: 参数数量。

func (*Builder) String

func (b *Builder) String() string

String 把生成器中的查询语句转换为字符串。。

Returns:

0: 查询语句。

func (Builder) Total

func (b Builder) Total() int

Total 返回查询树中总共出现的参数数量。满足state接口。 用于在查询、表达式中传递参数数量。

Returns:

0: 参数数量。

func (*Builder) Wrap

func (b *Builder) Wrap(f func(*Builder)) *Builder

Wrap 获取一个回调函数,把它包装在括号中,并添加到查询中。

Params:

  • f: 回调函数。

Returns:

0: sql生成器。

func (*Builder) WriteByte

func (b *Builder) WriteByte(c byte) *Builder

WriteByte 添加一个字节到查询中。

Params:

  • c: 字节。

Returns:

0: sql生成器。

func (*Builder) WriteOp

func (b *Builder) WriteOp(op Op) *Builder

WriteOp 添加一个操作符到查询中。

Params:

  • op: 操作符。

Returns:

0: sql生成器。

func (*Builder) WriteQuery added in v0.5.0

func (b *Builder) WriteQuery(q string) *Builder

WriteQuery 添加一个查询语句到生成器中。

Params:

  • q: 查询语句。

Returns:

0: sql生成器。

func (*Builder) WriteSchema

func (b *Builder) WriteSchema(schema string) *Builder

WriteSchema 添加一个模式到查询中。

Params:

  • schema: 模式。

Returns:

0: sql生成器。

func (*Builder) WriteString

func (b *Builder) WriteString(s string) *Builder

WriteString 添加一个字符串到查询中。

Params:

  • s: 字符串。

Returns:

0: sql生成器。

type CaseSpec added in v0.5.0

type CaseSpec struct {
	// Field Case的值。
	Field FieldSpec
	// When Case的条件。
	When PredicateFunc
}

CaseSpec Case语句信息。

type Caser added in v0.5.0

type Caser struct {
	*Builder
	// Cases CASE语句信息。
	Cases []CaseSpec
	// contains filtered or unexported fields
}

Caser CASE语句生成器。

func NewCaser added in v0.5.0

func NewCaser(buider *Builder, column string, cases []CaseSpec, as string) *Caser

NewCaser 创建一个CASE语句生成器。

Params:

  • column: 列名。
  • cases: CASE语句信息。
  • as: 实体别名。

Returns:

0: CASE语句生成器。

func (*Caser) Else added in v0.5.0

func (c *Caser) Else() *Caser

Else 添加一个ELSE条件。

Returns:

0: CASE语句生成器。

func (*Caser) Query added in v0.5.0

func (c *Caser) Query() (SqlSpec, error)

Query 生成CASE语句。

Returns:

0: CASE语句。
1: CASE语句的参数。

func (*Caser) Then added in v0.5.0

func (c *Caser) Then(v any) *Caser

Then 添加一个THEN条件。

Params:

  • v: 值。

Returns:

0: CASE语句生成器。

func (*Caser) When added in v0.5.0

func (c *Caser) When(pred PredicateFunc) *Caser

When 添加一个WHEN条件。

Params:

  • pred: WHERE子句生成器。

Returns:

0: CASE语句生成器。

type CreateSpec

type CreateSpec struct {
	// Entity 表示实体的信息。
	Entity *EntitySpec
	// Scan 用于扫描返回的数据。
	Scan Scanner
	// Fields 用于生成创建语句。
	Fields [][]*FieldSpec
	// Returning 用于返回的字段。
	Returning []FieldName
	// TODO
	Schema string
}

CreateSpec 用于生成创建语句。

func NewCreateSpec

func NewCreateSpec(entity string, columns []FieldName) *CreateSpec

NewCreateSpec 创建一个CreateSpec。

Params:

  • entity: 实体的名称。
  • columns: 实体的字段。

func (*CreateSpec) CheckRequired

func (s *CreateSpec) CheckRequired(dbDriver dialect.DbDriver, name FieldName, f entity.FieldStorager) error

CheckRequired 检查字段是否为空。

Params:

  • name: 字段名称。
  • f: 字段。

type DeleteSpec

type DeleteSpec struct {
	Entity    *EntitySpec
	Predicate PredicateFunc
	Affected  *int64
}

DeleteSpec 用于生成删除语句。

func NewDeleteSpec

func NewDeleteSpec(entity string) *DeleteSpec

NewDeleteSpec 创建一个DeleteSpec。

Params:

  • entity: 实体的名称。

type Deleter

type Deleter struct {
	*Builder
	// contains filtered or unexported fields
}

Deleter 删除语句生成器。

func NewDeleter added in v0.5.0

func NewDeleter(ctx context.Context) *Deleter

NewDeleter 创建一个删除语句生成器。

Params:

  • ctx: 上下文。

Returns:

0: 删除语句生成器。

func (*Deleter) Query

func (d *Deleter) Query() ([]SqlSpec, error)

Query 生成删除语句。

Returns:

0: 删除语句。
1: 错误信息。

func (*Deleter) SetDialect

func (d *Deleter) SetDialect(dialect dialect.DbDriver) *Deleter

SetDialect 设置数据库方言。

Params:

  • dialect: 数据库方言。

Returns:

0: 删除语句生成器。

func (*Deleter) SetEntity

func (d *Deleter) SetEntity(entity string) *Deleter

SetEntity 设置实体表的名称。

Params:

  • entity: 实体表的名称。

Returns:

0: 删除语句生成器。

func (*Deleter) SetSchema

func (d *Deleter) SetSchema(schema string) *Deleter

SetSchema 设置模式名称。

Params:

  • schema: 模式名称。

Returns:

0: 删除语句生成器。

type DialectBuilder

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

DialectBuilder 方言生成器。

func NewDialect

func NewDialect(dialect dialect.DbDriver) *DialectBuilder

NewDialect 创建一个方言生成器。

func (*DialectBuilder) Select

func (b *DialectBuilder) Select() *Selector

NewEntityBuilder 创建一个实体表的生成器。

func (*DialectBuilder) Table added in v0.5.0

func (b *DialectBuilder) Table(name string) *SelectTable

type EntitySpec

type EntitySpec struct {
	// Name 实体表的名称,和[entity.EntityConfig]中的AttrName相同。
	Name string
	// Columns 实体表的列名,通过这个属性会指定Select中包含的列。
	Columns []FieldSpec
}

EntitySpec 实体表的信息。

type Field

type Field struct {
	// Name 字段名称。
	Name FieldName
	// Primary 主键值。0表示不是主键,大于0表示主键。
	Primary int
	// Default 是否默认值。
	Default bool
	// Required 是否必填。
	Required bool
}

Field 字段信息。

type FieldName

type FieldName string

FieldSpec 字段信息。

func (FieldName) String

func (e FieldName) String() string

String 返回字段的名称。

type FieldSpec

type FieldSpec struct {
	// Name 字段的名称。
	Name FieldName
	// NameFormat 字段名称的格式化,比如SELECT ST_AsText(geom)中的`ST_AsText(geom)`。
	NameFormat func(dbType dialect.DbDriver, name string) string
	// Param 字段的值。
	Param entity.FieldValue
	// Default 是否使用默认值。
	Default     bool
	ParamFormat func(dbType dialect.DbDriver, param string) string
}

FieldSpec 字段信息。

func NewFieldSpec added in v0.7.0

func NewFieldSpec(column FieldName) FieldSpec

func NewFieldSpecs added in v0.7.0

func NewFieldSpecs(columns ...FieldName) []FieldSpec

func (FieldSpec) FormatParam added in v0.7.0

func (f FieldSpec) FormatParam(placeholder string, info *StmtInfo) string

FormatParam 格式化字段的值。实现ParamFormatter接口。

func (FieldSpec) String added in v0.7.0

func (f FieldSpec) String() string

String 实现Stringer接口。

func (FieldSpec) Value

func (f FieldSpec) Value() (driver.Value, error)

Value 用于实现driver.Valuer接口, 通过这个接口可以让Exec(ctx context.Context, query string, args []any, v any)提取出args的值。

type Identifier added in v0.5.0

type Identifier string

Identifier 标识符的类型。

const (
	// IdentDefault 默认值的标识符。
	IdentDefault Identifier = "DEFAULT"
)

func (Identifier) String added in v0.5.0

func (i Identifier) String() string

String 返回标识符的字符串表示形式。

type Inserter

type Inserter struct {
	*Builder
	// contains filtered or unexported fields
}

Inserter 插入语句生成器。

func NewInserter added in v0.5.0

func NewInserter(ctx context.Context) *Inserter

NewInserter 创建一个插入语句生成器。

Params:

  • ctx: 上下文。

Returns:

0: 插入语句生成器。

func (*Inserter) AddRow added in v0.5.0

func (i *Inserter) AddRow() *Inserter

AddRow 添加一行数据。

Returns:

0: 插入语句生成器。

func (*Inserter) FillDefault added in v0.5.0

func (i *Inserter) FillDefault() *Inserter

FillDefault 用于批量插入,当前行的数据有一些列没有值,填充Null,这里不做非空字段的判断, 由codegen生成的代码保证。

Returns:

0: 插入语句生成器。

func (*Inserter) Insert

func (i *Inserter) Insert() ([]SqlSpec, error)

Insert 生成插入语句。

Returns:

0: 插入语句。
1: 错误信息。

func (*Inserter) Set

func (i *Inserter) Set(column string, as string, v any) *Inserter

Set 设置插入的值。

Params:

  • column: 列名,也就是字段名。
  • v: 值。

func (*Inserter) SetColumns added in v0.5.0

func (i *Inserter) SetColumns(columns ...FieldSpec) *Inserter

SetColumns 设置列名。

Params:

  • columns: 列名。

Returns:

0: 插入语句生成器。

func (*Inserter) SetDialect

func (i *Inserter) SetDialect(dialect dialect.DbDriver) *Inserter

SetDialect 设置数据库方言。

Params:

  • dialect: 数据库方言。

Returns:

0: 插入语句生成器。

func (*Inserter) SetEntity

func (i *Inserter) SetEntity(entity string) *Inserter

SetEntity 设置实体表的名称。

Params:

  • entity: 实体表的名称。

Returns:

0: 插入语句生成器。

func (*Inserter) SetReturning

func (i *Inserter) SetReturning(returning ...FieldName) *Inserter

SetReturning 设置返回的列名。

Params:

  • returning: 返回的列名。

Returns:

0: 插入语句生成器。

func (*Inserter) SetSchema

func (i *Inserter) SetSchema(schema string) *Inserter

SetSchema 设置模式名称。

Params:

  • schema: 模式名称。

Returns:

0: 插入语句生成器。

type Op

type Op int
const (
	// OpEQ 等于操作符。
	OpEQ Op = 0 // =
	// OpNEQ 不等于操作符。
	OpNEQ Op = 1 // <>
	// OpGT 大于操作符。
	OpGT Op = 2 // >
	// OpGTE 大于等于操作符。
	OpGTE Op = 3 // >=
	// OpLT 小于操作符。
	OpLT Op = 4 // <
	// OpLTE 小于等于操作符。
	OpLTE Op = 5 // <=
	// OpIn IN操作符。
	OpIn Op = 6 // IN
	// OpNotIn NOT IN操作符。
	OpNotIn Op = 7 // NOT IN
	// OpLike LIKE操作符。
	OpLike Op = 8 // LIKE
	// OpIsNull IS NULL操作符。
	OpIsNull Op = 9 // IS NULL
	// OpNotNull IS NOT NULL操作符。
	OpNotNull Op = 10 // IS NOT NULL
	// OpAdd 加操作符。
	OpAdd Op = 11 // +
	// OpSub 减操作符。
	OpSub Op = 12 // -
	// OpMul 乘操作符。
	OpMul Op = 13 // *
	// OpDiv 除操作符。
	OpDiv Op = 14 // / (Quotient)
	// OpMod 取模操作符。
	OpMod Op = 15 // % (Reminder)
	// OpContains 包含操作符。
	OpContains Op = 16 // @> (Contains)
)

Predicate and arithmetic operators.

func (Op) String

func (op Op) String() string

type Order added in v0.5.0

type Order struct {
	OrderOptions
	Builder
	Column string
}

func O added in v0.5.0

func O() *Order

func (*Order) Asc added in v0.5.0

func (o *Order) Asc() *Order

func (*Order) Desc added in v0.5.0

func (o *Order) Desc() *Order

func (*Order) NullsFirst added in v0.5.0

func (o *Order) NullsFirst() *Order

func (*Order) NullsLast added in v0.5.0

func (o *Order) NullsLast() *Order

func (*Order) Query added in v0.5.0

func (o *Order) Query(b *Builder)

func (*Order) SetAs added in v0.5.0

func (o *Order) SetAs(schema string) *Order

func (*Order) SetColumn added in v0.5.0

func (o *Order) SetColumn(column string) *Order

func (*Order) SetDialect added in v0.5.0

func (o *Order) SetDialect(dialect dialect.DbDriver) *Order

func (*Order) SetOp added in v0.7.0

func (o *Order) SetOp(op string) *Order

type OrderFunc added in v0.5.0

type OrderFunc func(*Order)

type OrderOptions added in v0.5.0

type OrderOptions struct {
	Desc       bool
	As         string // Optional alias.
	NullsFirst bool   // Whether to sort nulls first.
	NullsLast  bool   // Whether to sort nulls last.
}

type ParamFormatter

type ParamFormatter interface {
	// 这个接口可以被用于特定的场景,
	// 例如当你使用的数据库需要一种特殊的参数格式时。
	// 例子:如果你在MySQL中使用地理空间数据,
	// 你可能需要将标准的参数占位符(如?)转换为特定的函数调用(如ST_GeomFromWKB(?))。
	// 参数
	//   - placeholder: 标准的占位符,如?
	//   - info: 保存SQL语句或数据库连接的上下文信息
	FormatParam(placeholder string, info *StmtInfo) string
}

ParamFormatter 定义了FormatParam方法,用于格式化占位符。

type Predicate

type Predicate struct {
	*Builder
	// contains filtered or unexported fields
}

Predicate Where子句生成器。

func AndPred added in v0.5.0

func AndPred(builder *Builder, preds ...*Predicate) *Predicate

func P

func P(b *Builder, fns ...func(*Builder)) *Predicate

P 创建一个Where子句生成器。

func (*Predicate) Add added in v0.5.0

func (p *Predicate) Add() *Predicate

Add 添加一个加法的条件。

Returns:

0: Where子句生成器。

func (*Predicate) And

func (p *Predicate) And() *Predicate

And 添加一个AND标识符。

Returns:

0: Where子句生成器。

func (*Predicate) Append

func (p *Predicate) Append(f func(*Builder)) *Predicate

Append 添加一个Where子句。

Params:

  • f: Where子句生成器的函数。

func (*Predicate) Clone added in v0.5.0

func (p *Predicate) Clone(begin int, end int) *Predicate

Clone 复制一个Predicate

Params:

  • begin: 复制从第几个开始, -1表示没有开始位置
  • end: 复制到第几个结束, -1表示没有结束位置

Returns:

0: 复制的Predicate。

func (*Predicate) Contains added in v0.7.0

func (p *Predicate) Contains(column string, as string, v any) *Predicate

Contains 添加一个@>的条件。

Returns:

0: Where子句生成器。

func (*Predicate) Div added in v0.5.0

func (p *Predicate) Div() *Predicate

Div 添加一个除法的条件。

Returns:

0: Where子句生成器。

func (*Predicate) EQ

func (p *Predicate) EQ(column string, as string, v any) *Predicate

EQ 添加一个等于的条件。

Params:

  • column: 列名。
  • v: 值。

Returns:

0: Where子句生成器。

func (*Predicate) FunsLen added in v0.5.0

func (p *Predicate) FunsLen() int

FunsLen 返回Where子句的长度。

Returns:

0: Where子句的长度。

func (*Predicate) GT added in v0.5.0

func (p *Predicate) GT(column string, as string, v any) *Predicate

GT 添加一个大于的条件。

Params:

  • column: 列名。
  • v: 值。

Returns:

0: Where子句生成器。

func (*Predicate) GTE added in v0.5.0

func (p *Predicate) GTE(column string, as string, v any) *Predicate

GTE 添加一个大于等于的条件。

Params:

  • column: 列名。
  • v: 值。

Returns:

0: Where子句生成器。

func (*Predicate) In added in v0.5.0

func (p *Predicate) In(column string, as string, v ...any) *Predicate

In 添加一个IN的条件。

Params:

  • column: 列名。
  • v: 值。

Returns:

0: Where子句生成器。

func (*Predicate) IsNull added in v0.5.0

func (p *Predicate) IsNull(column string, as string) *Predicate

IsNull 添加一个IS NULL的条件。

Params:

  • column: 列名。

Returns:

0: Where子句生成器。

func (*Predicate) LT added in v0.5.0

func (p *Predicate) LT(column string, as string, v any) *Predicate

LT 添加一个小于的条件。

Params:

  • column: 列名。
  • v: 值。

Returns:

0: Where子句生成器。

func (*Predicate) LTE added in v0.5.0

func (p *Predicate) LTE(column string, as string, v any) *Predicate

LTE 添加一个小于等于的条件。

Params:

  • column: 列名。
  • v: 值。

Returns:

0: Where子句生成器。

func (*Predicate) Like added in v0.5.0

func (p *Predicate) Like(column string, as string, v any) *Predicate

Like 添加一个LIKE的条件。

Params:

  • column: 列名。
  • v: 值。

Returns:

0: Where子句生成器。

func (*Predicate) Mod added in v0.5.0

func (p *Predicate) Mod() *Predicate

Mod 添加一个取模的条件。

Returns:

0: Where子句生成器。

func (*Predicate) Mul added in v0.5.0

func (p *Predicate) Mul() *Predicate

Mul 添加一个乘法的条件。

Returns:

0: Where子句生成器。

func (*Predicate) NEQ added in v0.5.0

func (p *Predicate) NEQ(column string, as string, v any) *Predicate

NEQ 添加一个不等于的条件。

Params:

  • column: 列名。
  • v: 值。

Returns:

0: Where子句生成器。

func (*Predicate) Not

func (p *Predicate) Not() *Predicate

Not 添加一个NOT标识符。

Returns:

0: Where子句生成器。

func (*Predicate) NotIn added in v0.5.0

func (p *Predicate) NotIn(column string, as string, v ...any) *Predicate

NotIn 添加一个NOT IN的条件。

Params:

  • column: 列名。
  • v: 值。

Returns:

0: Where子句生成器。

func (*Predicate) NotNull added in v0.5.0

func (p *Predicate) NotNull(column string, as string) *Predicate

NotNull 添加一个IS NOT NULL的条件。

Params:

  • column: 列名。

Returns:

0: Where子句生成器。

func (*Predicate) Or

func (p *Predicate) Or() *Predicate

Or 添加一个OR标识符。

Returns:

0: Where子句生成器。

func (*Predicate) Query

func (p *Predicate) Query() (SqlSpec, error)

Query 生成查询中的Where子句。

Returns:

0: 查询中的Where子句。
1: 查询中的参数。

func (*Predicate) Sub added in v0.5.0

func (p *Predicate) Sub() *Predicate

Sub 添加一个减法的条件。

Returns:

0: Where子句生成器。

type PredicateFunc added in v0.5.0

type PredicateFunc func(p *Predicate)

PredicateFunc Where子句生成器的函数。

var Add PredicateFunc = func(p *Predicate) {
	p.Add()
}
var And PredicateFunc = func(p *Predicate) {
	p.And()
}
var Div PredicateFunc = func(p *Predicate) {
	p.Div()
}
var Mod PredicateFunc = func(p *Predicate) {
	p.Mod()
}
var Mul PredicateFunc = func(p *Predicate) {
	p.Mul()
}
var Not PredicateFunc = func(p *Predicate) {
	p.Not()
}
var Or PredicateFunc = func(p *Predicate) {
	p.Or()
}
var Sub PredicateFunc = func(p *Predicate) {
	p.Sub()
}

type Querier

type Querier interface {
	// Query 返回元素的查询表示形式以及与之相关的参数
	Query() (SqlSpec, error)
}

第一个对象返回:("SELECT * FROM users WHERE age > ?", [30]) 第二个对象返回:("AND name = ?", ["John"]) 当使用 Join 方法将这两个对象组合时,生成的SQL查询将是: SELECT * FROM users WHERE age > ? AND name = ?

func Raw

func Raw(s string) Querier

Raw 返回一个不需要转义的原始字符串

type QueryContext

type QueryContext struct {
	// Limit 限制查询语句返回的记录数。
	// 调用Limit方法时,会将Limit设置为指定的值。
	// 比如:Limit(10), sql: Select * from user limit 10。
	Limit  *int
	Fields []FieldName
}

QueryContext 用于Query,包含了查询语句上下的信息, 比如Limit、Offset、Order等,用于生成查询语句。

func QueryFromContext

func QueryFromContext(ctx context.Context) *QueryContext

QueryFromContext 从context中获取QueryContext。

Params:

  • ctx: 上下文。

Returns:

0: QueryContext。

type QueryContextKey

type QueryContextKey struct{}

QueryContextKey 用于在context中存储QueryContext。

type QuerySpec

type QuerySpec struct {
	// Entity 表示实体的信息。
	Entity *EntitySpec
	// Scan 用于扫描返回的数据。
	Scan Scanner
	// Limit 限制查询语句返回的记录数。
	Limit int
	// Predicate 查询语句的条件,用于生成where子句。
	Predicate PredicateFunc
	// Rels 用于生成联表查询。
	Rels   []Relation
	Orders []OrderFunc
}

QuerySpec 包含了实体的查询的信息。 通过把Query中的信息转换为QuerySpec,把QuerySpec传给NewQuery发起查询, QuerySpec是把查询信息转为sql的中间件。

func NewQuerySpec

func NewQuerySpec(entity string, rows []FieldName) *QuerySpec

NewQuerySpec 创建一个QuerySpec。

Params:

  • entity:实体的名称。
  • rows:实体的字段。

Returns:

0: QuerySpec。

type Relation added in v0.5.0

type Relation func(*Selector)

Relation 用于生成联表查询。

type RelationDesc added in v0.5.0

type RelationDesc struct {
	Orders     []OrderFunc
	Predicates []PredicateFunc
	To         RelationTable
	Join       RelationTable
}

func (*RelationDesc) Reset added in v0.5.0

func (r *RelationDesc) Reset()

type RelationTable added in v0.5.0

type RelationTable struct {
	Table   string
	Field   string
	Columns []FieldName
}

type Scanner

type Scanner func(row dialect.Rows, selects []ScannerField) error

Scanner 用于扫描返回的数据。

type ScannerBuilder added in v0.5.0

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

func NewScannerBuilder added in v0.5.0

func NewScannerBuilder(length int) *ScannerBuilder

func (*ScannerBuilder) Append added in v0.5.0

func (s *ScannerBuilder) Append(index int, args ...any)

func (*ScannerBuilder) Args added in v0.5.0

func (s *ScannerBuilder) Args() [][]any

func (*ScannerBuilder) Flatten added in v0.5.0

func (s *ScannerBuilder) Flatten() []any

type ScannerField added in v0.5.0

type ScannerField interface {
	String() string
}

type SelectTable added in v0.5.0

type SelectTable struct {
	*Builder
	// contains filtered or unexported fields
}

func AddRelBySelector added in v0.5.0

func AddRelBySelector(s *Selector, t *SelectTable, desc RelationDesc) *SelectTable

func Table added in v0.5.0

func Table(name string) *SelectTable

Table 创建一个表。

func (*SelectTable) As added in v0.5.0

func (s *SelectTable) As(alias string) *SelectTable

As 设置别名。

func (*SelectTable) C added in v0.5.0

func (s *SelectTable) C(column string) string

C 返回序列化的列名。

func (*SelectTable) Columns added in v0.5.0

func (s *SelectTable) Columns(columns ...string) []string

Columns 返回一个序列号后的列名列表。

func (*SelectTable) GetAs added in v0.5.0

func (s *SelectTable) GetAs() (string, int)

func (*SelectTable) Schema added in v0.5.0

func (s *SelectTable) Schema(name string) *SelectTable

Schema 设置模式名称。

func (*SelectTable) Unquote added in v0.5.0

func (s *SelectTable) Unquote() *SelectTable

Unquote 使表名格式化为原始字符串(无引号)。 当不想查询当前数据库下的表时,它非常有用。 例如 在 MySQL 中为 "INFORMATION_SCHEMA.TABLE_CONSTRAINTS"。

type Selection

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

Selection 选择的字段。

func (Selection) String added in v0.5.0

func (s Selection) String() string

type Selector

type Selector struct {
	*Builder
	// contains filtered or unexported fields
}

选择语句生成器

func (*Selector) AppendFrom added in v0.5.0

func (s *Selector) AppendFrom(t TableView) *Selector

AppendFrom appends a new TableView to the `FROM` clause.

func (*Selector) C added in v0.5.0

func (s *Selector) C(column string) string

func (*Selector) Clone added in v0.5.0

func (s *Selector) Clone() *Selector

func (*Selector) LeftJoin added in v0.5.0

func (s *Selector) LeftJoin(t TableView) *Selector

func (*Selector) On added in v0.5.0

func (s *Selector) On(c1, c2 string) *Selector

On sets the `ON` clause for the `JOIN` operation.

func (*Selector) OnP added in v0.5.0

func (s *Selector) OnP(p *Predicate) *Selector

func (*Selector) Query

func (s *Selector) Query() (SqlSpec, error)

Query 生成一个查询语句。

Returns:

0: 查询语句。
1: 查询参数。

func (*Selector) Rows

func (s *Selector) Rows(rows ...FieldSpec) []FieldSpec

Rows 返回字段的名称。

Params:

  • rows: 字段的名称。

Returns:

0: 字段的名称。

func (*Selector) SetContext

func (s *Selector) SetContext(ctx context.Context) *Selector

SetContext 设置上下文。

Params:

  • ctx: 上下文。

Returns:

0: 选择语句生成器。

func (*Selector) SetDialect

func (s *Selector) SetDialect(dialect dialect.DbDriver) *Selector

SetDialect

Params:

  • dialect: 数据库方言。

Returns:

0: 选择语句生成器。

func (*Selector) SetFrom

func (s *Selector) SetFrom(t TableView) *Selector

SetFrom 设置查询的表。

Params:

  • from: 表名。

Returns:

0: 选择语句生成器。

func (*Selector) SetLimit

func (s *Selector) SetLimit(limit int) *Selector

SetLimit 设置查询的限制。

Params:

  • limit: 限制条数。

Returns:

0: 选择语句生成器。

func (*Selector) SetOrder added in v0.5.0

func (s *Selector) SetOrder(order *Order) *Selector

func (*Selector) SetSelect

func (s *Selector) SetSelect(entity string, rows ...FieldSpec) *Selector

SetSelect 设置选择的字段。

Params:

  • entity: 实体表的名称。
  • rows: 字段的名称。

Returns:

0: 选择语句生成器。

func (*Selector) Table added in v0.5.0

func (s *Selector) Table() *SelectTable

type SqlSpec added in v0.5.0

type SqlSpec struct {
	Query string
	Args  []any
}

SqlSpec sql语句信息。

type StmtInfo

type StmtInfo struct {
	// Dialect 数据库驱动
	Dialect dialect.DbDriver
}

StmtInfo 保存SQL语句或数据库连接的上下文信息

type TableView added in v0.5.0

type TableView interface {

	// C 返回序列化的列名。
	C(string) string
	// contains filtered or unexported methods
}

type UpdateSpec

type UpdateSpec struct {
	Entity *EntitySpec
	Scan   Scanner
	// Sets 更新中Set部分,根据不同的列设置不同的值。
	Sets []map[string][]CaseSpec
	// Predicate 更新中Where部分,根据不同的行设置不同的条件。
	Predicate []PredicateFunc
}

UpdateSpec 用于生成更新语句。

func NewUpdateSpec

func NewUpdateSpec(entity string, rows []FieldName) *UpdateSpec

NewUpdateSpec 创建一个UpdateSpec。

type Updater

type Updater struct {
	*Builder
	// contains filtered or unexported fields
}

Updater 更新语句生成器。

func NewUpdater added in v0.5.0

func NewUpdater(ctx context.Context) *Updater

NewUpdater 创建一个更新语句生成器。

Params:

  • ctx: 上下文。

Returns:

0: 更新语句生成器。

func (*Updater) AddBatch added in v0.5.0

func (u *Updater) AddBatch() *Updater

AddBatch 添加一个批量更新。

Returns:

0: 更新语句生成器。

func (*Updater) Query

func (u *Updater) Query() ([]SqlSpec, error)

Query 生成更新语句。

Returns:

0: 更新语句。
1: 错误信息。

func (*Updater) Set

func (u *Updater) Set(row int, column string, cs []CaseSpec) *Updater

Set 设置更新的值。

Params:

  • row: 行数。
  • column: 列名。
  • cs: 更新的值。

Returns:

0: 更新语句生成器。

func (*Updater) SetDialect

func (u *Updater) SetDialect(dialect dialect.DbDriver) *Updater

SetDialect 设置数据库方言。

Params:

  • dialect: 数据库方言。

Returns:

0: 更新语句生成器。

func (*Updater) SetEntity

func (u *Updater) SetEntity(entity string) *Updater

SetEntity 设置实体表的名称。

Params:

  • entity: 实体表的名称。

Returns:

0: 更新语句生成器。

Jump to

Keyboard shortcuts

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