Documentation ¶
Index ¶
- Constants
- Variables
- func Create(db DB, v ...interface{}) error
- func Delete(db DB, v interface{}) error
- func F(field string, params ...interface{}) types.F
- func Q(query string, params ...interface{}) types.Q
- func Scan(values ...interface{}) valuesModel
- func Select(db DB, model interface{}) error
- func Underscore(s string) string
- func Update(db DB, v interface{}) error
- type Collection
- type ColumnScanner
- type DB
- type Discard
- type Field
- func (f *Field) AppendValue(b []byte, strct reflect.Value, quote int) []byte
- func (f *Field) Copy() *Field
- func (f *Field) Has(flag uint8) bool
- func (f *Field) IsEmpty(strct reflect.Value) bool
- func (f *Field) OmitEmpty(strct reflect.Value) bool
- func (f *Field) ScanValue(strct reflect.Value, b []byte) error
- func (f *Field) Value(strct reflect.Value) reflect.Value
- type Formatter
- type Method
- type Model
- type Query
- func (q *Query) Alias(alias string) *Query
- func (q *Query) Apply(fn func(*Query) *Query) *Query
- func (q *Query) Column(columns ...string) *Query
- func (q *Query) ColumnExpr(expr string, params ...interface{}) *Query
- func (q *Query) Count() (int, error)
- func (q *Query) CountEstimate(threshold int) (int, error)
- func (q *Query) Create(values ...interface{}) (*types.Result, error)
- func (q *Query) DB(db DB) *Query
- func (q *Query) Delete() (*types.Result, error)
- func (q *Query) Err(err error) *Query
- func (q *Query) First() error
- func (q *Query) FormatQuery(dst []byte, query string, params ...interface{}) []byte
- func (q *Query) Group(group string, params ...interface{}) *Query
- func (q *Query) Join(join string, params ...interface{}) *Query
- func (q *Query) Last() error
- func (q *Query) Limit(n int) *Query
- func (q *Query) Model(model ...interface{}) *Query
- func (q *Query) Offset(n int) *Query
- func (q *Query) OnConflict(s string, params ...interface{}) *Query
- func (q *Query) Order(order string, params ...interface{}) *Query
- func (q *Query) Relation(name string, apply func(*Query) *Query) *Query
- func (q *Query) Returning(columns ...interface{}) *Query
- func (q *Query) Select(values ...interface{}) error
- func (q *Query) SelectAndCount(values ...interface{}) (count int, err error)
- func (q *Query) SelectAndCountEstimate(threshold int) (count int, err error)
- func (q *Query) SelectOrCreate(values ...interface{}) (created bool, err error)
- func (q *Query) Set(set string, params ...interface{}) *Query
- func (q *Query) Table(names ...string) *Query
- func (q *Query) Update() (*types.Result, error)
- func (q *Query) Where(where string, params ...interface{}) *Query
- func (q *Query) WhereOr(conditions ...*SQL) *Query
- func (q *Query) With(name string, subq *Query) *Query
- type QueryAppender
- type QueryFormatter
- type Relation
- type SQL
- type Table
Constants ¶
const ( PrimaryKeyFlag = 1 << iota ForeignKeyFlag NullFlag )
const ( AfterSelectHookFlag = 1 << iota BeforeCreateHookFlag AfterCreateHookFlag )
const ( HasOneRelation = 1 << iota BelongsToRelation HasManyRelation Many2ManyRelation )
Variables ¶
var Tables = newTables()
Functions ¶
func Underscore ¶
Underscore converts "CamelCasedString" to "camel_cased_string".
Types ¶
type Collection ¶
type Collection interface { // NewModel returns ColumnScanner that is used to scan columns // from the current row. NewModel(DB) ColumnScanner // AddModel adds ColumnScanner to the Collection. AddModel(DB, ColumnScanner) error }
Collection is a set of models mapped to database rows.
type ColumnScanner ¶
type ColumnScanner interface { // Scan assigns a column value from a row. // // An error should be returned if the value can not be stored // without loss of information. ScanColumn(colIdx int, colName string, b []byte) error }
ColumnScanner is used to scan column values.
type DB ¶
type DB interface { Exec(q interface{}, params ...interface{}) (*types.Result, error) ExecOne(q interface{}, params ...interface{}) (*types.Result, error) Query(coll, query interface{}, params ...interface{}) (*types.Result, error) QueryOne(model, query interface{}, params ...interface{}) (*types.Result, error) QueryFormatter }
DB is a common interface for pg.DB and pg.Tx types.
type Discard ¶
type Discard struct{}
func (Discard) NewModel ¶
func (d Discard) NewModel(_ DB) ColumnScanner
type Field ¶
type Field struct { GoName string // struct field name, e.g. Id SQLName string // SQL name, .e.g. id ColName types.Q Index []int // contains filtered or unexported fields }
func (*Field) AppendValue ¶
type Formatter ¶
type Formatter struct {
// contains filtered or unexported fields
}
func (Formatter) AppendBytes ¶
type Method ¶
type Method struct { Index int // contains filtered or unexported fields }
func (*Method) AppendValue ¶
type Model ¶
type Model interface { Collection ColumnScanner }
type Query ¶
type Query struct {
// contains filtered or unexported fields
}
func (*Query) ColumnExpr ¶
func (*Query) Count ¶
Count returns number of rows matching the query using count aggregate function.
func (*Query) CountEstimate ¶
CountEstimate uses EXPLAIN to get estimated number of rows matching the query. If that number is bigger than the threshold it returns the estimation. Otherwise it executes another query using count aggregate function and returns the result.
func (*Query) FormatQuery ¶
func (*Query) OnConflict ¶
func (*Query) SelectAndCount ¶
SelectAndCount runs Select and Count in two separate goroutines, waits for them to finish and returns the result.
func (*Query) SelectAndCountEstimate ¶
SelectAndCountEstimate runs Select and CountEstimate in two separate goroutines, waits for them to finish and returns the result.
func (*Query) SelectOrCreate ¶
SelectOrCreate selects the model creating one if it does not exist.
type QueryAppender ¶
type QueryFormatter ¶
type SQL ¶
type SQL struct {
// contains filtered or unexported fields
}
func (SQL) AppendFormat ¶
func (q SQL) AppendFormat(dst []byte, f QueryFormatter) []byte
Source Files ¶
- count_estimate.go
- delete.go
- discard.go
- field.go
- format.go
- hook.go
- insert.go
- join.go
- kinds.go
- model.go
- model_m2m.go
- model_many.go
- model_scan.go
- model_slice.go
- model_table.go
- model_table_slice.go
- model_table_struct.go
- orm.go
- query.go
- relation.go
- select.go
- table.go
- tables.go
- tag.go
- underscore.go
- update.go
- util.go