bun

package module
v1.1.6 Latest Latest
Warning

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

Go to latest
Published: Jul 10, 2022 License: BSD-2-Clause Imports: 20 Imported by: 1,401

README

SQL-first Golang ORM for PostgreSQL, MySQL, MSSQL, and SQLite

build workflow PkgGoDev Documentation Chat

Bun is brought to you by ⭐ uptrace/uptrace. Uptrace is an open source and blazingly fast distributed tracing tool powered by OpenTelemetry and ClickHouse. Give it a star as well!

Features

Resources:

Projects using Bun:

Benchmark

https://github.com/davars/dbeval

results
BenchmarkInsert
BenchmarkInsert/*dbeval.Memory/Authors
BenchmarkInsert/*dbeval.Memory/Authors-4         	   84450	     12104 ns/op	    2623 B/op	      70 allocs/op
BenchmarkInsert/*dbeval.Xorm/Authors
BenchmarkInsert/*dbeval.Xorm/Authors-4           	    7291	    153505 ns/op	    9024 B/op	     311 allocs/op
BenchmarkInsert/*dbeval.UpperDB/Authors
BenchmarkInsert/*dbeval.UpperDB/Authors-4        	    4608	    223672 ns/op	   24160 B/op	    1100 allocs/op
BenchmarkInsert/*dbeval.Bun/Authors
BenchmarkInsert/*dbeval.Bun/Authors-4            	    6034	    186439 ns/op	    6818 B/op	      80 allocs/op
BenchmarkInsert/*dbeval.PQ/Authors
BenchmarkInsert/*dbeval.PQ/Authors-4             	    1141	    907494 ns/op	    6487 B/op	     193 allocs/op
BenchmarkInsert/*dbeval.SQLX/Authors
BenchmarkInsert/*dbeval.SQLX/Authors-4           	    1165	    916987 ns/op	   10089 B/op	     271 allocs/op
BenchmarkInsert/*dbeval.Ozzo/Authors
BenchmarkInsert/*dbeval.Ozzo/Authors-4           	    1105	   1058082 ns/op	   27826 B/op	     588 allocs/op
BenchmarkInsert/*dbeval.PGXStdlib/Authors
BenchmarkInsert/*dbeval.PGXStdlib/Authors-4      	    1228	    900207 ns/op	    6032 B/op	     180 allocs/op
BenchmarkInsert/*dbeval.Gorm/Authors
BenchmarkInsert/*dbeval.Gorm/Authors-4           	     946	   1184285 ns/op	   35634 B/op	     918 allocs/op
BenchmarkInsert/*dbeval.PGX/Authors
BenchmarkInsert/*dbeval.PGX/Authors-4            	    1116	    923728 ns/op	    3839 B/op	     130 allocs/op
BenchmarkInsert/*dbeval.DBR/Authors
BenchmarkInsert/*dbeval.DBR/Authors-4            	    5800	    183982 ns/op	    8646 B/op	     230 allocs/op
BenchmarkInsert/*dbeval.GoPG/Authors
BenchmarkInsert/*dbeval.GoPG/Authors-4           	    6110	    173923 ns/op	    2906 B/op	      87 allocs/op

BenchmarkInsert/*dbeval.DBR/Articles
BenchmarkInsert/*dbeval.DBR/Articles-4           	    1706	    684466 ns/op	  133346 B/op	    1614 allocs/op
BenchmarkInsert/*dbeval.PQ/Articles
BenchmarkInsert/*dbeval.PQ/Articles-4            	     884	   1249791 ns/op	  100403 B/op	    1491 allocs/op
BenchmarkInsert/*dbeval.PGX/Articles
BenchmarkInsert/*dbeval.PGX/Articles-4           	     916	   1288143 ns/op	   83539 B/op	    1392 allocs/op
BenchmarkInsert/*dbeval.GoPG/Articles
BenchmarkInsert/*dbeval.GoPG/Articles-4          	    1726	    622639 ns/op	   78638 B/op	    1359 allocs/op
BenchmarkInsert/*dbeval.SQLX/Articles
BenchmarkInsert/*dbeval.SQLX/Articles-4          	     860	   1262599 ns/op	   92030 B/op	    1574 allocs/op
BenchmarkInsert/*dbeval.Gorm/Articles
BenchmarkInsert/*dbeval.Gorm/Articles-4          	     782	   1421550 ns/op	  136534 B/op	    2411 allocs/op
BenchmarkInsert/*dbeval.PGXStdlib/Articles
BenchmarkInsert/*dbeval.PGXStdlib/Articles-4     	     938	   1230576 ns/op	   86743 B/op	    1441 allocs/op
BenchmarkInsert/*dbeval.Bun/Articles
BenchmarkInsert/*dbeval.Bun/Articles-4           	    1843	    626681 ns/op	  101610 B/op	    1323 allocs/op
BenchmarkInsert/*dbeval.Xorm/Articles
BenchmarkInsert/*dbeval.Xorm/Articles-4          	    1677	    650244 ns/op	  126677 B/op	    1752 allocs/op
BenchmarkInsert/*dbeval.Memory/Articles
BenchmarkInsert/*dbeval.Memory/Articles-4        	    1988	   1223308 ns/op	   77576 B/op	    1310 allocs/op
BenchmarkInsert/*dbeval.UpperDB/Articles
BenchmarkInsert/*dbeval.UpperDB/Articles-4       	    1696	    687130 ns/op	  139680 B/op	    2862 allocs/op
BenchmarkInsert/*dbeval.Ozzo/Articles
BenchmarkInsert/*dbeval.Ozzo/Articles-4          	     697	   1496859 ns/op	  114780 B/op	    1950 allocs/op

BenchmarkFindAuthorByID
BenchmarkFindAuthorByID/*dbeval.UpperDB
BenchmarkFindAuthorByID/*dbeval.UpperDB-4        	   10184	    117527 ns/op	    9953 B/op	     441 allocs/op
BenchmarkFindAuthorByID/*dbeval.Bun
BenchmarkFindAuthorByID/*dbeval.Bun-4            	   20716	     54261 ns/op	    5096 B/op	      15 allocs/op
BenchmarkFindAuthorByID/*dbeval.Ozzo
BenchmarkFindAuthorByID/*dbeval.Ozzo-4           	   11166	     91043 ns/op	    3088 B/op	      64 allocs/op
BenchmarkFindAuthorByID/*dbeval.PQ
BenchmarkFindAuthorByID/*dbeval.PQ-4             	   13875	     86171 ns/op	     844 B/op	      24 allocs/op
BenchmarkFindAuthorByID/*dbeval.PGX
BenchmarkFindAuthorByID/*dbeval.PGX-4            	   13846	     79983 ns/op	     719 B/op	      15 allocs/op
BenchmarkFindAuthorByID/*dbeval.Memory
BenchmarkFindAuthorByID/*dbeval.Memory-4         	14113720	        82.33 ns/op	       0 B/op	       0 allocs/op
BenchmarkFindAuthorByID/*dbeval.Xorm
BenchmarkFindAuthorByID/*dbeval.Xorm-4           	   12027	     98519 ns/op	    3633 B/op	     106 allocs/op
BenchmarkFindAuthorByID/*dbeval.Gorm
BenchmarkFindAuthorByID/*dbeval.Gorm-4           	   11521	    102241 ns/op	    6592 B/op	     143 allocs/op
BenchmarkFindAuthorByID/*dbeval.PGXStdlib
BenchmarkFindAuthorByID/*dbeval.PGXStdlib-4      	   13933	     82626 ns/op	    1174 B/op	      28 allocs/op
BenchmarkFindAuthorByID/*dbeval.DBR
BenchmarkFindAuthorByID/*dbeval.DBR-4            	   21920	     51175 ns/op	    1756 B/op	      39 allocs/op
BenchmarkFindAuthorByID/*dbeval.SQLX
BenchmarkFindAuthorByID/*dbeval.SQLX-4           	   13603	     80788 ns/op	    1327 B/op	      32 allocs/op
BenchmarkFindAuthorByID/*dbeval.GoPG
BenchmarkFindAuthorByID/*dbeval.GoPG-4           	   23174	     50042 ns/op	     869 B/op	      17 allocs/op

BenchmarkFindAuthorByName
BenchmarkFindAuthorByName/*dbeval.SQLX
BenchmarkFindAuthorByName/*dbeval.SQLX-4         	    1070	   1065272 ns/op	  126348 B/op	    4018 allocs/op
BenchmarkFindAuthorByName/*dbeval.Bun
BenchmarkFindAuthorByName/*dbeval.Bun-4          	     877	   1231377 ns/op	  115803 B/op	    5005 allocs/op
BenchmarkFindAuthorByName/*dbeval.Xorm
BenchmarkFindAuthorByName/*dbeval.Xorm-4         	     471	   2345445 ns/op	  455711 B/op	   19080 allocs/op
BenchmarkFindAuthorByName/*dbeval.DBR
BenchmarkFindAuthorByName/*dbeval.DBR-4          	     954	   1089977 ns/op	  120070 B/op	    6023 allocs/op
BenchmarkFindAuthorByName/*dbeval.PQ
BenchmarkFindAuthorByName/*dbeval.PQ-4           	    1333	    784400 ns/op	   87159 B/op	    4006 allocs/op
BenchmarkFindAuthorByName/*dbeval.GoPG
BenchmarkFindAuthorByName/*dbeval.GoPG-4         	    1580	    770966 ns/op	   87525 B/op	    3028 allocs/op
BenchmarkFindAuthorByName/*dbeval.UpperDB
BenchmarkFindAuthorByName/*dbeval.UpperDB-4      	     789	   1314164 ns/op	  190689 B/op	    6428 allocs/op
BenchmarkFindAuthorByName/*dbeval.Ozzo
BenchmarkFindAuthorByName/*dbeval.Ozzo-4         	     948	   1255282 ns/op	  238764 B/op	    6053 allocs/op
BenchmarkFindAuthorByName/*dbeval.PGXStdlib
BenchmarkFindAuthorByName/*dbeval.PGXStdlib-4    	    1279	    920391 ns/op	  126163 B/op	    4014 allocs/op
BenchmarkFindAuthorByName/*dbeval.PGX
BenchmarkFindAuthorByName/*dbeval.PGX-4          	    1364	    780970 ns/op	  101967 B/op	    2028 allocs/op
BenchmarkFindAuthorByName/*dbeval.Gorm
BenchmarkFindAuthorByName/*dbeval.Gorm-4         	     340	   3445818 ns/op	 1573637 B/op	   27102 allocs/op
BenchmarkFindAuthorByName/*dbeval.Memory
BenchmarkFindAuthorByName/*dbeval.Memory-4       	38081223	        31.24 ns/op	       0 B/op	       0 allocs/op

BenchmarkRecentArticles
BenchmarkRecentArticles/*dbeval.PGXStdlib
BenchmarkRecentArticles/*dbeval.PGXStdlib-4      	     358	   3344119 ns/op	 3425578 B/op	   14177 allocs/op
BenchmarkRecentArticles/*dbeval.GoPG
BenchmarkRecentArticles/*dbeval.GoPG-4           	     364	   3156372 ns/op	 1794091 B/op	   10032 allocs/op
BenchmarkRecentArticles/*dbeval.Xorm
BenchmarkRecentArticles/*dbeval.Xorm-4           	     157	   7567835 ns/op	 5018011 B/op	   81425 allocs/op
BenchmarkRecentArticles/*dbeval.Gorm
BenchmarkRecentArticles/*dbeval.Gorm-4           	     139	   7980084 ns/op	 6776277 B/op	   85418 allocs/op
BenchmarkRecentArticles/*dbeval.SQLX
BenchmarkRecentArticles/*dbeval.SQLX-4           	     338	   3289802 ns/op	 3425890 B/op	   14181 allocs/op
BenchmarkRecentArticles/*dbeval.Ozzo
BenchmarkRecentArticles/*dbeval.Ozzo-4           	     320	   3508322 ns/op	 4025966 B/op	   18207 allocs/op
BenchmarkRecentArticles/*dbeval.DBR
BenchmarkRecentArticles/*dbeval.DBR-4            	     237	   5248644 ns/op	 3331003 B/op	   21370 allocs/op
BenchmarkRecentArticles/*dbeval.Bun
BenchmarkRecentArticles/*dbeval.Bun-4            	     280	   4528582 ns/op	 1864362 B/op	   15965 allocs/op
BenchmarkRecentArticles/*dbeval.UpperDB
BenchmarkRecentArticles/*dbeval.UpperDB-4        	     297	   3704663 ns/op	 3607287 B/op	   18542 allocs/op
BenchmarkRecentArticles/*dbeval.PQ
BenchmarkRecentArticles/*dbeval.PQ-4             	     308	   3489229 ns/op	 3277050 B/op	   17359 allocs/op
BenchmarkRecentArticles/*dbeval.Memory
BenchmarkRecentArticles/*dbeval.Memory-4         	29590380	        42.27 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecentArticles/*dbeval.PGX
BenchmarkRecentArticles/*dbeval.PGX-4            	     356	   3345500 ns/op	 3297316 B/op	    6226 allocs/op

https://github.com/frederikhors/orm-benchmark

results
  4000 times - Insert
  raw_stmt:     0.38s        94280 ns/op     718 B/op     14 allocs/op
       raw:     0.39s        96719 ns/op     718 B/op     13 allocs/op
 beego_orm:     0.48s       118994 ns/op    2411 B/op     56 allocs/op
       bun:     0.57s       142285 ns/op     918 B/op     12 allocs/op
        pg:     0.58s       145496 ns/op    1235 B/op     12 allocs/op
      gorm:     0.70s       175294 ns/op    6665 B/op     88 allocs/op
      xorm:     0.76s       189533 ns/op    3032 B/op     94 allocs/op

  4000 times - MultiInsert 100 row
       raw:     4.59s      1147385 ns/op  135155 B/op    916 allocs/op
  raw_stmt:     4.59s      1148137 ns/op  131076 B/op    916 allocs/op
 beego_orm:     5.50s      1375637 ns/op  179962 B/op   2747 allocs/op
       bun:     6.18s      1544648 ns/op    4265 B/op    214 allocs/op
        pg:     7.01s      1753495 ns/op    5039 B/op    114 allocs/op
      gorm:     9.52s      2379219 ns/op  293956 B/op   3729 allocs/op
      xorm:    11.66s      2915478 ns/op  286140 B/op   7422 allocs/op

  4000 times - Update
  raw_stmt:     0.26s        65781 ns/op     773 B/op     14 allocs/op
       raw:     0.31s        77209 ns/op     757 B/op     13 allocs/op
 beego_orm:     0.43s       107064 ns/op    1802 B/op     47 allocs/op
       bun:     0.56s       139839 ns/op     589 B/op      4 allocs/op
        pg:     0.60s       149608 ns/op     896 B/op     11 allocs/op
      gorm:     0.74s       185970 ns/op    6604 B/op     81 allocs/op
      xorm:     0.81s       203240 ns/op    2994 B/op    119 allocs/op

  4000 times - Read
       raw:     0.33s        81671 ns/op    2081 B/op     49 allocs/op
  raw_stmt:     0.34s        85847 ns/op    2112 B/op     50 allocs/op
 beego_orm:     0.38s        94777 ns/op    2106 B/op     75 allocs/op
        pg:     0.42s       106148 ns/op    1526 B/op     22 allocs/op
       bun:     0.43s       106904 ns/op    1319 B/op     18 allocs/op
      gorm:     0.65s       162221 ns/op    5240 B/op    108 allocs/op
      xorm:     1.13s       281738 ns/op    8326 B/op    237 allocs/op

  4000 times - MultiRead limit 100
       raw:     1.52s       380351 ns/op   38356 B/op   1037 allocs/op
  raw_stmt:     1.54s       385541 ns/op   38388 B/op   1038 allocs/op
        pg:     1.86s       465468 ns/op   24045 B/op    631 allocs/op
       bun:     2.58s       645354 ns/op   30009 B/op   1122 allocs/op
 beego_orm:     2.93s       732028 ns/op   55280 B/op   3077 allocs/op
      gorm:     4.97s      1241831 ns/op   71628 B/op   3877 allocs/op
      xorm:     doesn't work

Why another database client?

So you can elegantly write complex queries:

regionalSales := db.NewSelect().
	ColumnExpr("region").
	ColumnExpr("SUM(amount) AS total_sales").
	TableExpr("orders").
	GroupExpr("region")

topRegions := db.NewSelect().
	ColumnExpr("region").
	TableExpr("regional_sales").
	Where("total_sales > (SELECT SUM(total_sales) / 10 FROM regional_sales)")

var items []map[string]interface{}
err := db.NewSelect().
	With("regional_sales", regionalSales).
	With("top_regions", topRegions).
	ColumnExpr("region").
	ColumnExpr("product").
	ColumnExpr("SUM(quantity) AS product_units").
	ColumnExpr("SUM(amount) AS product_sales").
	TableExpr("orders").
	Where("region IN (SELECT region FROM top_regions)").
	GroupExpr("region").
	GroupExpr("product").
	Scan(ctx, &items)
WITH regional_sales AS (
    SELECT region, SUM(amount) AS total_sales
    FROM orders
    GROUP BY region
), top_regions AS (
    SELECT region
    FROM regional_sales
    WHERE total_sales > (SELECT SUM(total_sales)/10 FROM regional_sales)
)
SELECT region,
       product,
       SUM(quantity) AS product_units,
       SUM(amount) AS product_sales
FROM orders
WHERE region IN (SELECT region FROM top_regions)
GROUP BY region, product

And scan results into scalars, structs, maps, slices of structs/maps/scalars:

users := make([]User, 0)
if err := db.NewSelect().Model(&users).OrderExpr("id ASC").Scan(ctx); err != nil {
	panic(err)
}

user1 := new(User)
if err := db.NewSelect().Model(user1).Where("id = ?", 1).Scan(ctx); err != nil {
	panic(err)
}

See Getting started guide and check examples.

See also

Contributors

Thanks to all the people who already contributed!

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func In

func In(slice interface{}) schema.QueryAppender

func SetLogger added in v1.0.0

func SetLogger(logger internal.Logging)

SetLogger overwriters default Bun logger.

func Version added in v0.4.0

func Version() string

Version is the current release version.

Types

type AddColumnQuery

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

func NewAddColumnQuery

func NewAddColumnQuery(db *DB) *AddColumnQuery

func (*AddColumnQuery) AppendNamedArg added in v0.4.0

func (q *AddColumnQuery) AppendNamedArg(fmter schema.Formatter, b []byte, name string) ([]byte, bool)

func (*AddColumnQuery) AppendQuery

func (q *AddColumnQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error)

func (*AddColumnQuery) ColumnExpr

func (q *AddColumnQuery) ColumnExpr(query string, args ...interface{}) *AddColumnQuery

func (*AddColumnQuery) Conn added in v0.1.14

func (q *AddColumnQuery) Conn(db IConn) *AddColumnQuery

func (*AddColumnQuery) DB

func (q *AddColumnQuery) DB() *DB

func (*AddColumnQuery) Dialect added in v1.0.21

func (q *AddColumnQuery) Dialect() schema.Dialect

func (*AddColumnQuery) Exec

func (q *AddColumnQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error)

func (*AddColumnQuery) GetConn added in v1.0.21

func (q *AddColumnQuery) GetConn() IConn

func (*AddColumnQuery) GetModel added in v0.2.0

func (q *AddColumnQuery) GetModel() Model

func (*AddColumnQuery) GetTableName added in v1.0.9

func (q *AddColumnQuery) GetTableName() string

func (*AddColumnQuery) IfNotExists added in v1.0.15

func (q *AddColumnQuery) IfNotExists() *AddColumnQuery

func (*AddColumnQuery) Model

func (q *AddColumnQuery) Model(model interface{}) *AddColumnQuery

func (*AddColumnQuery) ModelTableExpr

func (q *AddColumnQuery) ModelTableExpr(query string, args ...interface{}) *AddColumnQuery

func (*AddColumnQuery) NewAddColumn added in v1.0.21

func (q *AddColumnQuery) NewAddColumn() *AddColumnQuery

func (*AddColumnQuery) NewCreateIndex added in v1.0.21

func (q *AddColumnQuery) NewCreateIndex() *CreateIndexQuery

func (*AddColumnQuery) NewCreateTable added in v1.0.21

func (q *AddColumnQuery) NewCreateTable() *CreateTableQuery

func (*AddColumnQuery) NewDelete added in v1.0.21

func (q *AddColumnQuery) NewDelete() *DeleteQuery

func (*AddColumnQuery) NewDropColumn added in v1.0.21

func (q *AddColumnQuery) NewDropColumn() *DropColumnQuery

func (*AddColumnQuery) NewDropIndex added in v1.0.21

func (q *AddColumnQuery) NewDropIndex() *DropIndexQuery

func (*AddColumnQuery) NewDropTable added in v1.0.21

func (q *AddColumnQuery) NewDropTable() *DropTableQuery

func (*AddColumnQuery) NewInsert added in v1.0.21

func (q *AddColumnQuery) NewInsert() *InsertQuery

func (*AddColumnQuery) NewSelect added in v1.0.21

func (q *AddColumnQuery) NewSelect() *SelectQuery

func (*AddColumnQuery) NewTruncateTable added in v1.0.21

func (q *AddColumnQuery) NewTruncateTable() *TruncateTableQuery

func (*AddColumnQuery) NewUpdate added in v1.0.21

func (q *AddColumnQuery) NewUpdate() *UpdateQuery

func (*AddColumnQuery) NewValues added in v1.0.21

func (q *AddColumnQuery) NewValues(model interface{}) *ValuesQuery

func (*AddColumnQuery) Operation added in v1.0.5

func (q *AddColumnQuery) Operation() string

func (*AddColumnQuery) Table

func (q *AddColumnQuery) Table(tables ...string) *AddColumnQuery

func (*AddColumnQuery) TableExpr

func (q *AddColumnQuery) TableExpr(query string, args ...interface{}) *AddColumnQuery

type AfterCreateTableHook added in v0.2.0

type AfterCreateTableHook interface {
	AfterCreateTable(ctx context.Context, query *CreateTableQuery) error
}

type AfterDeleteHook

type AfterDeleteHook interface {
	AfterDelete(ctx context.Context, query *DeleteQuery) error
}

type AfterDropTableHook added in v0.2.0

type AfterDropTableHook interface {
	AfterDropTable(ctx context.Context, query *DropTableQuery) error
}

type AfterInsertHook

type AfterInsertHook interface {
	AfterInsert(ctx context.Context, query *InsertQuery) error
}

type AfterScanHook

type AfterScanHook = schema.AfterScanHook

DEPRECATED. Use AfterScanRowHook instead.

type AfterScanRowHook added in v1.0.13

type AfterScanRowHook = schema.AfterScanRowHook

type AfterSelectHook

type AfterSelectHook interface {
	AfterSelect(ctx context.Context, query *SelectQuery) error
}

type AfterUpdateHook

type AfterUpdateHook interface {
	AfterUpdate(ctx context.Context, query *UpdateQuery) error
}

type BaseModel

type BaseModel = schema.BaseModel

type BeforeAppendModelHook added in v1.0.13

type BeforeAppendModelHook = schema.BeforeAppendModelHook

type BeforeCreateTableHook added in v0.2.0

type BeforeCreateTableHook interface {
	BeforeCreateTable(ctx context.Context, query *CreateTableQuery) error
}

type BeforeDeleteHook

type BeforeDeleteHook interface {
	BeforeDelete(ctx context.Context, query *DeleteQuery) error
}

type BeforeDropTableHook added in v0.2.0

type BeforeDropTableHook interface {
	BeforeDropTable(ctx context.Context, query *DropTableQuery) error
}

type BeforeInsertHook

type BeforeInsertHook interface {
	BeforeInsert(ctx context.Context, query *InsertQuery) error
}

type BeforeScanHook

type BeforeScanHook = schema.BeforeScanHook

DEPRECATED. Use BeforeScanRowHook instead.

type BeforeScanRowHook added in v1.0.13

type BeforeScanRowHook = schema.BeforeScanRowHook

type BeforeSelectHook added in v0.2.0

type BeforeSelectHook interface {
	BeforeSelect(ctx context.Context, query *SelectQuery) error
}

type BeforeUpdateHook

type BeforeUpdateHook interface {
	BeforeUpdate(ctx context.Context, query *UpdateQuery) error
}

type Conn

type Conn struct {
	*sql.Conn
	// contains filtered or unexported fields
}

func (Conn) BeginTx added in v1.1.6

func (c Conn) BeginTx(ctx context.Context, opts *sql.TxOptions) (Tx, error)

func (Conn) Dialect added in v1.0.20

func (c Conn) Dialect() schema.Dialect

func (Conn) ExecContext

func (c Conn) ExecContext(
	ctx context.Context, query string, args ...interface{},
) (sql.Result, error)

func (Conn) NewAddColumn added in v0.1.12

func (c Conn) NewAddColumn() *AddColumnQuery

func (Conn) NewCreateIndex added in v0.1.12

func (c Conn) NewCreateIndex() *CreateIndexQuery

func (Conn) NewCreateTable added in v0.1.12

func (c Conn) NewCreateTable() *CreateTableQuery

func (Conn) NewDelete added in v0.1.12

func (c Conn) NewDelete() *DeleteQuery

func (Conn) NewDropColumn added in v0.1.12

func (c Conn) NewDropColumn() *DropColumnQuery

func (Conn) NewDropIndex added in v0.1.12

func (c Conn) NewDropIndex() *DropIndexQuery

func (Conn) NewDropTable added in v0.1.12

func (c Conn) NewDropTable() *DropTableQuery

func (Conn) NewInsert added in v0.1.12

func (c Conn) NewInsert() *InsertQuery

func (Conn) NewSelect added in v0.1.12

func (c Conn) NewSelect() *SelectQuery

func (Conn) NewTruncateTable added in v0.1.12

func (c Conn) NewTruncateTable() *TruncateTableQuery

func (Conn) NewUpdate added in v0.1.12

func (c Conn) NewUpdate() *UpdateQuery

func (Conn) NewValues added in v0.1.12

func (c Conn) NewValues(model interface{}) *ValuesQuery

func (Conn) QueryContext

func (c Conn) QueryContext(
	ctx context.Context, query string, args ...interface{},
) (*sql.Rows, error)

func (Conn) QueryRowContext

func (c Conn) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row

func (Conn) RunInTx added in v1.1.6

func (c Conn) RunInTx(
	ctx context.Context, opts *sql.TxOptions, fn func(ctx context.Context, tx Tx) error,
) error

RunInTx runs the function in a transaction. If the function returns an error, the transaction is rolled back. Otherwise, the transaction is committed.

type CreateIndexQuery

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

func NewCreateIndexQuery

func NewCreateIndexQuery(db *DB) *CreateIndexQuery

func (*CreateIndexQuery) AppendQuery

func (q *CreateIndexQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error)

func (*CreateIndexQuery) Column

func (q *CreateIndexQuery) Column(columns ...string) *CreateIndexQuery

func (*CreateIndexQuery) ColumnExpr

func (q *CreateIndexQuery) ColumnExpr(query string, args ...interface{}) *CreateIndexQuery

func (*CreateIndexQuery) Concurrently

func (q *CreateIndexQuery) Concurrently() *CreateIndexQuery

func (*CreateIndexQuery) Conn added in v0.1.14

func (*CreateIndexQuery) ExcludeColumn

func (q *CreateIndexQuery) ExcludeColumn(columns ...string) *CreateIndexQuery

func (*CreateIndexQuery) Exec

func (q *CreateIndexQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error)

func (*CreateIndexQuery) IfNotExists

func (q *CreateIndexQuery) IfNotExists() *CreateIndexQuery

func (*CreateIndexQuery) Include

func (q *CreateIndexQuery) Include(columns ...string) *CreateIndexQuery

func (*CreateIndexQuery) IncludeExpr

func (q *CreateIndexQuery) IncludeExpr(query string, args ...interface{}) *CreateIndexQuery

func (*CreateIndexQuery) Index

func (q *CreateIndexQuery) Index(query string) *CreateIndexQuery

func (*CreateIndexQuery) IndexExpr

func (q *CreateIndexQuery) IndexExpr(query string, args ...interface{}) *CreateIndexQuery

func (*CreateIndexQuery) Model

func (q *CreateIndexQuery) Model(model interface{}) *CreateIndexQuery

func (*CreateIndexQuery) ModelTableExpr

func (q *CreateIndexQuery) ModelTableExpr(query string, args ...interface{}) *CreateIndexQuery

func (*CreateIndexQuery) Operation added in v1.0.5

func (q *CreateIndexQuery) Operation() string

func (*CreateIndexQuery) Table

func (q *CreateIndexQuery) Table(tables ...string) *CreateIndexQuery

func (*CreateIndexQuery) TableExpr

func (q *CreateIndexQuery) TableExpr(query string, args ...interface{}) *CreateIndexQuery

func (*CreateIndexQuery) Unique

func (q *CreateIndexQuery) Unique() *CreateIndexQuery

func (*CreateIndexQuery) Using

func (q *CreateIndexQuery) Using(query string, args ...interface{}) *CreateIndexQuery

func (*CreateIndexQuery) Where

func (q *CreateIndexQuery) Where(query string, args ...interface{}) *CreateIndexQuery

func (*CreateIndexQuery) WhereOr

func (q *CreateIndexQuery) WhereOr(query string, args ...interface{}) *CreateIndexQuery

type CreateTableQuery

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

func NewCreateTableQuery

func NewCreateTableQuery(db *DB) *CreateTableQuery

func (*CreateTableQuery) AppendNamedArg added in v0.4.0

func (q *CreateTableQuery) AppendNamedArg(fmter schema.Formatter, b []byte, name string) ([]byte, bool)

func (*CreateTableQuery) AppendQuery

func (q *CreateTableQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error)

func (*CreateTableQuery) ColumnExpr added in v1.0.9

func (q *CreateTableQuery) ColumnExpr(query string, args ...interface{}) *CreateTableQuery

func (*CreateTableQuery) Conn added in v0.1.14

func (*CreateTableQuery) DB

func (q *CreateTableQuery) DB() *DB

func (*CreateTableQuery) Dialect added in v1.0.21

func (q *CreateTableQuery) Dialect() schema.Dialect

func (*CreateTableQuery) Exec

func (q *CreateTableQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error)

func (*CreateTableQuery) ForeignKey added in v0.1.13

func (q *CreateTableQuery) ForeignKey(query string, args ...interface{}) *CreateTableQuery

func (*CreateTableQuery) GetConn added in v1.0.21

func (q *CreateTableQuery) GetConn() IConn

func (*CreateTableQuery) GetModel added in v0.2.0

func (q *CreateTableQuery) GetModel() Model

func (*CreateTableQuery) GetTableName added in v1.0.9

func (q *CreateTableQuery) GetTableName() string

func (*CreateTableQuery) IfNotExists

func (q *CreateTableQuery) IfNotExists() *CreateTableQuery

func (*CreateTableQuery) Model

func (q *CreateTableQuery) Model(model interface{}) *CreateTableQuery

func (*CreateTableQuery) ModelTableExpr

func (q *CreateTableQuery) ModelTableExpr(query string, args ...interface{}) *CreateTableQuery

func (*CreateTableQuery) NewAddColumn added in v1.0.21

func (q *CreateTableQuery) NewAddColumn() *AddColumnQuery

func (*CreateTableQuery) NewCreateIndex added in v1.0.21

func (q *CreateTableQuery) NewCreateIndex() *CreateIndexQuery

func (*CreateTableQuery) NewCreateTable added in v1.0.21

func (q *CreateTableQuery) NewCreateTable() *CreateTableQuery

func (*CreateTableQuery) NewDelete added in v1.0.21

func (q *CreateTableQuery) NewDelete() *DeleteQuery

func (*CreateTableQuery) NewDropColumn added in v1.0.21

func (q *CreateTableQuery) NewDropColumn() *DropColumnQuery

func (*CreateTableQuery) NewDropIndex added in v1.0.21

func (q *CreateTableQuery) NewDropIndex() *DropIndexQuery

func (*CreateTableQuery) NewDropTable added in v1.0.21

func (q *CreateTableQuery) NewDropTable() *DropTableQuery

func (*CreateTableQuery) NewInsert added in v1.0.21

func (q *CreateTableQuery) NewInsert() *InsertQuery

func (*CreateTableQuery) NewSelect added in v1.0.21

func (q *CreateTableQuery) NewSelect() *SelectQuery

func (*CreateTableQuery) NewTruncateTable added in v1.0.21

func (q *CreateTableQuery) NewTruncateTable() *TruncateTableQuery

func (*CreateTableQuery) NewUpdate added in v1.0.21

func (q *CreateTableQuery) NewUpdate() *UpdateQuery

func (*CreateTableQuery) NewValues added in v1.0.21

func (q *CreateTableQuery) NewValues(model interface{}) *ValuesQuery

func (*CreateTableQuery) Operation added in v1.0.5

func (q *CreateTableQuery) Operation() string

func (*CreateTableQuery) PartitionBy added in v1.0.18

func (q *CreateTableQuery) PartitionBy(query string, args ...interface{}) *CreateTableQuery

func (*CreateTableQuery) Table

func (q *CreateTableQuery) Table(tables ...string) *CreateTableQuery

func (*CreateTableQuery) TableExpr

func (q *CreateTableQuery) TableExpr(query string, args ...interface{}) *CreateTableQuery

func (*CreateTableQuery) TableSpace added in v1.0.18

func (q *CreateTableQuery) TableSpace(tablespace string) *CreateTableQuery

func (*CreateTableQuery) Temp

func (*CreateTableQuery) Varchar

func (q *CreateTableQuery) Varchar(n int) *CreateTableQuery

func (*CreateTableQuery) WithForeignKeys added in v1.0.23

func (q *CreateTableQuery) WithForeignKeys() *CreateTableQuery

type DB

type DB struct {
	*sql.DB
	// contains filtered or unexported fields
}

func NewDB

func NewDB(sqldb *sql.DB, dialect schema.Dialect, opts ...DBOption) *DB

func (*DB) AddQueryHook

func (db *DB) AddQueryHook(hook QueryHook)

func (*DB) Begin

func (db *DB) Begin() (Tx, error)

func (*DB) BeginTx

func (db *DB) BeginTx(ctx context.Context, opts *sql.TxOptions) (Tx, error)

func (*DB) Conn

func (db *DB) Conn(ctx context.Context) (Conn, error)

func (*DB) DBStats added in v0.1.13

func (db *DB) DBStats() DBStats

func (*DB) Dialect

func (db *DB) Dialect() schema.Dialect

func (*DB) Exec

func (db *DB) Exec(query string, args ...interface{}) (sql.Result, error)

func (*DB) ExecContext

func (db *DB) ExecContext(
	ctx context.Context, query string, args ...interface{},
) (sql.Result, error)

func (*DB) Formatter

func (db *DB) Formatter() schema.Formatter

func (*DB) HasFeature added in v1.0.18

func (db *DB) HasFeature(feat feature.Feature) bool

HasFeature uses feature package to report whether the underlying DBMS supports this feature.

func (*DB) NewAddColumn

func (db *DB) NewAddColumn() *AddColumnQuery

func (*DB) NewCreateIndex

func (db *DB) NewCreateIndex() *CreateIndexQuery

func (*DB) NewCreateTable

func (db *DB) NewCreateTable() *CreateTableQuery

func (*DB) NewDelete

func (db *DB) NewDelete() *DeleteQuery

func (*DB) NewDropColumn

func (db *DB) NewDropColumn() *DropColumnQuery

func (*DB) NewDropIndex

func (db *DB) NewDropIndex() *DropIndexQuery

func (*DB) NewDropTable

func (db *DB) NewDropTable() *DropTableQuery

func (*DB) NewInsert

func (db *DB) NewInsert() *InsertQuery

func (*DB) NewSelect

func (db *DB) NewSelect() *SelectQuery

func (*DB) NewTruncateTable

func (db *DB) NewTruncateTable() *TruncateTableQuery

func (*DB) NewUpdate

func (db *DB) NewUpdate() *UpdateQuery

func (*DB) NewValues

func (db *DB) NewValues(model interface{}) *ValuesQuery

func (*DB) Prepare

func (db *DB) Prepare(query string) (Stmt, error)

func (*DB) PrepareContext

func (db *DB) PrepareContext(ctx context.Context, query string) (Stmt, error)

func (*DB) Query

func (db *DB) Query(query string, args ...interface{}) (*sql.Rows, error)

func (*DB) QueryContext

func (db *DB) QueryContext(
	ctx context.Context, query string, args ...interface{},
) (*sql.Rows, error)

func (*DB) QueryRow

func (db *DB) QueryRow(query string, args ...interface{}) *sql.Row

func (*DB) QueryRowContext

func (db *DB) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row

func (*DB) Raw added in v1.1.6

func (db *DB) Raw(query string, args ...interface{}) *RawQuery

func (*DB) RegisterModel

func (db *DB) RegisterModel(models ...interface{})

RegisterModel registers models by name so they can be referenced in table relations and fixtures.

func (*DB) ResetModel added in v0.1.6

func (db *DB) ResetModel(ctx context.Context, models ...interface{}) error

func (*DB) RunInTx added in v0.2.5

func (db *DB) RunInTx(
	ctx context.Context, opts *sql.TxOptions, fn func(ctx context.Context, tx Tx) error,
) error

RunInTx runs the function in a transaction. If the function returns an error, the transaction is rolled back. Otherwise, the transaction is committed.

func (*DB) ScanRow

func (db *DB) ScanRow(ctx context.Context, rows *sql.Rows, dest ...interface{}) error

func (*DB) ScanRows

func (db *DB) ScanRows(ctx context.Context, rows *sql.Rows, dest ...interface{}) error

func (*DB) String added in v0.3.5

func (db *DB) String() string

func (*DB) Table

func (db *DB) Table(typ reflect.Type) *schema.Table

func (*DB) UpdateFQN added in v1.0.19

func (db *DB) UpdateFQN(alias, column string) Ident

UpdateFQN returns a fully qualified column name. For MySQL, it returns the column name with the table alias. For other RDBMS, it returns just the column name.

func (*DB) WithNamedArg

func (db *DB) WithNamedArg(name string, value interface{}) *DB

type DBOption

type DBOption func(db *DB)

func WithDiscardUnknownColumns added in v0.1.3

func WithDiscardUnknownColumns() DBOption

type DBStats

type DBStats struct {
	Queries uint32
	Errors  uint32
}

type DeleteQuery

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

func NewDeleteQuery

func NewDeleteQuery(db *DB) *DeleteQuery

func (*DeleteQuery) AppendQuery

func (q *DeleteQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error)

func (*DeleteQuery) Apply

func (q *DeleteQuery) Apply(fn func(*DeleteQuery) *DeleteQuery) *DeleteQuery

Apply calls the fn passing the DeleteQuery as an argument.

func (*DeleteQuery) ApplyQueryBuilder added in v1.1.4

func (q *DeleteQuery) ApplyQueryBuilder(fn func(QueryBuilder) QueryBuilder) *DeleteQuery

func (*DeleteQuery) Conn added in v0.1.14

func (q *DeleteQuery) Conn(db IConn) *DeleteQuery

func (*DeleteQuery) Exec

func (q *DeleteQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error)

func (*DeleteQuery) ForceDelete

func (q *DeleteQuery) ForceDelete() *DeleteQuery

func (*DeleteQuery) Model

func (q *DeleteQuery) Model(model interface{}) *DeleteQuery

func (*DeleteQuery) ModelTableExpr

func (q *DeleteQuery) ModelTableExpr(query string, args ...interface{}) *DeleteQuery

func (*DeleteQuery) Operation added in v1.0.5

func (q *DeleteQuery) Operation() string

func (*DeleteQuery) QueryBuilder added in v1.1.4

func (q *DeleteQuery) QueryBuilder() QueryBuilder

func (*DeleteQuery) Returning

func (q *DeleteQuery) Returning(query string, args ...interface{}) *DeleteQuery

Returning adds a RETURNING clause to the query.

To suppress the auto-generated RETURNING clause, use `Returning("NULL")`.

func (*DeleteQuery) String added in v1.1.6

func (q *DeleteQuery) String() string

func (*DeleteQuery) Table

func (q *DeleteQuery) Table(tables ...string) *DeleteQuery

func (*DeleteQuery) TableExpr

func (q *DeleteQuery) TableExpr(query string, args ...interface{}) *DeleteQuery

func (*DeleteQuery) Where

func (q *DeleteQuery) Where(query string, args ...interface{}) *DeleteQuery

func (*DeleteQuery) WhereAllWithDeleted

func (q *DeleteQuery) WhereAllWithDeleted() *DeleteQuery

func (*DeleteQuery) WhereDeleted

func (q *DeleteQuery) WhereDeleted() *DeleteQuery

func (*DeleteQuery) WhereGroup

func (q *DeleteQuery) WhereGroup(sep string, fn func(*DeleteQuery) *DeleteQuery) *DeleteQuery

func (*DeleteQuery) WhereOr

func (q *DeleteQuery) WhereOr(query string, args ...interface{}) *DeleteQuery

func (*DeleteQuery) WherePK

func (q *DeleteQuery) WherePK(cols ...string) *DeleteQuery

func (*DeleteQuery) With

func (q *DeleteQuery) With(name string, query schema.QueryAppender) *DeleteQuery

type DropColumnQuery

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

func NewDropColumnQuery

func NewDropColumnQuery(db *DB) *DropColumnQuery

func (*DropColumnQuery) AppendNamedArg added in v0.4.0

func (q *DropColumnQuery) AppendNamedArg(fmter schema.Formatter, b []byte, name string) ([]byte, bool)

func (*DropColumnQuery) AppendQuery

func (q *DropColumnQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error)

func (*DropColumnQuery) Column

func (q *DropColumnQuery) Column(columns ...string) *DropColumnQuery

func (*DropColumnQuery) ColumnExpr

func (q *DropColumnQuery) ColumnExpr(query string, args ...interface{}) *DropColumnQuery

func (*DropColumnQuery) Conn added in v0.1.14

func (q *DropColumnQuery) Conn(db IConn) *DropColumnQuery

func (*DropColumnQuery) DB

func (q *DropColumnQuery) DB() *DB

func (*DropColumnQuery) Dialect added in v1.0.21

func (q *DropColumnQuery) Dialect() schema.Dialect

func (*DropColumnQuery) Exec

func (q *DropColumnQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error)

func (*DropColumnQuery) GetConn added in v1.0.21

func (q *DropColumnQuery) GetConn() IConn

func (*DropColumnQuery) GetModel added in v0.2.0

func (q *DropColumnQuery) GetModel() Model

func (*DropColumnQuery) GetTableName added in v1.0.9

func (q *DropColumnQuery) GetTableName() string

func (*DropColumnQuery) Model

func (q *DropColumnQuery) Model(model interface{}) *DropColumnQuery

func (*DropColumnQuery) ModelTableExpr

func (q *DropColumnQuery) ModelTableExpr(query string, args ...interface{}) *DropColumnQuery

func (*DropColumnQuery) NewAddColumn added in v1.0.21

func (q *DropColumnQuery) NewAddColumn() *AddColumnQuery

func (*DropColumnQuery) NewCreateIndex added in v1.0.21

func (q *DropColumnQuery) NewCreateIndex() *CreateIndexQuery

func (*DropColumnQuery) NewCreateTable added in v1.0.21

func (q *DropColumnQuery) NewCreateTable() *CreateTableQuery

func (*DropColumnQuery) NewDelete added in v1.0.21

func (q *DropColumnQuery) NewDelete() *DeleteQuery

func (*DropColumnQuery) NewDropColumn added in v1.0.21

func (q *DropColumnQuery) NewDropColumn() *DropColumnQuery

func (*DropColumnQuery) NewDropIndex added in v1.0.21

func (q *DropColumnQuery) NewDropIndex() *DropIndexQuery

func (*DropColumnQuery) NewDropTable added in v1.0.21

func (q *DropColumnQuery) NewDropTable() *DropTableQuery

func (*DropColumnQuery) NewInsert added in v1.0.21

func (q *DropColumnQuery) NewInsert() *InsertQuery

func (*DropColumnQuery) NewSelect added in v1.0.21

func (q *DropColumnQuery) NewSelect() *SelectQuery

func (*DropColumnQuery) NewTruncateTable added in v1.0.21

func (q *DropColumnQuery) NewTruncateTable() *TruncateTableQuery

func (*DropColumnQuery) NewUpdate added in v1.0.21

func (q *DropColumnQuery) NewUpdate() *UpdateQuery

func (*DropColumnQuery) NewValues added in v1.0.21

func (q *DropColumnQuery) NewValues(model interface{}) *ValuesQuery

func (*DropColumnQuery) Operation added in v1.0.5

func (q *DropColumnQuery) Operation() string

func (*DropColumnQuery) Table

func (q *DropColumnQuery) Table(tables ...string) *DropColumnQuery

func (*DropColumnQuery) TableExpr

func (q *DropColumnQuery) TableExpr(query string, args ...interface{}) *DropColumnQuery

type DropIndexQuery

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

func NewDropIndexQuery

func NewDropIndexQuery(db *DB) *DropIndexQuery

func (*DropIndexQuery) AppendNamedArg added in v0.4.0

func (q *DropIndexQuery) AppendNamedArg(fmter schema.Formatter, b []byte, name string) ([]byte, bool)

func (*DropIndexQuery) AppendQuery

func (q *DropIndexQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error)

func (*DropIndexQuery) Cascade added in v1.0.20

func (q *DropIndexQuery) Cascade() *DropIndexQuery

func (*DropIndexQuery) Concurrently

func (q *DropIndexQuery) Concurrently() *DropIndexQuery

func (*DropIndexQuery) Conn added in v0.1.14

func (q *DropIndexQuery) Conn(db IConn) *DropIndexQuery

func (*DropIndexQuery) DB

func (q *DropIndexQuery) DB() *DB

func (*DropIndexQuery) Dialect added in v1.0.21

func (q *DropIndexQuery) Dialect() schema.Dialect

func (*DropIndexQuery) Exec

func (q *DropIndexQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error)

func (*DropIndexQuery) GetConn added in v1.0.21

func (q *DropIndexQuery) GetConn() IConn

func (*DropIndexQuery) GetModel added in v0.2.0

func (q *DropIndexQuery) GetModel() Model

func (*DropIndexQuery) GetTableName added in v1.0.9

func (q *DropIndexQuery) GetTableName() string

func (*DropIndexQuery) IfExists

func (q *DropIndexQuery) IfExists() *DropIndexQuery

func (*DropIndexQuery) Index

func (q *DropIndexQuery) Index(query string, args ...interface{}) *DropIndexQuery

func (*DropIndexQuery) Model

func (q *DropIndexQuery) Model(model interface{}) *DropIndexQuery

func (*DropIndexQuery) NewAddColumn added in v1.0.21

func (q *DropIndexQuery) NewAddColumn() *AddColumnQuery

func (*DropIndexQuery) NewCreateIndex added in v1.0.21

func (q *DropIndexQuery) NewCreateIndex() *CreateIndexQuery

func (*DropIndexQuery) NewCreateTable added in v1.0.21

func (q *DropIndexQuery) NewCreateTable() *CreateTableQuery

func (*DropIndexQuery) NewDelete added in v1.0.21

func (q *DropIndexQuery) NewDelete() *DeleteQuery

func (*DropIndexQuery) NewDropColumn added in v1.0.21

func (q *DropIndexQuery) NewDropColumn() *DropColumnQuery

func (*DropIndexQuery) NewDropIndex added in v1.0.21

func (q *DropIndexQuery) NewDropIndex() *DropIndexQuery

func (*DropIndexQuery) NewDropTable added in v1.0.21

func (q *DropIndexQuery) NewDropTable() *DropTableQuery

func (*DropIndexQuery) NewInsert added in v1.0.21

func (q *DropIndexQuery) NewInsert() *InsertQuery

func (*DropIndexQuery) NewSelect added in v1.0.21

func (q *DropIndexQuery) NewSelect() *SelectQuery

func (*DropIndexQuery) NewTruncateTable added in v1.0.21

func (q *DropIndexQuery) NewTruncateTable() *TruncateTableQuery

func (*DropIndexQuery) NewUpdate added in v1.0.21

func (q *DropIndexQuery) NewUpdate() *UpdateQuery

func (*DropIndexQuery) NewValues added in v1.0.21

func (q *DropIndexQuery) NewValues(model interface{}) *ValuesQuery

func (*DropIndexQuery) Operation added in v1.0.5

func (q *DropIndexQuery) Operation() string

func (*DropIndexQuery) Restrict

func (q *DropIndexQuery) Restrict() *DropIndexQuery

type DropTableQuery

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

func NewDropTableQuery

func NewDropTableQuery(db *DB) *DropTableQuery

func (*DropTableQuery) AppendNamedArg added in v0.4.0

func (q *DropTableQuery) AppendNamedArg(fmter schema.Formatter, b []byte, name string) ([]byte, bool)

func (*DropTableQuery) AppendQuery

func (q *DropTableQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error)

func (*DropTableQuery) Cascade added in v1.0.20

func (q *DropTableQuery) Cascade() *DropTableQuery

func (*DropTableQuery) Conn added in v0.1.14

func (q *DropTableQuery) Conn(db IConn) *DropTableQuery

func (*DropTableQuery) DB

func (q *DropTableQuery) DB() *DB

func (*DropTableQuery) Dialect added in v1.0.21

func (q *DropTableQuery) Dialect() schema.Dialect

func (*DropTableQuery) Exec

func (q *DropTableQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error)

func (*DropTableQuery) GetConn added in v1.0.21

func (q *DropTableQuery) GetConn() IConn

func (*DropTableQuery) GetModel added in v0.2.0

func (q *DropTableQuery) GetModel() Model

func (*DropTableQuery) GetTableName added in v1.0.9

func (q *DropTableQuery) GetTableName() string

func (*DropTableQuery) IfExists

func (q *DropTableQuery) IfExists() *DropTableQuery

func (*DropTableQuery) Model

func (q *DropTableQuery) Model(model interface{}) *DropTableQuery

func (*DropTableQuery) ModelTableExpr added in v0.4.1

func (q *DropTableQuery) ModelTableExpr(query string, args ...interface{}) *DropTableQuery

func (*DropTableQuery) NewAddColumn added in v1.0.21

func (q *DropTableQuery) NewAddColumn() *AddColumnQuery

func (*DropTableQuery) NewCreateIndex added in v1.0.21

func (q *DropTableQuery) NewCreateIndex() *CreateIndexQuery

func (*DropTableQuery) NewCreateTable added in v1.0.21

func (q *DropTableQuery) NewCreateTable() *CreateTableQuery

func (*DropTableQuery) NewDelete added in v1.0.21

func (q *DropTableQuery) NewDelete() *DeleteQuery

func (*DropTableQuery) NewDropColumn added in v1.0.21

func (q *DropTableQuery) NewDropColumn() *DropColumnQuery

func (*DropTableQuery) NewDropIndex added in v1.0.21

func (q *DropTableQuery) NewDropIndex() *DropIndexQuery

func (*DropTableQuery) NewDropTable added in v1.0.21

func (q *DropTableQuery) NewDropTable() *DropTableQuery

func (*DropTableQuery) NewInsert added in v1.0.21

func (q *DropTableQuery) NewInsert() *InsertQuery

func (*DropTableQuery) NewSelect added in v1.0.21

func (q *DropTableQuery) NewSelect() *SelectQuery

func (*DropTableQuery) NewTruncateTable added in v1.0.21

func (q *DropTableQuery) NewTruncateTable() *TruncateTableQuery

func (*DropTableQuery) NewUpdate added in v1.0.21

func (q *DropTableQuery) NewUpdate() *UpdateQuery

func (*DropTableQuery) NewValues added in v1.0.21

func (q *DropTableQuery) NewValues(model interface{}) *ValuesQuery

func (*DropTableQuery) Operation added in v1.0.5

func (q *DropTableQuery) Operation() string

func (*DropTableQuery) Restrict

func (q *DropTableQuery) Restrict() *DropTableQuery

func (*DropTableQuery) Table

func (q *DropTableQuery) Table(tables ...string) *DropTableQuery

func (*DropTableQuery) TableExpr

func (q *DropTableQuery) TableExpr(query string, args ...interface{}) *DropTableQuery

type IConn added in v0.2.1

type IConn interface {
	QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
	ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
	QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row
}

IConn is a common interface for *sql.DB, *sql.Conn, and *sql.Tx.

type IDB added in v0.2.1

type IDB interface {
	IConn
	Dialect() schema.Dialect

	NewValues(model interface{}) *ValuesQuery
	NewSelect() *SelectQuery
	NewInsert() *InsertQuery
	NewUpdate() *UpdateQuery
	NewDelete() *DeleteQuery
	NewCreateTable() *CreateTableQuery
	NewDropTable() *DropTableQuery
	NewCreateIndex() *CreateIndexQuery
	NewDropIndex() *DropIndexQuery
	NewTruncateTable() *TruncateTableQuery
	NewAddColumn() *AddColumnQuery
	NewDropColumn() *DropColumnQuery

	BeginTx(ctx context.Context, opts *sql.TxOptions) (Tx, error)
	RunInTx(ctx context.Context, opts *sql.TxOptions, f func(ctx context.Context, tx Tx) error) error
}

IDB is a common interface for *bun.DB, bun.Conn, and bun.Tx.

type Ident

type Ident = schema.Ident

type InsertQuery

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

func NewInsertQuery

func NewInsertQuery(db *DB) *InsertQuery

func (*InsertQuery) AppendQuery

func (q *InsertQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error)

func (*InsertQuery) Apply

func (q *InsertQuery) Apply(fn func(*InsertQuery) *InsertQuery) *InsertQuery

Apply calls the fn passing the SelectQuery as an argument.

func (*InsertQuery) Column

func (q *InsertQuery) Column(columns ...string) *InsertQuery

func (*InsertQuery) ColumnExpr added in v1.0.12

func (q *InsertQuery) ColumnExpr(query string, args ...interface{}) *InsertQuery

func (*InsertQuery) Conn added in v0.1.14

func (q *InsertQuery) Conn(db IConn) *InsertQuery

func (*InsertQuery) ExcludeColumn added in v0.2.0

func (q *InsertQuery) ExcludeColumn(columns ...string) *InsertQuery

func (*InsertQuery) Exec

func (q *InsertQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error)

func (*InsertQuery) Ignore added in v0.1.9

func (q *InsertQuery) Ignore() *InsertQuery

Ignore generates different queries depending on the DBMS:

  • On MySQL, it generates `INSERT IGNORE INTO`.
  • On PostgreSQL, it generates `ON CONFLICT DO NOTHING`.

func (*InsertQuery) Model

func (q *InsertQuery) Model(model interface{}) *InsertQuery

func (*InsertQuery) ModelTableExpr

func (q *InsertQuery) ModelTableExpr(query string, args ...interface{}) *InsertQuery

func (*InsertQuery) On added in v0.1.9

func (q *InsertQuery) On(s string, args ...interface{}) *InsertQuery

func (*InsertQuery) Operation added in v1.0.5

func (q *InsertQuery) Operation() string

func (*InsertQuery) Replace added in v0.1.9

func (q *InsertQuery) Replace() *InsertQuery

Replaces generates a `REPLACE INTO` query (MySQL and MariaDB).

func (*InsertQuery) Returning

func (q *InsertQuery) Returning(query string, args ...interface{}) *InsertQuery

Returning adds a RETURNING clause to the query.

To suppress the auto-generated RETURNING clause, use `Returning("")`.

func (*InsertQuery) Set

func (q *InsertQuery) Set(query string, args ...interface{}) *InsertQuery

func (*InsertQuery) String added in v1.1.6

func (q *InsertQuery) String() string

func (*InsertQuery) Table

func (q *InsertQuery) Table(tables ...string) *InsertQuery

func (*InsertQuery) TableExpr

func (q *InsertQuery) TableExpr(query string, args ...interface{}) *InsertQuery

func (*InsertQuery) Value

func (q *InsertQuery) Value(column string, expr string, args ...interface{}) *InsertQuery

Value overwrites model value for the column.

func (*InsertQuery) Where

func (q *InsertQuery) Where(query string, args ...interface{}) *InsertQuery

func (*InsertQuery) WhereOr

func (q *InsertQuery) WhereOr(query string, args ...interface{}) *InsertQuery

func (*InsertQuery) With

func (q *InsertQuery) With(name string, query schema.QueryAppender) *InsertQuery

type Model added in v0.2.0

type Model = schema.Model

type NullTime

type NullTime = schema.NullTime

type Query added in v1.0.13

type Query = schema.Query

type QueryBuilder added in v1.1.3

type QueryBuilder interface {
	Query
	Where(query string, args ...interface{}) QueryBuilder
	WhereGroup(sep string, fn func(QueryBuilder) QueryBuilder) QueryBuilder
	WhereOr(query string, args ...interface{}) QueryBuilder
	WhereDeleted() QueryBuilder
	WhereAllWithDeleted() QueryBuilder
	WherePK(cols ...string) QueryBuilder
	Unwrap() interface{}
}

QueryBuilder is used for common query methods

type QueryEvent

type QueryEvent struct {
	DB *DB

	QueryAppender schema.QueryAppender // DEPRECATED: use IQuery instead
	IQuery        Query
	Query         string
	QueryTemplate string
	QueryArgs     []interface{}
	Model         Model

	StartTime time.Time
	Result    sql.Result
	Err       error

	Stash map[interface{}]interface{}
}

func (*QueryEvent) Operation added in v1.0.5

func (e *QueryEvent) Operation() string

type QueryHook

type QueryHook interface {
	BeforeQuery(context.Context, *QueryEvent) context.Context
	AfterQuery(context.Context, *QueryEvent)
}

type RawQuery added in v1.1.6

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

func (*RawQuery) AppendNamedArg added in v1.1.6

func (q *RawQuery) AppendNamedArg(fmter schema.Formatter, b []byte, name string) ([]byte, bool)

func (*RawQuery) AppendQuery added in v1.1.6

func (q *RawQuery) AppendQuery(fmter schema.Formatter, b []byte) ([]byte, error)

func (*RawQuery) DB added in v1.1.6

func (q *RawQuery) DB() *DB

func (*RawQuery) Dialect added in v1.1.6

func (q *RawQuery) Dialect() schema.Dialect

func (*RawQuery) GetConn added in v1.1.6

func (q *RawQuery) GetConn() IConn

func (*RawQuery) GetModel added in v1.1.6

func (q *RawQuery) GetModel() Model

func (*RawQuery) GetTableName added in v1.1.6

func (q *RawQuery) GetTableName() string

func (*RawQuery) NewAddColumn added in v1.1.6

func (q *RawQuery) NewAddColumn() *AddColumnQuery

func (*RawQuery) NewCreateIndex added in v1.1.6

func (q *RawQuery) NewCreateIndex() *CreateIndexQuery

func (*RawQuery) NewCreateTable added in v1.1.6

func (q *RawQuery) NewCreateTable() *CreateTableQuery

func (*RawQuery) NewDelete added in v1.1.6

func (q *RawQuery) NewDelete() *DeleteQuery

func (*RawQuery) NewDropColumn added in v1.1.6

func (q *RawQuery) NewDropColumn() *DropColumnQuery

func (*RawQuery) NewDropIndex added in v1.1.6

func (q *RawQuery) NewDropIndex() *DropIndexQuery

func (*RawQuery) NewDropTable added in v1.1.6

func (q *RawQuery) NewDropTable() *DropTableQuery

func (*RawQuery) NewInsert added in v1.1.6

func (q *RawQuery) NewInsert() *InsertQuery

func (*RawQuery) NewSelect added in v1.1.6

func (q *RawQuery) NewSelect() *SelectQuery

func (*RawQuery) NewTruncateTable added in v1.1.6

func (q *RawQuery) NewTruncateTable() *TruncateTableQuery

func (*RawQuery) NewUpdate added in v1.1.6

func (q *RawQuery) NewUpdate() *UpdateQuery

func (*RawQuery) NewValues added in v1.1.6

func (q *RawQuery) NewValues(model interface{}) *ValuesQuery

func (*RawQuery) Operation added in v1.1.6

func (q *RawQuery) Operation() string

func (*RawQuery) Scan added in v1.1.6

func (q *RawQuery) Scan(ctx context.Context, dest ...interface{}) error

type Safe

type Safe = schema.Safe

type SelectQuery

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

func NewSelectQuery

func NewSelectQuery(db *DB) *SelectQuery

func (*SelectQuery) AppendQuery

func (q *SelectQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error)

func (*SelectQuery) Apply

func (q *SelectQuery) Apply(fn func(*SelectQuery) *SelectQuery) *SelectQuery

Apply calls the fn passing the SelectQuery as an argument.

func (*SelectQuery) ApplyQueryBuilder added in v1.1.4

func (q *SelectQuery) ApplyQueryBuilder(fn func(QueryBuilder) QueryBuilder) *SelectQuery

func (*SelectQuery) Column

func (q *SelectQuery) Column(columns ...string) *SelectQuery

func (*SelectQuery) ColumnExpr

func (q *SelectQuery) ColumnExpr(query string, args ...interface{}) *SelectQuery

func (*SelectQuery) Conn added in v0.1.14

func (q *SelectQuery) Conn(db IConn) *SelectQuery

func (*SelectQuery) Count

func (q *SelectQuery) Count(ctx context.Context) (int, error)

func (*SelectQuery) Distinct

func (q *SelectQuery) Distinct() *SelectQuery

func (*SelectQuery) DistinctOn

func (q *SelectQuery) DistinctOn(query string, args ...interface{}) *SelectQuery

func (*SelectQuery) Except

func (q *SelectQuery) Except(other *SelectQuery) *SelectQuery

func (*SelectQuery) ExceptAll

func (q *SelectQuery) ExceptAll(other *SelectQuery) *SelectQuery

func (*SelectQuery) ExcludeColumn

func (q *SelectQuery) ExcludeColumn(columns ...string) *SelectQuery

func (*SelectQuery) Exec

func (q *SelectQuery) Exec(ctx context.Context, dest ...interface{}) (res sql.Result, err error)

func (*SelectQuery) Exists added in v1.0.7

func (q *SelectQuery) Exists(ctx context.Context) (bool, error)

func (*SelectQuery) For

func (q *SelectQuery) For(s string, args ...interface{}) *SelectQuery

func (*SelectQuery) ForceIndex added in v1.1.6

func (q *SelectQuery) ForceIndex(indexes ...string) *SelectQuery

func (*SelectQuery) ForceIndexForGroupBy added in v1.1.6

func (q *SelectQuery) ForceIndexForGroupBy(indexes ...string) *SelectQuery

func (*SelectQuery) ForceIndexForJoin added in v1.1.6

func (q *SelectQuery) ForceIndexForJoin(indexes ...string) *SelectQuery

func (*SelectQuery) ForceIndexForOrderBy added in v1.1.6

func (q *SelectQuery) ForceIndexForOrderBy(indexes ...string) *SelectQuery

func (*SelectQuery) Group

func (q *SelectQuery) Group(columns ...string) *SelectQuery

func (*SelectQuery) GroupExpr

func (q *SelectQuery) GroupExpr(group string, args ...interface{}) *SelectQuery

func (*SelectQuery) Having

func (q *SelectQuery) Having(having string, args ...interface{}) *SelectQuery

func (*SelectQuery) IgnoreIndex added in v1.1.6

func (q *SelectQuery) IgnoreIndex(indexes ...string) *SelectQuery

func (*SelectQuery) IgnoreIndexForGroupBy added in v1.1.6

func (q *SelectQuery) IgnoreIndexForGroupBy(indexes ...string) *SelectQuery

func (*SelectQuery) IgnoreIndexForJoin added in v1.1.6

func (q *SelectQuery) IgnoreIndexForJoin(indexes ...string) *SelectQuery

func (*SelectQuery) IgnoreIndexForOrderBy added in v1.1.6

func (q *SelectQuery) IgnoreIndexForOrderBy(indexes ...string) *SelectQuery

func (*SelectQuery) Intersect

func (q *SelectQuery) Intersect(other *SelectQuery) *SelectQuery

func (*SelectQuery) IntersectAll

func (q *SelectQuery) IntersectAll(other *SelectQuery) *SelectQuery

func (*SelectQuery) Join

func (q *SelectQuery) Join(join string, args ...interface{}) *SelectQuery

func (*SelectQuery) JoinOn

func (q *SelectQuery) JoinOn(cond string, args ...interface{}) *SelectQuery

func (*SelectQuery) JoinOnOr

func (q *SelectQuery) JoinOnOr(cond string, args ...interface{}) *SelectQuery

func (*SelectQuery) Limit

func (q *SelectQuery) Limit(n int) *SelectQuery

func (*SelectQuery) Model

func (q *SelectQuery) Model(model interface{}) *SelectQuery

func (*SelectQuery) ModelTableExpr

func (q *SelectQuery) ModelTableExpr(query string, args ...interface{}) *SelectQuery

func (*SelectQuery) Offset

func (q *SelectQuery) Offset(n int) *SelectQuery

func (*SelectQuery) Operation added in v1.0.5

func (q *SelectQuery) Operation() string

func (*SelectQuery) Order

func (q *SelectQuery) Order(orders ...string) *SelectQuery

func (*SelectQuery) OrderExpr

func (q *SelectQuery) OrderExpr(query string, args ...interface{}) *SelectQuery

func (*SelectQuery) QueryBuilder added in v1.1.4

func (q *SelectQuery) QueryBuilder() QueryBuilder

func (*SelectQuery) Relation

func (q *SelectQuery) Relation(name string, apply ...func(*SelectQuery) *SelectQuery) *SelectQuery

Relation adds a relation to the query.

func (*SelectQuery) Rows

func (q *SelectQuery) Rows(ctx context.Context) (*sql.Rows, error)

func (*SelectQuery) Scan

func (q *SelectQuery) Scan(ctx context.Context, dest ...interface{}) error

func (*SelectQuery) ScanAndCount

func (q *SelectQuery) ScanAndCount(ctx context.Context, dest ...interface{}) (int, error)

func (*SelectQuery) String added in v1.1.6

func (q *SelectQuery) String() string

func (*SelectQuery) Table

func (q *SelectQuery) Table(tables ...string) *SelectQuery

func (*SelectQuery) TableExpr

func (q *SelectQuery) TableExpr(query string, args ...interface{}) *SelectQuery

func (*SelectQuery) Union

func (q *SelectQuery) Union(other *SelectQuery) *SelectQuery

func (*SelectQuery) UnionAll

func (q *SelectQuery) UnionAll(other *SelectQuery) *SelectQuery

func (*SelectQuery) UseIndex added in v1.1.6

func (q *SelectQuery) UseIndex(indexes ...string) *SelectQuery

func (*SelectQuery) UseIndexForGroupBy added in v1.1.6

func (q *SelectQuery) UseIndexForGroupBy(indexes ...string) *SelectQuery

func (*SelectQuery) UseIndexForJoin added in v1.1.6

func (q *SelectQuery) UseIndexForJoin(indexes ...string) *SelectQuery

func (*SelectQuery) UseIndexForOrderBy added in v1.1.6

func (q *SelectQuery) UseIndexForOrderBy(indexes ...string) *SelectQuery

func (*SelectQuery) Where

func (q *SelectQuery) Where(query string, args ...interface{}) *SelectQuery

func (*SelectQuery) WhereAllWithDeleted

func (q *SelectQuery) WhereAllWithDeleted() *SelectQuery

func (*SelectQuery) WhereDeleted

func (q *SelectQuery) WhereDeleted() *SelectQuery

func (*SelectQuery) WhereGroup

func (q *SelectQuery) WhereGroup(sep string, fn func(*SelectQuery) *SelectQuery) *SelectQuery

func (*SelectQuery) WhereOr

func (q *SelectQuery) WhereOr(query string, args ...interface{}) *SelectQuery

func (*SelectQuery) WherePK

func (q *SelectQuery) WherePK(cols ...string) *SelectQuery

func (*SelectQuery) With

func (q *SelectQuery) With(name string, query schema.QueryAppender) *SelectQuery

type Stmt

type Stmt struct {
	*sql.Stmt
}

type TableModel added in v1.0.9

type TableModel interface {
	Model

	schema.BeforeAppendModelHook
	schema.BeforeScanRowHook
	schema.AfterScanRowHook
	ScanColumn(column string, src interface{}) error

	Table() *schema.Table
	Relation() *schema.Relation
	// contains filtered or unexported methods
}

type TruncateTableQuery

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

func NewTruncateTableQuery

func NewTruncateTableQuery(db *DB) *TruncateTableQuery

func (*TruncateTableQuery) AppendNamedArg added in v0.4.0

func (q *TruncateTableQuery) AppendNamedArg(fmter schema.Formatter, b []byte, name string) ([]byte, bool)

func (*TruncateTableQuery) AppendQuery

func (q *TruncateTableQuery) AppendQuery(
	fmter schema.Formatter, b []byte,
) (_ []byte, err error)

func (*TruncateTableQuery) Cascade added in v1.0.20

func (q *TruncateTableQuery) Cascade() *TruncateTableQuery

func (*TruncateTableQuery) Conn added in v0.1.14

func (*TruncateTableQuery) ContinueIdentity

func (q *TruncateTableQuery) ContinueIdentity() *TruncateTableQuery

func (*TruncateTableQuery) DB

func (q *TruncateTableQuery) DB() *DB

func (*TruncateTableQuery) Dialect added in v1.0.21

func (q *TruncateTableQuery) Dialect() schema.Dialect

func (*TruncateTableQuery) Exec

func (q *TruncateTableQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error)

func (*TruncateTableQuery) GetConn added in v1.0.21

func (q *TruncateTableQuery) GetConn() IConn

func (*TruncateTableQuery) GetModel added in v0.2.0

func (q *TruncateTableQuery) GetModel() Model

func (*TruncateTableQuery) GetTableName added in v1.0.9

func (q *TruncateTableQuery) GetTableName() string

func (*TruncateTableQuery) Model

func (q *TruncateTableQuery) Model(model interface{}) *TruncateTableQuery

func (*TruncateTableQuery) NewAddColumn added in v1.0.21

func (q *TruncateTableQuery) NewAddColumn() *AddColumnQuery

func (*TruncateTableQuery) NewCreateIndex added in v1.0.21

func (q *TruncateTableQuery) NewCreateIndex() *CreateIndexQuery

func (*TruncateTableQuery) NewCreateTable added in v1.0.21

func (q *TruncateTableQuery) NewCreateTable() *CreateTableQuery

func (*TruncateTableQuery) NewDelete added in v1.0.21

func (q *TruncateTableQuery) NewDelete() *DeleteQuery

func (*TruncateTableQuery) NewDropColumn added in v1.0.21

func (q *TruncateTableQuery) NewDropColumn() *DropColumnQuery

func (*TruncateTableQuery) NewDropIndex added in v1.0.21

func (q *TruncateTableQuery) NewDropIndex() *DropIndexQuery

func (*TruncateTableQuery) NewDropTable added in v1.0.21

func (q *TruncateTableQuery) NewDropTable() *DropTableQuery

func (*TruncateTableQuery) NewInsert added in v1.0.21

func (q *TruncateTableQuery) NewInsert() *InsertQuery

func (*TruncateTableQuery) NewSelect added in v1.0.21

func (q *TruncateTableQuery) NewSelect() *SelectQuery

func (*TruncateTableQuery) NewTruncateTable added in v1.0.21

func (q *TruncateTableQuery) NewTruncateTable() *TruncateTableQuery

func (*TruncateTableQuery) NewUpdate added in v1.0.21

func (q *TruncateTableQuery) NewUpdate() *UpdateQuery

func (*TruncateTableQuery) NewValues added in v1.0.21

func (q *TruncateTableQuery) NewValues(model interface{}) *ValuesQuery

func (*TruncateTableQuery) Operation added in v1.0.5

func (q *TruncateTableQuery) Operation() string

func (*TruncateTableQuery) Restrict

func (q *TruncateTableQuery) Restrict() *TruncateTableQuery

func (*TruncateTableQuery) Table

func (q *TruncateTableQuery) Table(tables ...string) *TruncateTableQuery

func (*TruncateTableQuery) TableExpr

func (q *TruncateTableQuery) TableExpr(query string, args ...interface{}) *TruncateTableQuery

type Tx

type Tx struct {
	*sql.Tx
	// contains filtered or unexported fields
}

func (Tx) Begin added in v1.1.6

func (tx Tx) Begin() (Tx, error)

func (Tx) BeginTx added in v1.1.6

func (tx Tx) BeginTx(ctx context.Context, _ *sql.TxOptions) (Tx, error)

BeginTx will save a point in the running transaction.

func (Tx) Commit added in v1.0.16

func (tx Tx) Commit() error

func (Tx) Dialect added in v1.0.20

func (tx Tx) Dialect() schema.Dialect

func (Tx) Exec added in v0.1.3

func (tx Tx) Exec(query string, args ...interface{}) (sql.Result, error)

func (Tx) ExecContext added in v0.1.3

func (tx Tx) ExecContext(
	ctx context.Context, query string, args ...interface{},
) (sql.Result, error)

func (Tx) NewAddColumn added in v0.1.12

func (tx Tx) NewAddColumn() *AddColumnQuery

func (Tx) NewCreateIndex added in v0.1.12

func (tx Tx) NewCreateIndex() *CreateIndexQuery

func (Tx) NewCreateTable added in v0.1.12

func (tx Tx) NewCreateTable() *CreateTableQuery

func (Tx) NewDelete added in v0.1.12

func (tx Tx) NewDelete() *DeleteQuery

func (Tx) NewDropColumn added in v0.1.12

func (tx Tx) NewDropColumn() *DropColumnQuery

func (Tx) NewDropIndex added in v0.1.12

func (tx Tx) NewDropIndex() *DropIndexQuery

func (Tx) NewDropTable added in v0.1.12

func (tx Tx) NewDropTable() *DropTableQuery

func (Tx) NewInsert added in v0.1.12

func (tx Tx) NewInsert() *InsertQuery

func (Tx) NewSelect added in v0.1.12

func (tx Tx) NewSelect() *SelectQuery

func (Tx) NewTruncateTable added in v0.1.12

func (tx Tx) NewTruncateTable() *TruncateTableQuery

func (Tx) NewUpdate added in v0.1.12

func (tx Tx) NewUpdate() *UpdateQuery

func (Tx) NewValues added in v0.1.12

func (tx Tx) NewValues(model interface{}) *ValuesQuery

func (Tx) Query added in v0.1.3

func (tx Tx) Query(query string, args ...interface{}) (*sql.Rows, error)

func (Tx) QueryContext added in v0.1.3

func (tx Tx) QueryContext(
	ctx context.Context, query string, args ...interface{},
) (*sql.Rows, error)

func (Tx) QueryRow added in v0.1.3

func (tx Tx) QueryRow(query string, args ...interface{}) *sql.Row

func (Tx) QueryRowContext added in v0.1.3

func (tx Tx) QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row

func (Tx) Rollback added in v1.0.16

func (tx Tx) Rollback() error

func (Tx) RunInTx added in v1.1.6

func (tx Tx) RunInTx(
	ctx context.Context, _ *sql.TxOptions, fn func(ctx context.Context, tx Tx) error,
) error

type UpdateQuery

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

func NewUpdateQuery

func NewUpdateQuery(db *DB) *UpdateQuery

func (*UpdateQuery) AppendQuery

func (q *UpdateQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error)

func (*UpdateQuery) Apply

func (q *UpdateQuery) Apply(fn func(*UpdateQuery) *UpdateQuery) *UpdateQuery

Apply calls the fn passing the SelectQuery as an argument.

func (*UpdateQuery) ApplyQueryBuilder added in v1.1.4

func (q *UpdateQuery) ApplyQueryBuilder(fn func(QueryBuilder) QueryBuilder) *UpdateQuery

func (*UpdateQuery) Bulk added in v0.2.8

func (q *UpdateQuery) Bulk() *UpdateQuery

func (*UpdateQuery) Column

func (q *UpdateQuery) Column(columns ...string) *UpdateQuery

func (*UpdateQuery) Conn added in v0.1.14

func (q *UpdateQuery) Conn(db IConn) *UpdateQuery

func (*UpdateQuery) ExcludeColumn added in v0.2.0

func (q *UpdateQuery) ExcludeColumn(columns ...string) *UpdateQuery

func (*UpdateQuery) Exec

func (q *UpdateQuery) Exec(ctx context.Context, dest ...interface{}) (sql.Result, error)

func (*UpdateQuery) FQN added in v0.1.3

func (q *UpdateQuery) FQN(column string) Ident

FQN returns a fully qualified column name, for example, table_name.column_name or table_alias.column_alias.

func (*UpdateQuery) ForceIndex added in v1.1.6

func (q *UpdateQuery) ForceIndex(indexes ...string) *UpdateQuery

func (*UpdateQuery) IgnoreIndex added in v1.1.6

func (q *UpdateQuery) IgnoreIndex(indexes ...string) *UpdateQuery

func (*UpdateQuery) Model

func (q *UpdateQuery) Model(model interface{}) *UpdateQuery

func (*UpdateQuery) ModelTableExpr

func (q *UpdateQuery) ModelTableExpr(query string, args ...interface{}) *UpdateQuery

func (*UpdateQuery) OmitZero added in v1.0.10

func (q *UpdateQuery) OmitZero() *UpdateQuery

func (*UpdateQuery) Operation added in v1.0.5

func (q *UpdateQuery) Operation() string

func (*UpdateQuery) QueryBuilder added in v1.1.4

func (q *UpdateQuery) QueryBuilder() QueryBuilder

func (*UpdateQuery) Returning

func (q *UpdateQuery) Returning(query string, args ...interface{}) *UpdateQuery

Returning adds a RETURNING clause to the query.

To suppress the auto-generated RETURNING clause, use `Returning("NULL")`.

func (*UpdateQuery) Set

func (q *UpdateQuery) Set(query string, args ...interface{}) *UpdateQuery

func (*UpdateQuery) SetColumn added in v1.1.0

func (q *UpdateQuery) SetColumn(column string, query string, args ...interface{}) *UpdateQuery

func (*UpdateQuery) String added in v1.1.6

func (q *UpdateQuery) String() string

func (*UpdateQuery) Table

func (q *UpdateQuery) Table(tables ...string) *UpdateQuery

func (*UpdateQuery) TableExpr

func (q *UpdateQuery) TableExpr(query string, args ...interface{}) *UpdateQuery

func (*UpdateQuery) UseIndex added in v1.1.6

func (q *UpdateQuery) UseIndex(indexes ...string) *UpdateQuery

func (*UpdateQuery) Value

func (q *UpdateQuery) Value(column string, query string, args ...interface{}) *UpdateQuery

Value overwrites model value for the column.

func (*UpdateQuery) Where

func (q *UpdateQuery) Where(query string, args ...interface{}) *UpdateQuery

func (*UpdateQuery) WhereAllWithDeleted

func (q *UpdateQuery) WhereAllWithDeleted() *UpdateQuery

func (*UpdateQuery) WhereDeleted

func (q *UpdateQuery) WhereDeleted() *UpdateQuery

func (*UpdateQuery) WhereGroup

func (q *UpdateQuery) WhereGroup(sep string, fn func(*UpdateQuery) *UpdateQuery) *UpdateQuery

func (*UpdateQuery) WhereOr

func (q *UpdateQuery) WhereOr(query string, args ...interface{}) *UpdateQuery

func (*UpdateQuery) WherePK

func (q *UpdateQuery) WherePK(cols ...string) *UpdateQuery

func (*UpdateQuery) With

func (q *UpdateQuery) With(name string, query schema.QueryAppender) *UpdateQuery

type ValuesQuery

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

func NewValuesQuery

func NewValuesQuery(db *DB, model interface{}) *ValuesQuery

func (*ValuesQuery) AppendColumns

func (q *ValuesQuery) AppendColumns(fmter schema.Formatter, b []byte) (_ []byte, err error)

AppendColumns appends the table columns. It is used by CTE.

func (*ValuesQuery) AppendNamedArg added in v0.4.0

func (q *ValuesQuery) AppendNamedArg(fmter schema.Formatter, b []byte, name string) ([]byte, bool)

func (*ValuesQuery) AppendQuery

func (q *ValuesQuery) AppendQuery(fmter schema.Formatter, b []byte) (_ []byte, err error)

func (*ValuesQuery) Column added in v1.0.22

func (q *ValuesQuery) Column(columns ...string) *ValuesQuery

func (*ValuesQuery) Conn added in v0.1.14

func (q *ValuesQuery) Conn(db IConn) *ValuesQuery

func (*ValuesQuery) DB

func (q *ValuesQuery) DB() *DB

func (*ValuesQuery) Dialect added in v1.0.21

func (q *ValuesQuery) Dialect() schema.Dialect

func (*ValuesQuery) GetConn added in v1.0.21

func (q *ValuesQuery) GetConn() IConn

func (*ValuesQuery) GetModel added in v0.2.0

func (q *ValuesQuery) GetModel() Model

func (*ValuesQuery) GetTableName added in v1.0.9

func (q *ValuesQuery) GetTableName() string

func (*ValuesQuery) NewAddColumn added in v1.0.21

func (q *ValuesQuery) NewAddColumn() *AddColumnQuery

func (*ValuesQuery) NewCreateIndex added in v1.0.21

func (q *ValuesQuery) NewCreateIndex() *CreateIndexQuery

func (*ValuesQuery) NewCreateTable added in v1.0.21

func (q *ValuesQuery) NewCreateTable() *CreateTableQuery

func (*ValuesQuery) NewDelete added in v1.0.21

func (q *ValuesQuery) NewDelete() *DeleteQuery

func (*ValuesQuery) NewDropColumn added in v1.0.21

func (q *ValuesQuery) NewDropColumn() *DropColumnQuery

func (*ValuesQuery) NewDropIndex added in v1.0.21

func (q *ValuesQuery) NewDropIndex() *DropIndexQuery

func (*ValuesQuery) NewDropTable added in v1.0.21

func (q *ValuesQuery) NewDropTable() *DropTableQuery

func (*ValuesQuery) NewInsert added in v1.0.21

func (q *ValuesQuery) NewInsert() *InsertQuery

func (*ValuesQuery) NewSelect added in v1.0.21

func (q *ValuesQuery) NewSelect() *SelectQuery

func (*ValuesQuery) NewTruncateTable added in v1.0.21

func (q *ValuesQuery) NewTruncateTable() *TruncateTableQuery

func (*ValuesQuery) NewUpdate added in v1.0.21

func (q *ValuesQuery) NewUpdate() *UpdateQuery

func (*ValuesQuery) NewValues added in v1.0.21

func (q *ValuesQuery) NewValues(model interface{}) *ValuesQuery

func (*ValuesQuery) Operation added in v1.0.5

func (q *ValuesQuery) Operation() string

func (*ValuesQuery) Value added in v1.0.1

func (q *ValuesQuery) Value(column string, expr string, args ...interface{}) *ValuesQuery

Value overwrites model value for the column.

func (*ValuesQuery) WithOrder

func (q *ValuesQuery) WithOrder() *ValuesQuery

Directories

Path Synopsis
dbfixture module
mssqldialect Module
mysqldialect Module
oracledialect Module
pgdialect Module
sqlitedialect Module
driver
pgdriver Module
sqliteshim Module
example
basic Module
belongs-to Module
custom-type Module
fixture Module
has-many Module
has-one Module
migrate Module
model-hooks Module
multi-tenant Module
opentelemetry Module
pg-listen Module
placeholders Module
rel-has-many Module
rel-has-one Module
trivial Module
extra
bunbig Module
bundebug Module
bunotel Module
bunrelic Module
bunslog Module
fixture module
dbtest Module
testfixture module

Jump to

Keyboard shortcuts

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