Documentation ¶
Index ¶
- Variables
- func BacktickEscape(db *Database)
- func DoubleQuoteEscape(db *Database)
- func UseArrayInsteadOfJSON(db *Database, b bool)
- type ABSTRACT_TYPE
- type AS
- type And
- type BeforeInsertInterface
- type BeforeUpdateInterface
- type ColumnFilter
- type ColumnFilterPtr
- func (op *ColumnFilterPtr) Gt()
- func (op *ColumnFilterPtr) Gte()
- func (op *ColumnFilterPtr) Lt()
- func (op *ColumnFilterPtr) Lte()
- func (p *ColumnFilterPtr) Nullable() *ColumnFilterPtr
- func (p *ColumnFilterPtr) Optional() *ColumnFilterPtr
- func (p *ColumnFilterPtr) OptionalNull() *ColumnFilterPtr
- func (p *ColumnFilterPtr) OptionalZero() *ColumnFilterPtr
- func (p *ColumnFilterPtr) RequiredNull() *ColumnFilterPtr
- func (p *ColumnFilterPtr) RequiredZero() *ColumnFilterPtr
- func (p *ColumnFilterPtr) WriteSQLTo(w core.SQLWriter) error
- type CommonQuery
- type DBInterface
- type DEL
- type Database
- func (db *Database) Apply(funcs ...func(CommonQuery)) Query
- func (db *Database) Begin() (Tx, error)
- func (db *Database) BeginContext(ctx context.Context) (Tx, error)
- func (db *Database) Count(obj core.ITableName, preds ...interface{}) (uint64, error)
- func (db *Database) DB() *sql.DB
- func (db *Database) Delete(obj core.ITableName) (int64, error)
- func (db *Database) Exec(query string, args ...interface{}) (_ sql.Result, err error)
- func (db *Database) ExecContext(ctx context.Context, query string, args ...interface{}) (_ sql.Result, err error)
- func (db *Database) Exists(column string, exists bool) Query
- func (db *Database) Find(objs core.IFind, preds ...interface{}) error
- func (db *Database) From(table string) Query
- func (db *Database) Get(obj core.IGet, preds ...interface{}) (bool, error)
- func (db *Database) GroupBy(groupBys ...string) Query
- func (db *Database) In(column string, args ...interface{}) Query
- func (db *Database) Insert(objs ...core.IInsert) (int64, error)
- func (db *Database) IsNull(column string, null bool) Query
- func (db *Database) Limit(limit uint64) Query
- func (db *Database) MustExec(query string, args ...interface{}) sql.Result
- func (db *Database) NewQuery() Query
- func (db *Database) NotIn(column string, args ...interface{}) Query
- func (db *Database) Offset(offset uint64) Query
- func (db *Database) Opts() core.Opts
- func (db *Database) OrderBy(orderBys ...string) Query
- func (db *Database) Prefix(sql string, args ...interface{}) Query
- func (db *Database) Preload(table string, preds ...interface{}) Query
- func (db *Database) Query(query string, args ...interface{}) (_ *sql.Rows, err error)
- func (db *Database) QueryContext(ctx context.Context, query string, args ...interface{}) (_ *sql.Rows, err error)
- func (db *Database) QueryRow(query string, args ...interface{}) Row
- func (db *Database) QueryRowContext(ctx context.Context, query string, args ...interface{}) Row
- func (db *Database) SQL(args ...interface{}) Query
- func (db *Database) Select(cols ...string) Query
- func (db *Database) Suffix(sql string, args ...interface{}) Query
- func (db *Database) Table(sql string) Query
- func (db *Database) Update(objs ...core.IUpdate) (int64, error)
- func (db *Database) UpdateAll() Query
- func (db *Database) UpdateMap(m map[string]interface{}) (int64, error)
- func (db *Database) Where(args ...interface{}) Query
- type DynamicLogger
- type Error
- type ErrorMapper
- type Expr
- type ExprString
- type FilterMode
- type Flags
- type INS
- type InPart
- type InsPart
- type IsNullPart
- type JOIN_TYPE
- type LogArgs
- type LogEntry
- type Logger
- type ON
- type Once
- type Option
- type OptionFunc
- type Or
- type Parts
- type PoolConfig
- type Query
- type Row
- type SEL
- type SQLWriter
- type TABLE
- type Tx
- type Type
- type UPD
- type Writer
- func (w *Writer) Args() []interface{}
- func (w *Writer) Len() int
- func (w *Writer) Opts() core.Opts
- func (w *Writer) ScanArgs() []interface{}
- func (w *Writer) String() string
- func (w *Writer) TrimLast(n int)
- func (w *Writer) WriteArg(arg interface{})
- func (w *Writer) WriteArgs(args []interface{})
- func (w *Writer) WriteByte(b byte)
- func (w *Writer) WriteMarker()
- func (w *Writer) WriteMarkers(n int)
- func (w *Writer) WriteName(name string)
- func (w *Writer) WritePrefixedName(schema, name string)
- func (w *Writer) WriteQuery(query []byte)
- func (w *Writer) WriteQueryName(name string)
- func (w *Writer) WriteQueryString(query string)
- func (w *Writer) WriteQueryStringWithPrefix(prefix, query string)
- func (w *Writer) WriteRaw(query []byte)
- func (w *Writer) WriteRawString(query string)
- func (w *Writer) WriteScanArg(arg interface{})
- func (w *Writer) WriteScanArgs(args []interface{})
- type WriterTo
- func Filter(prefix, pred string, args ...interface{}) WriterTo
- func In(column string, args ...interface{}) WriterTo
- func Ins(columns []string, args ...interface{}) WriterTo
- func NewExpr(preds ...interface{}) WriterTo
- func NewInPart(in bool, column string, args ...interface{}) WriterTo
- func NewInsPart(in bool, columns []string, args ...interface{}) WriterTo
- func NewIsNullPart(column string, null bool) WriterTo
- func NotIn(column string, args ...interface{}) WriterTo
- func NotIns(columns []string, args ...interface{}) WriterTo
- type WriterToFunc
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrNoColumn = core.ErrNoColumn ErrNoRows = core.ErrNoRows )
Errors
View Source
var DefaultLogger = Logger(func(entry *LogEntry) { log.Print("query=`", entry.Query, "` arg=", entry.Args, " error=", entry.Error, " t=", entry.Duration) })
DefaultLogger ...
View Source
var DollarMarker = OptionFunc(func(db *Database) {
db.marker = '$'
})
DollarMarker ...
View Source
var QuestionMarker = OptionFunc(func(db *Database) {
db.marker = '?'
})
QuestionMarker ...
Functions ¶
func UseArrayInsteadOfJSON ¶
UseArrayInsteadOfJSON ...
Types ¶
type ABSTRACT_TYPE ¶
type ABSTRACT_TYPE string
type BeforeInsertInterface ¶
type BeforeInsertInterface interface {
BeforeInsert() error
}
type BeforeUpdateInterface ¶
type BeforeUpdateInterface interface {
BeforeUpdate() error
}
type ColumnFilter ¶
type ColumnFilter ColumnFilterPtr
ColumnFilter and ColumnFilterPtr are shorthand for quickly writting predication. Sample code:
db.Where( FilterByID(1234), FilterByState(state).Optional(), FilterByPartnerID(5678).Optional(), ) func FilterByID(id int64) *ColumnFilter { return &ColumnFilter{ Column: "id", Value: id, IsZero: id == 0, } } func FilterByID(id *int64) *ColumnFilterPtr { return &ColumnFilterPtr{ Column: "id", Value: id, IsNil: id == nil, IsZero: id == nil && *id == 0, } }
Explaination of different modes:
func FilterByID(id int64) | mode | id == 0 | id != 0 | notes | |-----------|-------------------|---------|----------------------------------------| | (default) | (error) | id = ? | if id == 0, returns error | | Optional | (skip) | id = ? | if if == 0, skips | | Nullable | IS NULL OR id = 0 | id = ? | if id == 0, translates to "id IS NULL" | func FilterByPtrID(id *int64) | mode | id == nil | *id == 0 | *id != 0 | explain | |--------------|-----------|-------------------|----------|-------------------------------------------------------------------------------------| | (default) | (error) | IS NULL OR id = 0 | id = ? | if id == nil, returns error; else if *id == 0, translates to "id IS NULL OR id = 0" | | Optional | (skip) | IS NULL OR id = 0 | id = ? | if id == nil, skips; else if *id == 0, translates to "id IS NULL OR if = 0" | | Nullable | IS NULL | id = 0 | id = ? | if id == nil, translates to "id IS NULL"; else if *id == 0, translates to "id = 0" | | RequiredZero | (error) | id == 0 | id = ? | | | RequiredNull | (error) | IS NULL | id = ? | | | OptionalZero | (skip) | id == 0 | id = ? | | | OptionalNull | (skip) | IS NULL | id = ? | |
func (*ColumnFilter) Nullable ¶
func (p *ColumnFilter) Nullable() *ColumnFilter
func (*ColumnFilter) Optional ¶
func (p *ColumnFilter) Optional() *ColumnFilter
func (*ColumnFilter) WriteSQLTo ¶
func (p *ColumnFilter) WriteSQLTo(w core.SQLWriter) error
type ColumnFilterPtr ¶
type ColumnFilterPtr struct { Prefix string Column string Value interface{} IsNil bool IsZero bool // contains filtered or unexported fields }
func (*ColumnFilterPtr) Nullable ¶
func (p *ColumnFilterPtr) Nullable() *ColumnFilterPtr
func (*ColumnFilterPtr) Optional ¶
func (p *ColumnFilterPtr) Optional() *ColumnFilterPtr
func (*ColumnFilterPtr) OptionalNull ¶
func (p *ColumnFilterPtr) OptionalNull() *ColumnFilterPtr
func (*ColumnFilterPtr) OptionalZero ¶
func (p *ColumnFilterPtr) OptionalZero() *ColumnFilterPtr
func (*ColumnFilterPtr) RequiredNull ¶
func (p *ColumnFilterPtr) RequiredNull() *ColumnFilterPtr
func (*ColumnFilterPtr) RequiredZero ¶
func (p *ColumnFilterPtr) RequiredZero() *ColumnFilterPtr
func (*ColumnFilterPtr) WriteSQLTo ¶
func (p *ColumnFilterPtr) WriteSQLTo(w core.SQLWriter) error
type CommonQuery ¶
type CommonQuery = core.CommonQuery
type DBInterface ¶
type DBInterface = core.DBInterface
type Database ¶
type Database struct {
// contains filtered or unexported fields
}
Database ...
func MustConnect ¶
MustConnect ...
func (*Database) Apply ¶
func (db *Database) Apply(funcs ...func(CommonQuery)) Query
func (*Database) BeginContext ¶
BeginContext ...
func (*Database) Count ¶
func (db *Database) Count(obj core.ITableName, preds ...interface{}) (uint64, error)
Count ...
func (*Database) ExecContext ¶
func (db *Database) ExecContext(ctx context.Context, query string, args ...interface{}) (_ sql.Result, err error)
ExecContext ...
func (*Database) QueryContext ¶
func (db *Database) QueryContext(ctx context.Context, query string, args ...interface{}) (_ *sql.Rows, err error)
QueryContext ...
func (*Database) QueryRowContext ¶
QueryRowContext ...
type DynamicLogger ¶
type DynamicLogger struct {
// contains filtered or unexported fields
}
DynamicLogger ...
type ErrorMapper ¶
ErrorMapper ...
type ExprString ¶
type ExprString struct { SQL string Args []interface{} }
func (ExprString) WriteSQLTo ¶
func (e ExprString) WriteSQLTo(w core.SQLWriter) error
type FilterMode ¶
type FilterMode int
Bit layout
______ÑO ______NZ Z: Equal to Zero (id = 0) N: Equal to NULL (id IS NULL) O: Optional, won't throw error if the field is empty Ñ: Nullable, the column value can be null
const ( ModeDefault FilterMode = iota ModeOptional FilterMode = 1<<8 + 0 // _O & __ ModeNullable FilterMode = 2<<8 + 1 // Ñ_ & _Z ModeRequiredZero FilterMode = 0<<8 + 1 // __ & _Z ModeRequiredNull FilterMode = 0<<8 + 2 // __ & N_ ModeOptionalZero FilterMode = 1<<8 + 1 // _O & _Z ModeOptionalNull FilterMode = 1<<8 + 2 // _O & N_ )
type InsPart ¶
type InsPart struct {
// contains filtered or unexported fields
}
In with multple columns
type IsNullPart ¶
type IsNullPart struct {
// contains filtered or unexported fields
}
func (IsNullPart) WriteSQLTo ¶
func (p IsNullPart) WriteSQLTo(w core.SQLWriter) error
type LogEntry ¶
type LogEntry struct { Ctx context.Context `json:"-"` Query string `json:"query"` Args LogArgs `json:"args"` Error error `json:"error"` OrigError error `json:"orig_error"` Time time.Time `json:"time"` Duration time.Duration `json:"duration"` Flags `json:"flags"` // Only be set if Type is Commit or Revert TxQueries []*LogEntry `json:"tx_queries"` }
LogEntry ...
type PoolConfig ¶
type PoolConfig struct { MaxLifetime time.Duration // <= 0: connections are reused forever MaxIdle int // default 2 MaxOpen int // default 0: unlimited }
PoolConfig connection pool config
func (PoolConfig) SQLOption ¶
func (cfg PoolConfig) SQLOption(db *Database)
type Writer ¶
type Writer struct {
// contains filtered or unexported fields
}
func (*Writer) WriteMarker ¶
func (w *Writer) WriteMarker()
func (*Writer) WriteMarkers ¶
func (*Writer) WritePrefixedName ¶
func (*Writer) WriteQuery ¶
func (*Writer) WriteQueryName ¶
func (*Writer) WriteQueryString ¶
func (*Writer) WriteQueryStringWithPrefix ¶
func (*Writer) WriteRawString ¶
func (*Writer) WriteScanArg ¶
func (w *Writer) WriteScanArg(arg interface{})
func (*Writer) WriteScanArgs ¶
func (w *Writer) WriteScanArgs(args []interface{})
type WriterToFunc ¶
func (WriterToFunc) WriteSQLTo ¶
func (fn WriterToFunc) WriteSQLTo(w core.SQLWriter) error
Click to show internal directories.
Click to hide internal directories.