Version: v4.9.5 Latest Latest

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

Go to latest
Published: Oct 15, 2016 License: BSD-2-Clause Imports: 13 Imported by: 2




View Source
const (
	PrimaryKeyFlag = 1 << iota
View Source
const (
	AfterQueryHookFlag = 1 << iota
View Source
const (
	HasOneRelation = 1 << iota


View Source
var Tables = newTables()


func Create

func Create(db DB, v ...interface{}) error

func Delete

func Delete(db DB, v interface{}) error

func F

func F(field string, params ...interface{}) types.F

func Q

func Q(query string, params ...interface{}) types.Q

func Scan

func Scan(values ...interface{}) valuesModel

func Select added in v4.0.9

func Select(db DB, model interface{}) error

func Underscore

func Underscore(s string) string

Underscore converts "CamelCasedString" to "camel_cased_string".

func Update

func Update(db DB, v interface{}) error


type Collection

type Collection interface {
	// NewModel returns ColumnScanner that is used to scan columns
	// from the current row.
	NewModel() ColumnScanner

	// AddModel adds ColumnScanner to the Collection.
	AddModel(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 added in v4.9.0

type DB interface {
	Model(model ...interface{}) *Query
	Select(model interface{}) error
	Create(model ...interface{}) error
	Update(model interface{}) error
	Delete(model interface{}) error

	Exec(query interface{}, params ...interface{}) (*types.Result, error)
	ExecOne(query interface{}, params ...interface{}) (*types.Result, error)
	Query(coll, query interface{}, params ...interface{}) (*types.Result, error)
	QueryOne(model, query interface{}, params ...interface{}) (*types.Result, error)


DB is a common interface for pg.DB and pg.Tx types.

type Discard

type Discard struct{}

func (Discard) AddModel

func (Discard) AddModel(_ ColumnScanner) error

func (Discard) AfterCreate added in v4.9.3

func (Discard) AfterCreate(DB) error

func (Discard) AfterQuery added in v4.9.3

func (Discard) AfterQuery(DB) error

func (Discard) AfterSelect added in v4.9.2

func (Discard) AfterSelect(DB) error

func (Discard) BeforeCreate added in v4.9.3

func (Discard) BeforeCreate(DB) error

func (Discard) NewModel

func (d Discard) NewModel() ColumnScanner

func (Discard) ScanColumn

func (Discard) ScanColumn(colIdx int, colName string, b []byte) error

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

func (f *Field) AppendValue(b []byte, strct reflect.Value, quote int) []byte

func (*Field) Copy

func (f *Field) Copy() *Field

func (*Field) Has

func (f *Field) Has(flag uint8) bool

func (*Field) IsEmpty

func (f *Field) IsEmpty(strct reflect.Value) bool

func (*Field) OmitEmpty added in v4.0.6

func (f *Field) OmitEmpty(strct reflect.Value) bool

func (*Field) ScanValue

func (f *Field) ScanValue(strct reflect.Value, b []byte) error

func (*Field) Value

func (f *Field) Value(strct reflect.Value) reflect.Value

type Formatter

type Formatter struct {
	// contains filtered or unexported fields

func (Formatter) Append

func (f Formatter) Append(dst []byte, src string, params ...interface{}) []byte

func (Formatter) AppendBytes

func (f Formatter) AppendBytes(dst, src []byte, params ...interface{}) []byte

func (*Formatter) SetParam

func (f *Formatter) SetParam(key string, value interface{})

type Method added in v4.0.3

type Method struct {
	Index int
	// contains filtered or unexported fields

func (*Method) AppendValue added in v4.0.3

func (m *Method) AppendValue(dst []byte, strct reflect.Value, quote int) []byte

func (*Method) Has added in v4.0.3

func (m *Method) Has(flag int8) bool

func (*Method) Value added in v4.0.3

func (m *Method) Value(strct reflect.Value) reflect.Value

type Model

type Model interface {

	AfterQuery(DB) error
	AfterSelect(DB) error

	BeforeCreate(DB) error
	AfterCreate(DB) error

func NewModel

func NewModel(values ...interface{}) (Model, error)

type Query

type Query struct {
	// contains filtered or unexported fields

func NewQuery

func NewQuery(db DB, model ...interface{}) *Query

func (*Query) Alias added in v4.1.6

func (q *Query) Alias(alias string) *Query

func (*Query) Apply added in v4.5.4

func (q *Query) Apply(fn func(*Query) *Query) *Query

Apply calls the fn passing the Query as an argument.

func (*Query) Column

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

func (*Query) ColumnExpr added in v4.0.11

func (q *Query) ColumnExpr(expr string, params ...interface{}) *Query

func (*Query) Count

func (q *Query) Count() (int, error)

Count returns number of rows matching the query using count aggregate function.

func (*Query) CountEstimate added in v4.0.12

func (q *Query) CountEstimate(threshold int) (int, error)

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.

Based on https://wiki.postgresql.org/wiki/Count_estimate

func (*Query) Create

func (q *Query) Create(values ...interface{}) (*types.Result, error)

Create inserts the model.

func (*Query) DB added in v4.8.0

func (q *Query) DB(db DB) *Query

func (*Query) Delete

func (q *Query) Delete() (*types.Result, error)

Delete deletes the model.

func (*Query) Err added in v4.8.0

func (q *Query) Err(err error) *Query

Err sets the err returned when query is executed.

func (*Query) First

func (q *Query) First() error

First selects the first row.

func (*Query) FormatQuery added in v4.5.2

func (q *Query) FormatQuery(dst []byte, query string, params ...interface{}) []byte

func (*Query) Group added in v4.1.0

func (q *Query) Group(group string, params ...interface{}) *Query

func (*Query) Join

func (q *Query) Join(join string, params ...interface{}) *Query

func (*Query) Last

func (q *Query) Last() error

Last selects the last row.

func (*Query) Limit

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

func (*Query) Model added in v4.8.0

func (q *Query) Model(model ...interface{}) *Query

func (*Query) Offset

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

func (*Query) OnConflict

func (q *Query) OnConflict(s string, params ...interface{}) *Query

func (*Query) Order

func (q *Query) Order(order string, params ...interface{}) *Query

func (*Query) Relation added in v4.7.2

func (q *Query) Relation(name string, apply func(*Query) *Query) *Query

func (*Query) Returning

func (q *Query) Returning(columns ...interface{}) *Query

func (*Query) Select

func (q *Query) Select(values ...interface{}) error

Select selects the model.

func (*Query) SelectAndCount added in v4.0.12

func (q *Query) SelectAndCount(values ...interface{}) (count int, err error)

SelectAndCount runs Select and Count in two separate goroutines, waits for them to finish and returns the result.

func (*Query) SelectAndCountEstimate added in v4.0.12

func (q *Query) SelectAndCountEstimate(threshold int) (count int, err error)

SelectAndCountEstimate runs Select and CountEstimate in two separate goroutines, waits for them to finish and returns the result.

func (*Query) SelectOrCreate

func (q *Query) SelectOrCreate(values ...interface{}) (created bool, err error)

SelectOrCreate selects the model creating one if it does not exist.

func (*Query) Set added in v4.0.8

func (q *Query) Set(set string, params ...interface{}) *Query

func (*Query) Table

func (q *Query) Table(names ...string) *Query

func (*Query) Update

func (q *Query) Update(values ...interface{}) (*types.Result, error)

Update updates the model.

func (*Query) Where

func (q *Query) Where(where string, params ...interface{}) *Query

func (*Query) WhereOr added in v4.5.2

func (q *Query) WhereOr(conditions ...*SQL) *Query

WhereOr joins passed conditions using OR operation.

func (*Query) With added in v4.7.9

func (q *Query) With(name string, subq *Query) *Query

type QueryAppender

type QueryAppender interface {
	AppendQuery(dst []byte, params ...interface{}) ([]byte, error)

type QueryFormatter added in v4.5.2

type QueryFormatter interface {
	FormatQuery(dst []byte, query string, params ...interface{}) []byte

type Relation

type Relation struct {
	Type        int
	Polymorphic bool
	Field       *Field
	JoinTable   *Table
	FKs         []*Field

	M2MTableName types.Q
	BasePrefix   string
	JoinPrefix   string

type SQL added in v4.5.2

type SQL struct {
	// contains filtered or unexported fields

func NewSQL added in v4.5.2

func NewSQL(query string, params ...interface{}) *SQL

func (SQL) AppendFormat added in v4.5.2

func (q SQL) AppendFormat(dst []byte, f QueryFormatter) []byte

func (SQL) AppendValue added in v4.5.2

func (q SQL) AppendValue(dst []byte, quote int) ([]byte, error)

func (SQL) String added in v4.5.2

func (q SQL) String() string

type Table

type Table struct {
	Name      types.Q
	Alias     types.Q
	ModelName string
	Type      reflect.Type

	PKs       []*Field
	Fields    []*Field
	FieldsMap map[string]*Field

	Methods map[string]*Method

	Relations map[string]*Relation
	// contains filtered or unexported fields

func (*Table) AddField

func (t *Table) AddField(field *Field)

func (*Table) GetField

func (t *Table) GetField(fieldName string) (*Field, error)

func (*Table) Has added in v4.9.0

func (t *Table) Has(flag int8) bool

Jump to

Keyboard shortcuts

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