Documentation ¶
Overview ¶
Package sql provides wrappers around the standard database/sql package to allow the generated code to interact with a statically-typed API.
Users that are interacting with this package should be aware that the following builders don't check the given SQL syntax nor validate or escape user-inputs. ~All validations are expected to be happened in the generated fluent package.
Index ¶
- func AndPredicates[P ~func(*Selector)](predicates ...P) func(*Selector)
- func As(ident string, as string) string
- func Asc(column string) string
- func Avg(ident string) string
- func Count(ident string) string
- func Desc(column string) string
- func Distinct(idents ...string) string
- func FieldContains(name string, substr string) func(*Selector)
- func FieldContainsFold(name string, substr string) func(*Selector)
- func FieldEQ(name string, v any) func(*Selector)
- func FieldEqualFold(name string, substr string) func(*Selector)
- func FieldGT(name string, v any) func(*Selector)
- func FieldGTE(name string, v any) func(*Selector)
- func FieldHasPrefix(name string, prefix string) func(*Selector)
- func FieldHasPrefixFold(name string, prefix string) func(*Selector)
- func FieldHasSuffix(name string, suffix string) func(*Selector)
- func FieldHasSuffixFold(name string, suffix string) func(*Selector)
- func FieldIn[T any](name string, vs ...T) func(*Selector)
- func FieldIsNull(name string) func(*Selector)
- func FieldLT(name string, v any) func(*Selector)
- func FieldLTE(name string, v any) func(*Selector)
- func FieldNEQ(name string, v any) func(*Selector)
- func FieldNotIn[T any](name string, vs ...T) func(*Selector)
- func FieldNotNull(name string) func(*Selector)
- func FieldsEQ(field1, field2 string) func(*Selector)
- func FieldsGT(field1, field2 string) func(*Selector)
- func FieldsGTE(field1, field2 string) func(*Selector)
- func FieldsHasPrefix(field1, field2 string) func(*Selector)
- func FieldsLT(field1, field2 string) func(*Selector)
- func FieldsLTE(field1, field2 string) func(*Selector)
- func FieldsNEQ(field1, field2 string) func(*Selector)
- func Lower(ident string) string
- func Max(ident string) string
- func Min(ident string) string
- func NotPredicates[P ~func(*Selector)](predicates ...P) func(*Selector)
- func OrPredicates[P ~func(*Selector)](predicates ...P) func(*Selector)
- func OrderByRand() func(*Selector)
- func ScanBool(rows ColumnScanner) (bool, error)
- func ScanInt(rows ColumnScanner) (int, error)
- func ScanInt64(rows ColumnScanner) (int64, error)
- func ScanOne(rows ColumnScanner, v any) error
- func ScanSlice(rows ColumnScanner, v any) error
- func ScanString(rows ColumnScanner) (string, error)
- func ScanTypeOf(rows *Rows, i int) any
- func ScanValue(rows ColumnScanner) (driver.Value, error)
- func Sum(ident string) string
- func WithIntVar(ctx context.Context, name string, value int) context.Context
- func WithVar(ctx context.Context, name, value string) context.Context
- type Builder
- func (b *Builder) AddError(err error) *Builder
- func (b *Builder) Arg(a any) *Builder
- func (b *Builder) Argf(format string, a any) *Builder
- func (b *Builder) Args(a ...any) *Builder
- func (b *Builder) Comma() *Builder
- func (b Builder) Dialect() string
- func (b *Builder) Err() error
- func (b *Builder) Ident(s string) *Builder
- func (b *Builder) IdentComma(s ...string) *Builder
- func (b *Builder) Join(qs ...Querier) *Builder
- func (b *Builder) JoinComma(qs ...Querier) *Builder
- func (b *Builder) Len() int
- func (b *Builder) Nested(f func(*Builder)) *Builderdeprecated
- func (b *Builder) Pad() *Builder
- func (b Builder) Query() (string, []any)
- func (b *Builder) Quote(ident string) string
- func (b *Builder) Reset() *Builder
- func (b *Builder) S(s string) *Builder
- func (b *Builder) SetDialect(dialect string)
- func (b *Builder) SetTotal(total int)
- func (b *Builder) String() string
- func (b Builder) Total() int
- func (b *Builder) Wrap(f func(*Builder)) *Builder
- func (b *Builder) WriteByte(c byte) *Builder
- func (b *Builder) WriteOp(op Op) *Builder
- func (b *Builder) WriteString(s string) *Builder
- type ColumnBuilder
- type ColumnCheck
- type ColumnScanner
- type ConflictOption
- func ConflictColumns(names ...string) ConflictOption
- func ConflictConstraint(name string) ConflictOption
- func ConflictWhere(p *Predicate) ConflictOption
- func DoNothing() ConflictOption
- func ResolveWith(fn func(*UpdateSet)) ConflictOption
- func ResolveWithIgnore() ConflictOption
- func ResolveWithNewValues() ConflictOption
- func UpdateWhere(p *Predicate) ConflictOption
- type Conn
- type DeleteBuilder
- type DescribeBuilder
- type DialectBuilder
- func (d *DialectBuilder) AlterIndex(name string) *IndexAlter
- func (d *DialectBuilder) AlterTable(name string) *TableAlter
- func (d *DialectBuilder) Column(name string) *ColumnBuilder
- func (d *DialectBuilder) CreateIndex(name string) *IndexBuilder
- func (d *DialectBuilder) CreateTable(name string) *TableBuilder
- func (d *DialectBuilder) Delete(table string) *DeleteBuilder
- func (d *DialectBuilder) Describe(name string) *DescribeBuilder
- func (d *DialectBuilder) DropIndex(name string) *DropIndexBuilder
- func (d *DialectBuilder) Expr(f func(*Builder)) Querier
- func (d *DialectBuilder) Insert(table string) *InsertBuilder
- func (d *DialectBuilder) Select(columns ...string) *Selector
- func (d *DialectBuilder) SelectExpr(exprs ...Querier) *Selector
- func (d *DialectBuilder) String(f func(*Builder)) string
- func (d *DialectBuilder) Table(name string) *SelectTable
- func (d *DialectBuilder) Update(table string) *UpdateBuilder
- func (d *DialectBuilder) With(name string) *WithBuilder
- type Driver
- type DropIndexBuilder
- type ExecQuerier
- type ForeignKeyBuilder
- func (fk *ForeignKeyBuilder) Columns(s ...string) *ForeignKeyBuilder
- func (fk *ForeignKeyBuilder) OnDelete(action string) *ForeignKeyBuilder
- func (fk *ForeignKeyBuilder) OnUpdate(action string) *ForeignKeyBuilder
- func (fk *ForeignKeyBuilder) Query() (string, []any)
- func (fk *ForeignKeyBuilder) Reference(r *ReferenceBuilder) *ForeignKeyBuilder
- func (fk *ForeignKeyBuilder) Symbol(s string) *ForeignKeyBuilder
- type Func
- type IndexAlter
- type IndexBuilder
- func (i *IndexBuilder) Column(column string) *IndexBuilder
- func (i *IndexBuilder) Columns(columns ...string) *IndexBuilder
- func (i *IndexBuilder) IfNotExists() *IndexBuilder
- func (i *IndexBuilder) Query() (string, []any)
- func (i *IndexBuilder) Table(table string) *IndexBuilder
- func (i *IndexBuilder) Unique() *IndexBuilder
- func (i *IndexBuilder) Using(method string) *IndexBuilder
- type InsertBuilder
- func (i *InsertBuilder) Columns(columns ...string) *InsertBuilder
- func (i *InsertBuilder) Default() *InsertBuilder
- func (i *InsertBuilder) OnConflict(opts ...ConflictOption) *InsertBuilder
- func (i *InsertBuilder) Query() (string, []any)
- func (i *InsertBuilder) QueryErr() (string, []any, error)
- func (i *InsertBuilder) Returning(columns ...string) *InsertBuilder
- func (i *InsertBuilder) Schema(name string) *InsertBuilder
- func (i *InsertBuilder) Set(column string, v any) *InsertBuilder
- func (i *InsertBuilder) Values(values ...any) *InsertBuilder
- type LockAction
- type LockOption
- type LockOptions
- type LockStrength
- type NullBool
- type NullFloat64
- type NullInt64
- type NullScanner
- type NullString
- type NullTime
- type Op
- type OrderExprTerm
- type OrderFieldTerm
- type OrderTerm
- type OrderTermOption
- type OrderTermOptions
- type ParamFormatter
- type Predicate
- func And(preds ...*Predicate) *Predicate
- func ColumnsEQ(col1, col2 string) *Predicate
- func ColumnsGT(col1, col2 string) *Predicate
- func ColumnsGTE(col1, col2 string) *Predicate
- func ColumnsHasPrefix(col, prefixC string) *Predicate
- func ColumnsLT(col1, col2 string) *Predicate
- func ColumnsLTE(col1, col2 string) *Predicate
- func ColumnsNEQ(col1, col2 string) *Predicate
- func ColumnsOp(col1, col2 string, op Op) *Predicate
- func CompositeGT(columns []string, args ...any) *Predicate
- func CompositeLT(columns []string, args ...any) *Predicate
- func Contains(col, sub string) *Predicate
- func ContainsFold(col, sub string) *Predicate
- func EQ(col string, value any) *Predicate
- func EqualFold(col, sub string) *Predicate
- func Exists(query Querier) *Predicate
- func ExprP(exr string, args ...any) *Predicate
- func False() *Predicate
- func GT(col string, value any) *Predicate
- func GTE(col string, value any) *Predicate
- func HasPrefix(col, prefix string) *Predicate
- func HasPrefixFold(col, prefix string) *Predicate
- func HasSuffix(col, suffix string) *Predicate
- func HasSuffixFold(col, suffix string) *Predicate
- func In(col string, args ...any) *Predicate
- func InInts(col string, args ...int) *Predicate
- func InValues(col string, args ...driver.Value) *Predicate
- func IsFalse(col string) *Predicate
- func IsNull(col string) *Predicate
- func IsTrue(col string) *Predicate
- func LT(col string, value any) *Predicate
- func LTE(col string, value any) *Predicate
- func Like(col, pattern string) *Predicate
- func NEQ(col string, value any) *Predicate
- func Not(pred *Predicate) *Predicate
- func NotExists(query Querier) *Predicate
- func NotIn(col string, args ...any) *Predicate
- func NotNull(col string) *Predicate
- func Or(preds ...*Predicate) *Predicate
- func P(fns ...func(*Builder)) *Predicate
- func (p *Predicate) Append(f func(*Builder)) *Predicate
- func (p *Predicate) ColumnsEQ(col1, col2 string) *Predicate
- func (p *Predicate) ColumnsGT(col1, col2 string) *Predicate
- func (p *Predicate) ColumnsGTE(col1, col2 string) *Predicate
- func (p *Predicate) ColumnsHasPrefix(col, prefixC string) *Predicate
- func (p *Predicate) ColumnsLT(col1, col2 string) *Predicate
- func (p *Predicate) ColumnsLTE(col1, col2 string) *Predicate
- func (p *Predicate) ColumnsNEQ(col1, col2 string) *Predicate
- func (p *Predicate) ColumnsOp(col1, col2 string, op Op) *Predicate
- func (p *Predicate) CompositeGT(columns []string, args ...any) *Predicate
- func (p *Predicate) CompositeLT(columns []string, args ...any) *Predicate
- func (p *Predicate) Contains(col, substr string) *Predicate
- func (p *Predicate) ContainsFold(col, substr string) *Predicate
- func (p *Predicate) EQ(col string, arg any) *Predicate
- func (p *Predicate) EqualFold(col, sub string) *Predicate
- func (p *Predicate) Exists(query Querier) *Predicate
- func (p *Predicate) False() *Predicate
- func (p *Predicate) GT(col string, arg any) *Predicate
- func (p *Predicate) GTE(col string, arg any) *Predicate
- func (p *Predicate) HasPrefix(col, prefix string) *Predicate
- func (p *Predicate) HasPrefixFold(col, prefix string) *Predicate
- func (p *Predicate) HasSuffix(col, suffix string) *Predicate
- func (p *Predicate) HasSuffixFold(col, suffix string) *Predicate
- func (p *Predicate) In(col string, args ...any) *Predicate
- func (p *Predicate) InInts(col string, args ...int) *Predicate
- func (p *Predicate) InValues(col string, args ...driver.Value) *Predicate
- func (p *Predicate) IsFalse(col string) *Predicate
- func (p *Predicate) IsNull(col string) *Predicate
- func (p *Predicate) IsTrue(col string) *Predicate
- func (p *Predicate) LT(col string, arg any) *Predicate
- func (p *Predicate) LTE(col string, arg any) *Predicate
- func (p *Predicate) Like(col, pattern string) *Predicate
- func (p *Predicate) NEQ(col string, arg any) *Predicate
- func (p *Predicate) Not() *Predicate
- func (p *Predicate) NotExists(query Querier) *Predicate
- func (p *Predicate) NotIn(col string, args ...any) *Predicate
- func (p *Predicate) NotNull(col string) *Predicate
- func (p *Predicate) Query() (string, []any)
- type Querier
- type Queries
- type ReferenceBuilder
- type Result
- type Rows
- type SelectTable
- type SelectValues
- type Selector
- func (s *Selector) AppendFrom(t TableView) *Selector
- func (s *Selector) AppendFromExpr(x Querier) *Selector
- func (s *Selector) AppendSelect(columns ...string) *Selector
- func (s *Selector) AppendSelectAs(column, as string) *Selector
- func (s *Selector) AppendSelectExpr(exprs ...Querier) *Selector
- func (s *Selector) AppendSelectExprAs(expr Querier, as string) *Selector
- func (s *Selector) As(alias string) *Selector
- func (s *Selector) C(column string) string
- func (s *Selector) ClearOrder() *Selector
- func (s *Selector) Clone() *Selector
- func (s *Selector) CollectPredicates() *Selector
- func (s *Selector) CollectedPredicates() []*Predicate
- func (s *Selector) Columns(columns ...string) []string
- func (s *Selector) Context() context.Context
- func (s *Selector) Count(columns ...string) *Selector
- func (s *Selector) Distinct() *Selector
- func (s *Selector) Except(t TableView) *Selector
- func (s *Selector) ExceptAll(t TableView) *Selector
- func (s *Selector) FindSelection(name string) (matches []string)
- func (s *Selector) For(l LockStrength, opts ...LockOption) *Selector
- func (s *Selector) ForShare(opts ...LockOption) *Selector
- func (s *Selector) ForUpdate(opts ...LockOption) *Selector
- func (s *Selector) From(t TableView) *Selector
- func (s *Selector) FromExpr(x Querier) *Selector
- func (s *Selector) FromSelect(s2 *Selector) *Selector
- func (s *Selector) FullJoin(t TableView) *Selector
- func (s *Selector) GroupBy(columns ...string) *Selector
- func (s *Selector) HasJoins() bool
- func (s *Selector) Having(p *Predicate) *Selector
- func (s *Selector) Intersect(t TableView) *Selector
- func (s *Selector) IntersectAll(t TableView) *Selector
- func (s *Selector) Join(t TableView) *Selector
- func (s *Selector) JoinedTable(name string) (*SelectTable, bool)
- func (s *Selector) JoinedTableView(name string) (TableView, bool)
- func (s *Selector) LeftJoin(t TableView) *Selector
- func (s *Selector) Limit(limit int) *Selector
- func (s *Selector) New() *Selector
- func (s *Selector) Not() *Selector
- func (s *Selector) Offset(offset int) *Selector
- func (s *Selector) On(c1, c2 string) *Selector
- func (s *Selector) OnP(p *Predicate) *Selector
- func (s *Selector) Or() *Selector
- func (s *Selector) OrderBy(columns ...string) *Selector
- func (s *Selector) OrderColumns() []string
- func (s *Selector) OrderExpr(exprs ...Querier) *Selector
- func (s *Selector) OrderExprFunc(f func(*Builder)) *Selector
- func (s *Selector) P() *Predicate
- func (s *Selector) Prefix(queries ...Querier) *Selector
- func (s *Selector) Query() (string, []any)
- func (s *Selector) RightJoin(t TableView) *Selector
- func (s *Selector) Select(columns ...string) *Selector
- func (s *Selector) SelectDistinct(columns ...string) *Selector
- func (s *Selector) SelectExpr(exprs ...Querier) *Selector
- func (s *Selector) SelectedColumns() []string
- func (s *Selector) SetDistinct(v bool) *Selector
- func (s *Selector) SetP(p *Predicate) *Selector
- func (s *Selector) Table() *SelectTable
- func (s *Selector) TableName() string
- func (s *Selector) UncollectedPredicates() *Selector
- func (s *Selector) Union(t TableView) *Selector
- func (s *Selector) UnionAll(t TableView) *Selector
- func (s *Selector) UnionDistinct(t TableView) *Selector
- func (s *Selector) UnqualifiedColumns() []string
- func (s *Selector) Where(p *Predicate) *Selector
- func (s *Selector) WithContext(ctx context.Context) *Selector
- type StmtInfo
- type TableAlter
- func (t *TableAlter) AddColumn(c *ColumnBuilder) *TableAlter
- func (t *TableAlter) AddForeignKey(fk *ForeignKeyBuilder) *TableAlter
- func (t *TableAlter) AddIndex(idx *IndexBuilder) *TableAlter
- func (t *TableAlter) ChangeColumn(name string, c *ColumnBuilder) *TableAlter
- func (t *TableAlter) DropColumn(c *ColumnBuilder) *TableAlter
- func (t *TableAlter) DropConstraint(ident string) *TableAlter
- func (t *TableAlter) DropForeignKey(ident string) *TableAlter
- func (t *TableAlter) DropIndex(name string) *TableAlter
- func (t *TableAlter) ModifyColumn(c *ColumnBuilder) *TableAlter
- func (t *TableAlter) ModifyColumns(cs ...*ColumnBuilder) *TableAlter
- func (t *TableAlter) Query() (string, []any)
- func (t *TableAlter) RenameColumn(old, new string) *TableAlter
- func (t *TableAlter) RenameIndex(curr, new string) *TableAlter
- type TableBuilder
- func (t *TableBuilder) Charset(s string) *TableBuilder
- func (t *TableBuilder) Checks(checks ...func(*Builder)) *TableBuilder
- func (t *TableBuilder) Collate(s string) *TableBuilder
- func (t *TableBuilder) Column(c *ColumnBuilder) *TableBuilder
- func (t *TableBuilder) Columns(columns ...*ColumnBuilder) *TableBuilder
- func (t *TableBuilder) Constraints(fks ...*ForeignKeyBuilder) *TableBuilder
- func (t *TableBuilder) ForeignKeys(fks ...*ForeignKeyBuilder) *TableBuilder
- func (t *TableBuilder) IfNotExists() *TableBuilder
- func (t *TableBuilder) Options(s string) *TableBuilder
- func (t *TableBuilder) PrimaryKey(column ...string) *TableBuilder
- func (t *TableBuilder) Query() (string, []any)
- type TableView
- type Tx
- type TxOptions
- type UnknownType
- type UpdateBuilder
- func (u *UpdateBuilder) Add(column string, v any) *UpdateBuilder
- func (u *UpdateBuilder) Empty() bool
- func (u *UpdateBuilder) FromSelect(s *Selector) *UpdateBuilder
- func (u *UpdateBuilder) Limit(limit int) *UpdateBuilder
- func (u *UpdateBuilder) OrderBy(columns ...string) *UpdateBuilder
- func (u *UpdateBuilder) Prefix(stmts ...Querier) *UpdateBuilder
- func (u *UpdateBuilder) Query() (string, []any)
- func (u *UpdateBuilder) Returning(columns ...string) *UpdateBuilder
- func (u *UpdateBuilder) Schema(name string) *UpdateBuilder
- func (u *UpdateBuilder) Set(column string, v any) *UpdateBuilder
- func (u *UpdateBuilder) SetNull(column string) *UpdateBuilder
- func (u *UpdateBuilder) Where(p *Predicate) *UpdateBuilder
- type UpdateSet
- func (u *UpdateSet) Add(column string, v any) *UpdateSet
- func (u *UpdateSet) Columns() []string
- func (u *UpdateSet) Set(column string, v any) *UpdateSet
- func (u *UpdateSet) SetExcluded(name string) *UpdateSet
- func (u *UpdateSet) SetIgnore(name string) *UpdateSet
- func (u *UpdateSet) SetNull(column string) *UpdateSet
- func (u *UpdateSet) Table() *SelectTable
- func (u *UpdateSet) UpdateColumns() []string
- type WindowBuilder
- func (w *WindowBuilder) OrderBy(columns ...string) *WindowBuilder
- func (w *WindowBuilder) OrderExpr(exprs ...Querier) *WindowBuilder
- func (w *WindowBuilder) PartitionBy(columns ...string) *WindowBuilder
- func (w *WindowBuilder) PartitionExpr(x Querier) *WindowBuilder
- func (w *WindowBuilder) Query() (string, []any)
- type WithBuilder
- type Wrapper
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AndPredicates ¶
AndPredicates returns a new predicate for joining multiple generated predicates with AND between them.
func FieldContains ¶
FieldContains returns a raw predicate to check if the field contains the given substring.
func FieldContainsFold ¶
FieldContainsFold returns a raw predicate to check if the field contains the given substring with case-folding.
func FieldEQ ¶
FieldEQ returns a raw predicate to check if the given field equals to the given value.
func FieldEqualFold ¶
FieldEqualFold returns a raw predicate to check if the field has the given prefix with case-folding.
func FieldGT ¶
FieldGT returns a raw predicate to check if the given field is greater than the given value.
func FieldGTE ¶
FieldGTE returns a raw predicate to check if the given field is greater than or equal the given value.
func FieldHasPrefix ¶
FieldHasPrefix returns a raw predicate to check if the field has the given prefix.
func FieldHasPrefixFold ¶
FieldHasPrefixFold returns a raw predicate to check if the field has the given prefix with case-folding
func FieldHasSuffix ¶
FieldHasSuffix returns a raw predicate to check if the field has the given suffix.
func FieldHasSuffixFold ¶
FieldHasSuffixFold returns a raw predicate to check if the field has the given suffix with case-folding
func FieldIn ¶
FieldIn returns a raw predicate to check if the value of the field is IN the given values.
func FieldIsNull ¶
FieldIsNull returns a raw predicate to check if the given field is NULL.
func FieldLT ¶
FieldLT returns a raw predicate to check if the value of the field is less than the given value.
func FieldLTE ¶
FieldLTE returns a raw predicate to check if the value of the field is less than the given value.
func FieldNEQ ¶
FieldNEQ returns a raw predicate to check if the given field does not equal to the given value.
func FieldNotIn ¶
FieldNotIn returns a raw predicate to check if the value of the field is NOT IN the given values.
func FieldNotNull ¶
FieldNotNull returns a raw predicate to check if the given field is not NULL.
func FieldsGTE ¶
FieldsGTE returns a raw predicate to check if field1 is greater than or equal field2.
func FieldsHasPrefix ¶
FieldsHasPrefix returns a raw predicate to checks if field1 begins with the value of field2.
func FieldsLTE ¶
FieldsLTE returns a raw predicate to check if field1 is lower than or equal field2.
func FieldsNEQ ¶
FieldsNEQ returns a raw predicate to check if the given fields (columns) are not equal.
func NotPredicates ¶
NotPredicates wraps the generated predicates with NOT. For example, NOT(P), NOT((P1 AND P2)).
func OrPredicates ¶
OrPredicates returns a new predicate for joining multiple generated predicates with OR between them.
func OrderByRand ¶
func OrderByRand() func(*Selector)
OrderByRand returns a term to natively order by a random value.
func ScanBool ¶
func ScanBool(rows ColumnScanner) (bool, error)
ScanBool scans and returns a boolean from the rows.
func ScanInt ¶
func ScanInt(rows ColumnScanner) (int, error)
ScanInt scans and returns an int from the rows.
func ScanInt64 ¶
func ScanInt64(rows ColumnScanner) (int64, error)
ScanInt64 scans and returns an int64 from the rows.
func ScanOne ¶
func ScanOne(rows ColumnScanner, v any) error
ScanOne scans one row to the given value. It fails if the rows holds more than 1 row.
func ScanSlice ¶
func ScanSlice(rows ColumnScanner, v any) error
ScanSlice scans the given ColumnScanner (basically, sql.Row or sql.Rows) into the given slice.
func ScanString ¶
func ScanString(rows ColumnScanner) (string, error)
ScanString scans and returns a string from the rows.
func ScanTypeOf ¶
ScanTypeOf returns the type used for scanning column i from the database.
func ScanValue ¶
func ScanValue(rows ColumnScanner) (driver.Value, error)
ScanValue scans and returns a driver.Value from the rows.
func WithIntVar ¶
WithIntVar calls WithVar with the string representation of the value.
Types ¶
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
Builder is the base query builder for the sql dsl.
func (*Builder) Argf ¶
Argf appends an input argument to the builder with the given format. For example:
FormatArg("JSON(?)", b). FormatArg("ST_GeomFromText(?)", geom)
func (*Builder) Err ¶
Err returns a concatenated error of all errors encountered during the query-building, or were added manually by calling AddError.
func (*Builder) IdentComma ¶
IdentComma calls Ident on all arguments and adds a comma between them.
func (*Builder) Quote ¶
Quote quotes the given identifier with the characters based on the configured dialect. It defaults to "`".
func (*Builder) SetDialect ¶
SetDialect sets the builder dialect. It's used for garnering dialect specific queries.
func (*Builder) SetTotal ¶
SetTotal sets the value of the total arguments. Used to pass this information between sub queries/expressions.
func (*Builder) WriteByte ¶
WriteByte wraps the Buffer.WriteByte to make it chainable with other methods.
func (*Builder) WriteString ¶
WriteString wraps the Buffer.WriteString to make it chainable with other methods.
type ColumnBuilder ¶
type ColumnBuilder struct { Builder // contains filtered or unexported fields }
ColumnBuilder is a builder for column definition in table creation.
func Column ¶
func Column(name string) *ColumnBuilder
Column returns a new ColumnBuilder with the given name.
sql.Column("group_id").Type("int").Attr("UNIQUE")
func (*ColumnBuilder) Attr ¶
func (c *ColumnBuilder) Attr(attr string) *ColumnBuilder
Attr sets an extra attribute for the column, like UNIQUE or AUTO_INCREMENT.
func (*ColumnBuilder) Check ¶
func (c *ColumnBuilder) Check(check func(*Builder)) *ColumnBuilder
Check adds a CHECK clause to the ADD COLUMN statement.
func (*ColumnBuilder) Constraint ¶
func (c *ColumnBuilder) Constraint(fk *ForeignKeyBuilder) *ColumnBuilder
Constraint adds the CONSTRAINT clause to the ADD COLUMN statement in SQLite.
func (*ColumnBuilder) Query ¶
func (c *ColumnBuilder) Query() (string, []any)
Query returns query representation of a Column.
func (*ColumnBuilder) Type ¶
func (c *ColumnBuilder) Type(t string) *ColumnBuilder
Type sets the column type.
type ColumnCheck ¶
ColumnCheck is a function that verifies whether the specified column exists within the given table.
func NewColumnCheck ¶
func NewColumnCheck(checks map[string]func(string) bool) ColumnCheck
NewColumnCheck returns a function that verifies whether the specified column exists within the given table. This function is utilized by the generated code to validate column names in ordering functions.
type ColumnScanner ¶
type ColumnScanner interface { Close() error ColumnTypes() ([]*sql.ColumnType, error) Columns() ([]string, error) Err() error Next() bool NextResultSet() bool Scan(dest ...any) error }
ColumnScanner is the interface that wraps the standard sql.Rows methods used for scanning database rows.
type ConflictOption ¶
type ConflictOption func(*conflict)
ConflictOption allows configuring the conflict config using functional options.
func ConflictColumns ¶
func ConflictColumns(names ...string) ConflictOption
ConflictColumns sets the unique constraints that trigger the conflict resolution on insert to perform an upsert operation. The columns must have a unique constraint applied to trigger this behaviour.
sql.Insert("users"). Columns("id", "name"). Values(1, "Mashraki"). OnConflict( sql.ConflictColumns("id"), sql.ResolveWithNewValues(), )
func ConflictConstraint ¶
func ConflictConstraint(name string) ConflictOption
ConflictConstraint allows setting the constraint name (i.e. `ON CONSTRAINT <name>`) for PostgreSQL.
sql.Insert("users"). Columns("id", "name"). Values(1, "Mashraki"). OnConflict( sql.ConflictConstraint("users_pkey"), sql.ResolveWithNewValues(), )
func ConflictWhere ¶
func ConflictWhere(p *Predicate) ConflictOption
ConflictWhere allows inference of partial unique indexes. See, PostgreSQL doc: https://www.postgresql.org/docs/current/sql-insert.html#SQL-ON-CONFLICT
func DoNothing ¶
func DoNothing() ConflictOption
DoNothing configures the conflict_action to `DO NOTHING`. Supported by SQLite and PostgreSQL.
sql.Insert("users"). Columns("id", "name"). Values(1, "Mashraki"). OnConflict( sql.ConflictColumns("id"), sql.DoNothing() )
func ResolveWith ¶
func ResolveWith(fn func(*UpdateSet)) ConflictOption
ResolveWith allows setting a custom function to set the `UPDATE` clause.
Insert("users"). Columns("id", "name"). Values(1, "Mashraki"). OnConflict( ConflictColumns("name"), ResolveWith(func(u *UpdateSet) { u.SetIgnore("id") u.SetNull("created_at") u.Set("name", Expr(u.Excluded().C("name"))) }), )
func ResolveWithIgnore ¶
func ResolveWithIgnore() ConflictOption
ResolveWithIgnore sets each column to itself to force an update and return the ID, otherwise does not change any data. This may still trigger update hooks in the database.
sql.Insert("users"). Columns("id"). Values(1). OnConflict( sql.ConflictColumns("id"), sql.ResolveWithIgnore() ) // Output: // MySQL: INSERT INTO `users` (`id`) VALUES(1) ON DUPLICATE KEY UPDATE `id` = `users`.`id` // PostgreSQL: INSERT INTO "users" ("id") VALUES(1) ON CONFLICT ("id") DO UPDATE SET "id" = "users"."id
func ResolveWithNewValues ¶
func ResolveWithNewValues() ConflictOption
ResolveWithNewValues updates columns using the new values proposed for insertion using the special EXCLUDED/VALUES table.
sql.Insert("users"). Columns("id", "name"). Values(1, "Mashraki"). OnConflict( sql.ConflictColumns("id"), sql.ResolveWithNewValues() ) // Output: // MySQL: INSERT INTO `users` (`id`, `name`) VALUES(1, 'Mashraki) ON DUPLICATE KEY UPDATE `id` = VALUES(`id`), `name` = VALUES(`name`), // PostgreSQL: INSERT INTO "users" ("id") VALUES(1) ON CONFLICT ("id") DO UPDATE SET "id" = "excluded"."id, "name" = "excluded"."name"
func UpdateWhere ¶
func UpdateWhere(p *Predicate) ConflictOption
UpdateWhere allows setting the update condition. Only rows for which this expression returns true will be updated.
type Conn ¶
type Conn struct {
ExecQuerier
}
Conn implements dialect.ExecQuerier given ExecQuerier.
type DeleteBuilder ¶
type DeleteBuilder struct { Builder // contains filtered or unexported fields }
DeleteBuilder is a builder for `DELETE` statement.
func Delete ¶
func Delete(table string) *DeleteBuilder
Delete creates a builder for the `DELETE` statement.
Delete("users"). Where( Or( EQ("name", "foo").And().EQ("age", 10), EQ("name", "bar").And().EQ("age", 20), And( EQ("name", "qux"), EQ("age", 1).Or().EQ("age", 2), ), ), )
func (*DeleteBuilder) FromSelect ¶
func (d *DeleteBuilder) FromSelect(s *Selector) *DeleteBuilder
FromSelect makes it possible to delete a sub query.
func (*DeleteBuilder) Query ¶
func (d *DeleteBuilder) Query() (string, []any)
Query returns query representation of a `DELETE` statement.
func (*DeleteBuilder) Schema ¶
func (d *DeleteBuilder) Schema(name string) *DeleteBuilder
Schema sets the database name for the table whose row will be deleted.
func (*DeleteBuilder) Where ¶
func (d *DeleteBuilder) Where(p *Predicate) *DeleteBuilder
Where appends a where predicate to the `DELETE` statement.
type DescribeBuilder ¶
type DescribeBuilder struct { Builder // contains filtered or unexported fields }
DescribeBuilder is a query builder for `DESCRIBE` statement.
func Describe ¶
func Describe(name string) *DescribeBuilder
Describe returns a query builder for the `DESCRIBE` statement.
Describe("users")
func (*DescribeBuilder) Query ¶
func (t *DescribeBuilder) Query() (string, []any)
Query returns query representation of a `DESCRIBE` statement.
type DialectBuilder ¶
type DialectBuilder struct {
// contains filtered or unexported fields
}
DialectBuilder prefixes all root builders with the `Dialect` constructor.
func Dialect ¶
func Dialect(name string) *DialectBuilder
Dialect creates a new DialectBuilder with the given dialect name.
func (*DialectBuilder) AlterIndex ¶
func (d *DialectBuilder) AlterIndex(name string) *IndexAlter
AlterIndex creates an IndexAlter for the configured dialect.
Dialect(dialect.Postgres). AlterIndex("old"). Rename("new")
func (*DialectBuilder) AlterTable ¶
func (d *DialectBuilder) AlterTable(name string) *TableAlter
AlterTable creates a TableAlter for the configured dialect.
Dialect(dialect.Postgres). AlterTable("users"). AddColumn(Column("group_id").Type("int").Attr("UNIQUE")). AddForeignKey(ForeignKey().Columns("group_id"). Reference(Reference().Table("groups").Columns("id")). OnDelete("CASCADE"), )
func (*DialectBuilder) Column ¶
func (d *DialectBuilder) Column(name string) *ColumnBuilder
Column creates a ColumnBuilder for the configured dialect.
Dialect(dialect.Postgres).. Column("group_id").Type("int").Attr("UNIQUE")
func (*DialectBuilder) CreateIndex ¶
func (d *DialectBuilder) CreateIndex(name string) *IndexBuilder
CreateIndex creates a IndexBuilder for the configured dialect.
Dialect(dialect.Postgres). CreateIndex("unique_name"). Unique(). Table("users"). Columns("first", "last")
func (*DialectBuilder) CreateTable ¶
func (d *DialectBuilder) CreateTable(name string) *TableBuilder
CreateTable creates a TableBuilder for the configured dialect.
Dialect(dialect.Postgres). CreateTable("users"). Columns( Column("id").Type("int").Attr("auto_increment"), Column("name").Type("varchar(255)"), ). PrimaryKey("id")
func (*DialectBuilder) Delete ¶
func (d *DialectBuilder) Delete(table string) *DeleteBuilder
Delete creates a DeleteBuilder for the configured dialect.
Dialect(dialect.Postgres). Delete().From("users")
func (*DialectBuilder) Describe ¶
func (d *DialectBuilder) Describe(name string) *DescribeBuilder
Describe creates a DescribeBuilder for the configured dialect.
Dialect(dialect.Postgres). Describe("users")
func (*DialectBuilder) DropIndex ¶
func (d *DialectBuilder) DropIndex(name string) *DropIndexBuilder
DropIndex creates a DropIndexBuilder for the configured dialect.
Dialect(dialect.Postgres). DropIndex("name")
func (*DialectBuilder) Expr ¶
func (d *DialectBuilder) Expr(f func(*Builder)) Querier
Expr builds a dialect-aware expression from the given callback.
func (*DialectBuilder) Insert ¶
func (d *DialectBuilder) Insert(table string) *InsertBuilder
Insert creates a InsertBuilder for the configured dialect.
Dialect(dialect.Postgres). Insert("users").Columns("age").Values(1)
func (*DialectBuilder) Select ¶
func (d *DialectBuilder) Select(columns ...string) *Selector
Select creates a Selector for the configured dialect.
Dialect(dialect.Postgres). Select().From(Table("users"))
func (*DialectBuilder) SelectExpr ¶
func (d *DialectBuilder) SelectExpr(exprs ...Querier) *Selector
SelectExpr is like Select, but supports passing arbitrary expressions for SELECT clause.
Dialect(dialect.Postgres). SelectExpr(expr...). From(Table("users"))
func (*DialectBuilder) String ¶
func (d *DialectBuilder) String(f func(*Builder)) string
String builds a dialect-aware expression string from the given callback.
func (*DialectBuilder) Table ¶
func (d *DialectBuilder) Table(name string) *SelectTable
Table creates a SelectTable for the configured dialect.
Dialect(dialect.Postgres). Table("users").As("u")
func (*DialectBuilder) Update ¶
func (d *DialectBuilder) Update(table string) *UpdateBuilder
Update creates a UpdateBuilder for the configured dialect.
Dialect(dialect.Postgres). Update("users").Set("name", "foo")
func (*DialectBuilder) With ¶
func (d *DialectBuilder) With(name string) *WithBuilder
With creates a WithBuilder for the configured dialect.
Dialect(dialect.Postgres). With("users_view"). As(Select().From(Table("users")))
type Driver ¶
type Driver struct { Conn // contains filtered or unexported fields }
Driver is a dialect.Driver implementation for SQL based databases.
func Open ¶
Open wraps the database/sql.Open method and returns a dialect.Driver that implements the an fluent/dialect.Driver interface.
type DropIndexBuilder ¶
type DropIndexBuilder struct { Builder // contains filtered or unexported fields }
DropIndexBuilder is a builder for `DROP INDEX` statement.
func DropIndex ¶
func DropIndex(name string) *DropIndexBuilder
DropIndex creates a builder for the `DROP INDEX` statement.
MySQL: DropIndex("index_name"). Table("users"). SQLite/PostgreSQL: DropIndex("index_name")
func (*DropIndexBuilder) Query ¶
func (d *DropIndexBuilder) Query() (string, []any)
Query returns query representation of a reference clause.
DROP INDEX index_name [ON table_name]
func (*DropIndexBuilder) Table ¶
func (d *DropIndexBuilder) Table(table string) *DropIndexBuilder
Table defines the table for the index.
type ExecQuerier ¶
type ExecQuerier interface { ExecContext(ctx context.Context, query string, args ...any) (sql.Result, error) QueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error) }
ExecQuerier wraps the standard Exec and Query methods.
type ForeignKeyBuilder ¶
type ForeignKeyBuilder struct { Builder // contains filtered or unexported fields }
ForeignKeyBuilder is the builder for the foreign-key constraint clause.
func ForeignKey ¶
func ForeignKey(symbol ...string) *ForeignKeyBuilder
ForeignKey returns a builder for the foreign-key constraint clause in create/alter table statements.
ForeignKey(). Columns("group_id"). Reference(Reference().Table("groups").Columns("id")). OnDelete("CASCADE")
func (*ForeignKeyBuilder) Columns ¶
func (fk *ForeignKeyBuilder) Columns(s ...string) *ForeignKeyBuilder
Columns sets the columns of the foreign key in the source table.
func (*ForeignKeyBuilder) OnDelete ¶
func (fk *ForeignKeyBuilder) OnDelete(action string) *ForeignKeyBuilder
OnDelete sets the on delete action for this constraint.
func (*ForeignKeyBuilder) OnUpdate ¶
func (fk *ForeignKeyBuilder) OnUpdate(action string) *ForeignKeyBuilder
OnUpdate sets the on delete action for this constraint.
func (*ForeignKeyBuilder) Query ¶
func (fk *ForeignKeyBuilder) Query() (string, []any)
Query returns query representation of a foreign key constraint.
func (*ForeignKeyBuilder) Reference ¶
func (fk *ForeignKeyBuilder) Reference(r *ReferenceBuilder) *ForeignKeyBuilder
Reference sets the reference clause.
func (*ForeignKeyBuilder) Symbol ¶
func (fk *ForeignKeyBuilder) Symbol(s string) *ForeignKeyBuilder
Symbol sets the symbol of the foreign key.
type Func ¶
type Func struct { Builder // contains filtered or unexported fields }
Func represents an SQL function.
func (*Func) Append ¶
Append appends a new function to the function callbacks. The callback list are executed on call to String.
type IndexAlter ¶
type IndexAlter struct { Builder Queries []Querier // alter options. // contains filtered or unexported fields }
IndexAlter is a query builder for `ALTER INDEX` statement.
func AlterIndex ¶
func AlterIndex(name string) *IndexAlter
AlterIndex returns a query builder for the `ALTER INDEX` statement.
AlterIndex("old_key"). Rename("new_key")
func (*IndexAlter) Query ¶
func (i *IndexAlter) Query() (string, []any)
Query returns query representation of the `ALTER INDEX` statement.
ALTER INDEX name [alter_specification]
func (*IndexAlter) Rename ¶
func (i *IndexAlter) Rename(name string) *IndexAlter
Rename appends the `RENAME TO` clause to the `ALTER INDEX` statement.
type IndexBuilder ¶
type IndexBuilder struct { Builder // contains filtered or unexported fields }
IndexBuilder is a builder for `CREATE INDEX` statement.
func CreateIndex ¶
func CreateIndex(name string) *IndexBuilder
CreateIndex creates a builder for the `CREATE INDEX` statement.
CreateIndex("index_name"). Unique(). Table("users"). Column("name")
Or:
CreateIndex("index_name"). Unique(). Table("users"). Columns("name", "age")
func (*IndexBuilder) Column ¶
func (i *IndexBuilder) Column(column string) *IndexBuilder
Column appends a column to the column list for the index.
func (*IndexBuilder) Columns ¶
func (i *IndexBuilder) Columns(columns ...string) *IndexBuilder
Columns appends the given columns to the column list for the index.
func (*IndexBuilder) IfNotExists ¶
func (i *IndexBuilder) IfNotExists() *IndexBuilder
IfNotExists appends the `IF NOT EXISTS` clause to the `CREATE INDEX` statement.
func (*IndexBuilder) Query ¶
func (i *IndexBuilder) Query() (string, []any)
Query returns query representation of a reference clause.
func (*IndexBuilder) Table ¶
func (i *IndexBuilder) Table(table string) *IndexBuilder
Table defines the table for the index.
func (*IndexBuilder) Unique ¶
func (i *IndexBuilder) Unique() *IndexBuilder
Unique sets the index to be a unique index.
func (*IndexBuilder) Using ¶
func (i *IndexBuilder) Using(method string) *IndexBuilder
Using sets the method to create the index with.
type InsertBuilder ¶
type InsertBuilder struct { Builder // contains filtered or unexported fields }
InsertBuilder is a builder for `INSERT INTO` statement.
func Insert ¶
func Insert(table string) *InsertBuilder
Insert creates a builder for the `INSERT INTO` statement.
Insert("users"). Columns("name", "age"). Values("a8m", 10). Values("foo", 20)
Note: Insert inserts all values in one batch.
func (*InsertBuilder) Columns ¶
func (i *InsertBuilder) Columns(columns ...string) *InsertBuilder
Columns appends columns to the INSERT statement.
func (*InsertBuilder) Default ¶
func (i *InsertBuilder) Default() *InsertBuilder
Default sets the default values clause based on the dialect type.
func (*InsertBuilder) OnConflict ¶
func (i *InsertBuilder) OnConflict(opts ...ConflictOption) *InsertBuilder
OnConflict allows configuring the `ON CONFLICT` / `ON DUPLICATE KEY` clause of the `INSERT` statement. For example:
sql.Insert("users"). Columns("id", "name"). Values(1, "Mashraki"). OnConflict( sql.ConflictColumns("id"), sql.ResolveWithNewValues() )
func (*InsertBuilder) Query ¶
func (i *InsertBuilder) Query() (string, []any)
Query returns query representation of an `INSERT INTO` statement.
func (*InsertBuilder) QueryErr ¶
func (i *InsertBuilder) QueryErr() (string, []any, error)
QueryErr returns query representation of an `INSERT INTO` statement and any error occurred in building the statement.
func (*InsertBuilder) Returning ¶
func (i *InsertBuilder) Returning(columns ...string) *InsertBuilder
Returning adds the `RETURNING` clause to the insert statement. Supported by SQLite and PostgreSQL.
func (*InsertBuilder) Schema ¶
func (i *InsertBuilder) Schema(name string) *InsertBuilder
Schema sets the database name for the insert table.
func (*InsertBuilder) Set ¶
func (i *InsertBuilder) Set(column string, v any) *InsertBuilder
Set is a syntactic sugar API for inserting only one row.
func (*InsertBuilder) Values ¶
func (i *InsertBuilder) Values(values ...any) *InsertBuilder
Values append a value tuple for the insert statement.
type LockAction ¶
type LockAction string
LockAction tells the transaction what to do in case of requesting a row that is locked by other transaction.
const ( // NoWait means never wait and returns an error. NoWait LockAction = "NOWAIT" // SkipLocked means never wait and skip. SkipLocked LockAction = "SKIP LOCKED" )
type LockOption ¶
type LockOption func(*LockOptions)
LockOption allows configuring the LockOptions using functional options.
func WithLockAction ¶
func WithLockAction(action LockAction) LockOption
WithLockAction sets the Action of the lock.
func WithLockClause ¶
func WithLockClause(clause string) LockOption
WithLockClause allows providing a custom clause for locking the statement. For example, in MySQL <= 8.22:
Select(). From(Table("users")). ForShare( WithLockClause("LOCK IN SHARE MODE"), )
func WithLockTables ¶
func WithLockTables(tables ...string) LockOption
WithLockTables sets the Tables of the lock.
type LockOptions ¶
type LockOptions struct { // Strength of the lock. Strength LockStrength // Action of the lock. Action LockAction // Tables are an option tables. Tables []string // contains filtered or unexported fields }
LockOptions defines a SELECT statement lock for protecting concurrent updates.
type LockStrength ¶
type LockStrength string
LockStrength defines the strength of the lock (see the list below).
const ( LockUpdate LockStrength = "UPDATE" LockNoKeyUpdate LockStrength = "NO KEY UPDATE" )
A list of all locking clauses.
type NullScanner ¶
type NullScanner struct { S sql.Scanner Valid bool // Valid is true if the Scan value is not NULL. }
NullScanner implements the sql.Scanner interface such that it can be used as a scan destination, similar to the types above.
func (*NullScanner) Scan ¶
func (n *NullScanner) Scan(value any) error
Scan implements the Scanner interface.
type OrderExprTerm ¶
type OrderExprTerm struct { OrderTermOptions Expr func(*Selector) Querier // Expression. }
OrderExprTerm represents an ordering by an expression.
func OrderByCount ¶
func OrderByCount(field string, opts ...OrderTermOption) *OrderExprTerm
OrderByCount returns an ordering by the count of the given field.
func OrderBySum ¶
func OrderBySum(field string, opts ...OrderTermOption) *OrderExprTerm
OrderBySum returns an ordering by the sum of the given field.
type OrderFieldTerm ¶
type OrderFieldTerm struct { OrderTermOptions Field string // Field name. }
OrderFieldTerm represents an ordering by a field.
func OrderByField ¶
func OrderByField(field string, opts ...OrderTermOption) *OrderFieldTerm
OrderByField returns an ordering by the given field.
func (*OrderFieldTerm) ToFunc ¶
func (f *OrderFieldTerm) ToFunc() func(*Selector)
ToFunc returns a function that sets the ordering on the given selector. This is used by the generated code.
type OrderTerm ¶
type OrderTerm interface {
// contains filtered or unexported methods
}
OrderTerm represents an ordering by a term.
type OrderTermOption ¶
type OrderTermOption func(*OrderTermOptions)
OrderTermOption is an option for ordering by a term.
func OrderAs ¶
func OrderAs(as string) OrderTermOption
OrderAs returns an option to set the alias for the ordering.
func OrderAsc ¶
func OrderAsc() OrderTermOption
OrderAsc returns an option to sort in ascending order.
func OrderDesc ¶
func OrderDesc() OrderTermOption
OrderDesc returns an option to sort in descending order.
func OrderNullsFirst ¶
func OrderNullsFirst() OrderTermOption
OrderNullsFirst returns an option to sort nulls first.
func OrderNullsLast ¶
func OrderNullsLast() OrderTermOption
OrderNullsLast returns an option to sort nulls last.
func OrderSelectAs ¶
func OrderSelectAs(as string) OrderTermOption
OrderSelectAs returns an option to set and select the alias for the ordering.
func OrderSelected ¶
func OrderSelected() OrderTermOption
OrderSelected returns an option to select the ordering term.
type OrderTermOptions ¶
type OrderTermOptions struct { Desc bool // Whether to sort in descending order. As string // Optional alias. Selected bool // Whether the term should be selected. NullsFirst bool // Whether to sort nulls first. NullsLast bool // Whether to sort nulls last. }
OrderTermOptions represents options for ordering by a term.
func NewOrderTermOptions ¶
func NewOrderTermOptions(opts ...OrderTermOption) *OrderTermOptions
NewOrderTermOptions returns a new OrderTermOptions from the given options.
type ParamFormatter ¶
type ParamFormatter interface { // The FormatParam function lets users define // custom placeholder formatting for their types. // For example, formatting the default placeholder // from '?' to 'ST_GeomFromWKB(?)' for MySQL dialect. FormatParam(placeholder string, info *StmtInfo) string }
ParamFormatter wraps the FormatPram function.
type Predicate ¶
type Predicate struct { Builder // contains filtered or unexported fields }
Predicate is a where predicate.
func ColumnsGTE ¶
ColumnsGTE appends a ">=" predicate between 2 columns.
func ColumnsHasPrefix ¶
ColumnsHasPrefix appends a new predicate that checks if the given column begins with the other column (prefix).
func ColumnsLTE ¶
ColumnsLTE appends a "<=" predicate between 2 columns.
func ColumnsNEQ ¶
ColumnsNEQ appends a "<>" predicate between 2 columns.
func CompositeGT ¶
CompositeGT returns a composite ">" predicate
func CompositeLT ¶
CompositeLT returns a composite "<" predicate
func ContainsFold ¶
ContainsFold is a helper predicate that checks substring using the LIKE predicate with case-folding.
func ExprP ¶
ExprP creates a new predicate from the given expression.
ExprP("A = ? AND B > ?", args...)
func False ¶
func False() *Predicate
False appends the FALSE keyword to the predicate.
Delete().From("users").Where(False())
func HasPrefixFold ¶
HasPrefixFold is a helper predicate that checks prefix using the ILIKE predicate.
func HasSuffixFold ¶
HasSuffixFold is a helper predicate that checks suffix using the ILIKE predicate.
func Not ¶
Not wraps the given predicate with the not predicate.
Not(Or(EQ("name", "foo"), EQ("name", "bar")))
func Or ¶
Or combines all given predicates with OR between them.
Or(EQ("name", "foo"), EQ("name", "bar"))
func (*Predicate) Append ¶
Append appends a new function to the predicate callbacks. The callback list are executed on call to Query.
func (*Predicate) ColumnsGTE ¶
ColumnsGTE appends a ">=" predicate between 2 columns.
func (*Predicate) ColumnsHasPrefix ¶
ColumnsHasPrefix appends a new predicate that checks if the given column begins with the other column (prefix).
func (*Predicate) ColumnsLTE ¶
ColumnsLTE appends a "<=" predicate between 2 columns.
func (*Predicate) ColumnsNEQ ¶
ColumnsNEQ appends a "<>" predicate between 2 columns.
func (*Predicate) CompositeGT ¶
CompositeGT returns a composite ">" predicate.
func (*Predicate) CompositeLT ¶
CompositeLT appends a composite "<" predicate.
func (*Predicate) Contains ¶
Contains is a helper predicate that checks substring using the LIKE predicate.
func (*Predicate) ContainsFold ¶
ContainsFold is a helper predicate that applies the LIKE predicate with case-folding.
func (*Predicate) EqualFold ¶
EqualFold is a helper predicate that applies the "=" predicate with case-folding.
func (*Predicate) HasPrefix ¶
HasPrefix is a helper predicate that checks prefix using the LIKE predicate.
func (*Predicate) HasPrefixFold ¶
HasPrefixFold is a helper predicate that checks prefix using the ILIKE predicate.
func (*Predicate) HasSuffix ¶
HasSuffix is a helper predicate that checks suffix using the LIKE predicate.
func (*Predicate) HasSuffixFold ¶
HasSuffixFold is a helper predicate that checks suffix using the ILIKE predicate.
type Querier ¶
type Querier interface { // Query returns the query representation of the element // and its arguments (if any). Query() (string, []any) }
Querier wraps the basic Query method that is implemented by the different builders in this file.
type ReferenceBuilder ¶
type ReferenceBuilder struct { Builder // contains filtered or unexported fields }
ReferenceBuilder is a builder for the reference clause in constraints. For example, in foreign key creation.
func Reference ¶
func Reference() *ReferenceBuilder
Reference creates a reference builder for the reference_option clause.
Reference().Table("groups").Columns("id")
func (*ReferenceBuilder) Columns ¶
func (r *ReferenceBuilder) Columns(s ...string) *ReferenceBuilder
Columns sets the columns of the referenced table.
func (*ReferenceBuilder) Query ¶
func (r *ReferenceBuilder) Query() (string, []any)
Query returns query representation of a reference clause.
func (*ReferenceBuilder) Table ¶
func (r *ReferenceBuilder) Table(s string) *ReferenceBuilder
Table sets the referenced table.
type SelectTable ¶
type SelectTable struct { Builder // contains filtered or unexported fields }
SelectTable is a table selector.
func Table ¶
func Table(name string) *SelectTable
Table returns a new table selector.
t1 := Table("users").As("u") return Select(t1.C("name"))
func (*SelectTable) As ¶
func (s *SelectTable) As(alias string) *SelectTable
As adds the AS clause to the table selector.
func (*SelectTable) C ¶
func (s *SelectTable) C(column string) string
C returns a formatted string for the table column.
func (*SelectTable) Columns ¶
func (s *SelectTable) Columns(columns ...string) []string
Columns returns a list of formatted strings for the table columns.
func (*SelectTable) Schema ¶
func (s *SelectTable) Schema(name string) *SelectTable
Schema sets the schema name of the table.
func (*SelectTable) Unquote ¶
func (s *SelectTable) Unquote() *SelectTable
Unquote makes the table name to be formatted as raw string (unquoted). It is useful when you don't want to query tables under the current database. For example: "INFORMATION_SCHEMA.TABLE_CONSTRAINTS" in MySQL.
type SelectValues ¶
SelectValues maps a selected column to its value. Used by the generated code for storing runtime selected columns/expressions.
func (SelectValues) Get ¶
func (s SelectValues) Get(name string) (any, error)
Get returns the value of the given column.
func (*SelectValues) Set ¶
func (s *SelectValues) Set(name string, v any)
Set sets the value of the given column.
type Selector ¶
type Selector struct { Builder // contains filtered or unexported fields }
Selector is a builder for the `SELECT` statement.
func Select ¶
Select returns a new selector for the `SELECT` statement.
t1 := Table("users").As("u") t2 := Select().From(Table("groups")).Where(EQ("user_id", 10)).As("g") return Select(t1.C("id"), t2.C("name")). From(t1). Join(t2). On(t1.C("id"), t2.C("user_id"))
func SelectExpr ¶
SelectExpr is like Select, but supports passing arbitrary expressions for SELECT clause.
func (*Selector) AppendFrom ¶
AppendFrom appends a new TableView to the `FROM` clause.
func (*Selector) AppendFromExpr ¶
AppendFromExpr appends an expression (Queries) to the `FROM` clause.
func (*Selector) AppendSelect ¶
AppendSelect appends additional columns to the SELECT statement.
func (*Selector) AppendSelectAs ¶
AppendSelectAs appends additional column to the SELECT statement with the given alias.
func (*Selector) AppendSelectExpr ¶
AppendSelectExpr appends additional expressions to the SELECT statement.
func (*Selector) AppendSelectExprAs ¶
AppendSelectExprAs appends additional expressions to the SELECT statement with the given name.
func (*Selector) ClearOrder ¶
ClearOrder clears the ORDER BY clause to be empty.
func (*Selector) Clone ¶
Clone returns a duplicate of the selector, including all associated steps. It can be used to prepare common SELECT statements and use them differently after the clone is made.
func (*Selector) CollectPredicates ¶
CollectPredicates indicates the appended predicated should be collected and not appended to the `WHERE` clause.
func (*Selector) CollectedPredicates ¶
CollectedPredicates returns the collected predicates.
func (*Selector) Columns ¶
Columns returns a list of formatted strings for a selected columns from this statement.
func (*Selector) FindSelection ¶
FindSelection returns all occurrences in the selection that match the given column name. For example, for column "a" the following match: a, "a", "t"."a", "t"."b" AS "a".
func (*Selector) For ¶
func (s *Selector) For(l LockStrength, opts ...LockOption) *Selector
For sets the lock configuration for suffixing the `SELECT` statement with the `FOR [SHARE | UPDATE] ...` clause.
func (*Selector) ForShare ¶
func (s *Selector) ForShare(opts ...LockOption) *Selector
ForShare sets the lock configuration for suffixing the `SELECT` statement with the `FOR SHARE` clause.
func (*Selector) ForUpdate ¶
func (s *Selector) ForUpdate(opts ...LockOption) *Selector
ForUpdate sets the lock configuration for suffixing the `SELECT` statement with the `FOR UPDATE` clause.
func (*Selector) FromSelect ¶
FromSelect copies the predicate from a selector.
func (*Selector) IntersectAll ¶
IntersectAll appends the INTERSECT ALL clause to the query.
func (*Selector) JoinedTable ¶
func (s *Selector) JoinedTable(name string) (*SelectTable, bool)
JoinedTable returns the first joined table with the given name.
func (*Selector) JoinedTableView ¶
JoinedTableView returns the first joined TableView with the given name or alias.
func (*Selector) OnP ¶
OnP sets or appends the given predicate for the `ON` clause of the statement.
func (*Selector) OrderColumns ¶
OrderColumns returns the ordered columns in the Selector. Note, this function skips columns selected with expressions.
func (*Selector) OrderExpr ¶
OrderExpr appends the `ORDER BY` clause to the `SELECT` statement with custom list of expressions.
func (*Selector) OrderExprFunc ¶
OrderExprFunc appends the `ORDER BY` expression that evaluates the given function.
func (*Selector) Select ¶
Select changes the columns selection of the SELECT statement. Empty selection means all columns *.
func (*Selector) SelectDistinct ¶
SelectDistinct selects distinct columns.
func (*Selector) SelectExpr ¶
SelectExpr changes the columns selection of the SELECT statement with custom list of expressions.
func (*Selector) SelectedColumns ¶
SelectedColumns returns the selected columns in the Selector.
func (*Selector) SetDistinct ¶
SetDistinct sets explicitly if the returned rows are distinct or indistinct.
func (*Selector) SetP ¶
SetP sets explicitly the predicate function for the selector and clear its previous state.
func (*Selector) UncollectedPredicates ¶
UncollectedPredicates stop collecting predicates.
func (*Selector) UnionDistinct ¶
UnionDistinct appends the UNION DISTINCT clause to the query. Deprecated: use Union instead as by default, duplicate rows are eliminated unless ALL is specified.
func (*Selector) UnqualifiedColumns ¶
UnqualifiedColumns returns an unqualified version of the selected columns in the Selector. e.g. "t1"."c" => "c".
type StmtInfo ¶
type StmtInfo struct { // The Dialect of the SQL driver. Dialect string }
StmtInfo holds an information regarding the statement
type TableAlter ¶
type TableAlter struct { Builder Queries []Querier // columns and foreign-keys to add. // contains filtered or unexported fields }
TableAlter is a query builder for `ALTER TABLE` statement.
func AlterTable ¶
func AlterTable(name string) *TableAlter
AlterTable returns a query builder for the `ALTER TABLE` statement.
AlterTable("users"). AddColumn(Column("group_id").Type("int").Attr("UNIQUE")). AddForeignKey(ForeignKey().Columns("group_id"). Reference(Reference().Table("groups").Columns("id")).OnDelete("CASCADE")), )
func (*TableAlter) AddColumn ¶
func (t *TableAlter) AddColumn(c *ColumnBuilder) *TableAlter
AddColumn appends the `ADD COLUMN` clause to the given `ALTER TABLE` statement.
func (*TableAlter) AddForeignKey ¶
func (t *TableAlter) AddForeignKey(fk *ForeignKeyBuilder) *TableAlter
AddForeignKey adds a foreign key constraint to the `ALTER TABLE` statement.
func (*TableAlter) AddIndex ¶
func (t *TableAlter) AddIndex(idx *IndexBuilder) *TableAlter
AddIndex appends the `ADD INDEX` clause to the given `ALTER TABLE` statement.
func (*TableAlter) ChangeColumn ¶
func (t *TableAlter) ChangeColumn(name string, c *ColumnBuilder) *TableAlter
ChangeColumn appends the `CHANGE COLUMN` clause to the given `ALTER TABLE` statement.
func (*TableAlter) DropColumn ¶
func (t *TableAlter) DropColumn(c *ColumnBuilder) *TableAlter
DropColumn appends the `DROP COLUMN` clause to the given `ALTER TABLE` statement.
func (*TableAlter) DropConstraint ¶
func (t *TableAlter) DropConstraint(ident string) *TableAlter
DropConstraint appends the `DROP CONSTRAINT` clause to the given `ALTER TABLE` statement.
func (*TableAlter) DropForeignKey ¶
func (t *TableAlter) DropForeignKey(ident string) *TableAlter
DropForeignKey appends the `DROP FOREIGN KEY` clause to the given `ALTER TABLE` statement.
func (*TableAlter) DropIndex ¶
func (t *TableAlter) DropIndex(name string) *TableAlter
DropIndex appends the `DROP INDEX` clause to the given `ALTER TABLE` statement.
func (*TableAlter) ModifyColumn ¶
func (t *TableAlter) ModifyColumn(c *ColumnBuilder) *TableAlter
ModifyColumn appends the `MODIFY/ALTER COLUMN` clause to the given `ALTER TABLE` statement.
func (*TableAlter) ModifyColumns ¶
func (t *TableAlter) ModifyColumns(cs ...*ColumnBuilder) *TableAlter
ModifyColumns calls ModifyColumn with each of the given builders.
func (*TableAlter) Query ¶
func (t *TableAlter) Query() (string, []any)
Query returns query representation of the `ALTER TABLE` statement.
ALTER TABLE name [alter_specification]
func (*TableAlter) RenameColumn ¶
func (t *TableAlter) RenameColumn(old, new string) *TableAlter
RenameColumn appends the `RENAME COLUMN` clause to the given `ALTER TABLE` statement.
func (*TableAlter) RenameIndex ¶
func (t *TableAlter) RenameIndex(curr, new string) *TableAlter
RenameIndex appends the `RENAME INDEX` clause to the given `ALTER TABLE` statement.
type TableBuilder ¶
type TableBuilder struct { Builder // contains filtered or unexported fields }
TableBuilder is a query builder for `CREATE TABLE` statement.
func CreateTable ¶
func CreateTable(name string) *TableBuilder
CreateTable returns a query builder for the `CREATE TABLE` statement.
CreateTable("users"). Columns( Column("id").Type("int").Attr("auto_increment"), Column("name").Type("varchar(255)"), ). PrimaryKey("id")
func (*TableBuilder) Charset ¶
func (t *TableBuilder) Charset(s string) *TableBuilder
Charset appends the `CHARACTER SET` clause to the statement. MySQL only.
func (*TableBuilder) Checks ¶
func (t *TableBuilder) Checks(checks ...func(*Builder)) *TableBuilder
Checks adds CHECK clauses to the CREATE TABLE statement.
func (*TableBuilder) Collate ¶
func (t *TableBuilder) Collate(s string) *TableBuilder
Collate appends the `COLLATE` clause to the statement. MySQL only.
func (*TableBuilder) Column ¶
func (t *TableBuilder) Column(c *ColumnBuilder) *TableBuilder
Column appends the given column to the `CREATE TABLE` statement.
func (*TableBuilder) Columns ¶
func (t *TableBuilder) Columns(columns ...*ColumnBuilder) *TableBuilder
Columns appends a list of columns to the builder.
func (*TableBuilder) Constraints ¶
func (t *TableBuilder) Constraints(fks ...*ForeignKeyBuilder) *TableBuilder
Constraints adds a list of foreign-key constraints to the statement.
func (*TableBuilder) ForeignKeys ¶
func (t *TableBuilder) ForeignKeys(fks ...*ForeignKeyBuilder) *TableBuilder
ForeignKeys adds a list of foreign-keys to the statement (without constraints).
func (*TableBuilder) IfNotExists ¶
func (t *TableBuilder) IfNotExists() *TableBuilder
IfNotExists appends the `IF NOT EXISTS` clause to the `CREATE TABLE` statement.
func (*TableBuilder) Options ¶
func (t *TableBuilder) Options(s string) *TableBuilder
Options appends additional options to the statement (MySQL only).
func (*TableBuilder) PrimaryKey ¶
func (t *TableBuilder) PrimaryKey(column ...string) *TableBuilder
PrimaryKey adds a column to the primary-key constraint in the statement.
func (*TableBuilder) Query ¶
func (t *TableBuilder) Query() (string, []any)
Query returns query representation of a `CREATE TABLE` statement.
CREATE TABLE [IF NOT EXISTS] name
(table definition) [charset and collation]
type TableView ¶
type TableView interface { // C returns a formatted string prefixed // with the table view qualifier. C(string) string // contains filtered or unexported methods }
TableView is a view that returns a table view. Can be a Table, Selector or a View (WITH statement).
type UnknownType ¶
type UnknownType any
UnknownType is a named type to any indicates the info needs to be extracted from the underlying rows.
type UpdateBuilder ¶
type UpdateBuilder struct { Builder // contains filtered or unexported fields }
UpdateBuilder is a builder for `UPDATE` statement.
func Update ¶
func Update(table string) *UpdateBuilder
Update creates a builder for the `UPDATE` statement.
Update("users").Set("name", "foo").Set("age", 10)
func (*UpdateBuilder) Add ¶
func (u *UpdateBuilder) Add(column string, v any) *UpdateBuilder
Add adds a numeric value to the given column. Note that, calling Set(c) after Add(c) will erase previous calls with c from the builder.
func (*UpdateBuilder) Empty ¶
func (u *UpdateBuilder) Empty() bool
Empty reports whether this builder does not contain update changes.
func (*UpdateBuilder) FromSelect ¶
func (u *UpdateBuilder) FromSelect(s *Selector) *UpdateBuilder
FromSelect makes it possible to update entities that match the sub-query.
func (*UpdateBuilder) Limit ¶
func (u *UpdateBuilder) Limit(limit int) *UpdateBuilder
Limit appends the `LIMIT` clause to the `UPDATE` statement. Supported by SQLite and MySQL.
func (*UpdateBuilder) OrderBy ¶
func (u *UpdateBuilder) OrderBy(columns ...string) *UpdateBuilder
OrderBy appends the `ORDER BY` clause to the `UPDATE` statement. Supported by SQLite and MySQL.
func (*UpdateBuilder) Prefix ¶
func (u *UpdateBuilder) Prefix(stmts ...Querier) *UpdateBuilder
Prefix prefixes the UPDATE statement with list of statements.
func (*UpdateBuilder) Query ¶
func (u *UpdateBuilder) Query() (string, []any)
Query returns query representation of an `UPDATE` statement.
func (*UpdateBuilder) Returning ¶
func (u *UpdateBuilder) Returning(columns ...string) *UpdateBuilder
Returning adds the `RETURNING` clause to the insert statement. Supported by SQLite and PostgreSQL.
func (*UpdateBuilder) Schema ¶
func (u *UpdateBuilder) Schema(name string) *UpdateBuilder
Schema sets the database name for the updated table.
func (*UpdateBuilder) Set ¶
func (u *UpdateBuilder) Set(column string, v any) *UpdateBuilder
Set sets a column to a given value. If `Set` was called before with the same column name, it overrides the value of the previous call.
func (*UpdateBuilder) SetNull ¶
func (u *UpdateBuilder) SetNull(column string) *UpdateBuilder
SetNull sets a column as null value.
func (*UpdateBuilder) Where ¶
func (u *UpdateBuilder) Where(p *Predicate) *UpdateBuilder
Where adds a where predicate for update statement.
type UpdateSet ¶
type UpdateSet struct { *UpdateBuilder // contains filtered or unexported fields }
UpdateSet describes a set of changes of the `DO UPDATE` clause.
func (*UpdateSet) SetExcluded ¶
SetExcluded sets the column name to its EXCLUDED/VALUES value. For example, "c" = "excluded"."c", or `c` = VALUES(`c`).
func (*UpdateSet) SetIgnore ¶
SetIgnore sets the column to itself. For example, "id" = "users"."id".
func (*UpdateSet) Table ¶
func (u *UpdateSet) Table() *SelectTable
Table returns the table the `UPSERT` statement is executed on.
func (*UpdateSet) UpdateColumns ¶
UpdateColumns returns all columns in the `UPDATE` statement.
type WindowBuilder ¶
type WindowBuilder struct { Builder // contains filtered or unexported fields }
WindowBuilder represents a builder for a window clause. Note that window functions support is limited and used only to query rows-limited edges in pagination.
func RowNumber ¶
func RowNumber() *WindowBuilder
RowNumber returns a new window clause with the ROW_NUMBER() as a function. Using this function will assign each row a number, from 1 to N, in the order defined by the ORDER BY clause in the window spec.
func Window ¶
func Window(fn func(*Builder)) *WindowBuilder
Window returns a new window clause with a custom selector allowing for custom window functions.
Window(func(b *Builder) { b.WriteString(Sum(posts.C("duration"))) }).PartitionBy("author_id").OrderBy("id"), "duration").
func (*WindowBuilder) OrderBy ¶
func (w *WindowBuilder) OrderBy(columns ...string) *WindowBuilder
OrderBy indicates how to sort rows in each partition.
func (*WindowBuilder) OrderExpr ¶
func (w *WindowBuilder) OrderExpr(exprs ...Querier) *WindowBuilder
OrderExpr appends the `ORDER BY` clause to the window partition with custom list of expressions.
func (*WindowBuilder) PartitionBy ¶
func (w *WindowBuilder) PartitionBy(columns ...string) *WindowBuilder
PartitionBy indicates to divide the query rows into groups by the given columns. Note that, standard SQL spec allows partition only by columns, and in order to use the "expression" version, use the PartitionByExpr.
func (*WindowBuilder) PartitionExpr ¶
func (w *WindowBuilder) PartitionExpr(x Querier) *WindowBuilder
PartitionExpr indicates to divide the query rows into groups by the given expression.
func (*WindowBuilder) Query ¶
func (w *WindowBuilder) Query() (string, []any)
Query returns query representation of the window function.
type WithBuilder ¶
type WithBuilder struct { Builder // contains filtered or unexported fields }
WithBuilder is the builder for the `WITH` statement.
func With ¶
func With(name string, columns ...string) *WithBuilder
With returns a new builder for the `WITH` statement.
n := Queries{ With("users_view").As(Select().From(Table("users"))), Select().From(Table("users_view")), } return n.Query()
func WithRecursive ¶
func WithRecursive(name string, columns ...string) *WithBuilder
WithRecursive returns a new builder for the `WITH RECURSIVE` statement.
n := Queries{ WithRecursive("users_view").As(Select().From(Table("users"))), Select().From(Table("users_view")), } return n.Query()
func (*WithBuilder) As ¶
func (w *WithBuilder) As(s *Selector) *WithBuilder
As sets the view sub query.
func (*WithBuilder) C ¶
func (w *WithBuilder) C(column string) string
C returns a formatted string for the WITH column.
func (*WithBuilder) Query ¶
func (w *WithBuilder) Query() (string, []any)
Query returns query representation of a `WITH` clause.
func (*WithBuilder) With ¶
func (w *WithBuilder) With(name string, columns ...string) *WithBuilder
With appends another named CTE to the statement.
type Wrapper ¶
type Wrapper struct {
// contains filtered or unexported fields
}
Wrapper wraps a given Querier with different format. Used to prefix/suffix other queries.
func (*Wrapper) SetDialect ¶
SetDialect calls SetDialect on the wrapped query.
Directories ¶
Path | Synopsis |
---|---|
Package schema contains all schema migration logic for SQL dialects.
|
Package schema contains all schema migration logic for SQL dialects. |
Package sqlgraph provides graph abstraction capabilities on top of sql-based databases for fluent codegen.
|
Package sqlgraph provides graph abstraction capabilities on top of sql-based databases for fluent codegen. |