Documentation ¶
Index ¶
- Variables
- func InterpolateForDialect(query string, value []interface{}, d Dialect) (string, error)
- func Load(rows *sql.Rows, value interface{}) (int, error)
- func Union(builder ...Builder) interface{ ... }
- func UnionAll(builder ...Builder) interface{ ... }
- type Buffer
- type BuildFunc
- type Builder
- func And(cond ...Builder) Builder
- func Eq(column string, value interface{}) Builder
- func Expr(query string, value ...interface{}) Builder
- func Gt(column string, value interface{}) Builder
- func Gte(column string, value interface{}) Builder
- func Lt(column string, value interface{}) Builder
- func Lte(column string, value interface{}) Builder
- func Neq(column string, value interface{}) Builder
- func Or(cond ...Builder) Builder
- func Proposed(column string) Builder
- type ConflictStmt
- type Connection
- type DeleteBuilder
- type DeleteStmt
- type Dialect
- type EventReceiver
- type Executer
- type I
- type InsertBuilder
- type InsertStmt
- type NullBool
- type NullEventReceiver
- func (n *NullEventReceiver) Event(eventName string)
- func (n *NullEventReceiver) EventErr(eventName string, err error) error
- func (n *NullEventReceiver) EventErrKv(eventName string, err error, kvs map[string]string) error
- func (n *NullEventReceiver) EventKv(eventName string, kvs map[string]string)
- func (n *NullEventReceiver) Timing(eventName string, nanoseconds int64)
- func (n *NullEventReceiver) TimingKv(eventName string, nanoseconds int64, kvs map[string]string)
- type NullFloat64
- type NullInt64
- type NullString
- type NullTime
- type SelectBuilder
- type SelectStmt
- type Session
- func (sess *Session) Begin() (*Tx, error)
- func (sess *Session) BeginWithOpts(opts *sql.TxOptions) (*Tx, error)
- func (sess *Session) DeleteBySql(query string, value ...interface{}) DeleteBuilder
- func (sess *Session) DeleteFrom(table string) DeleteBuilder
- func (sess *Session) Exec(query string, args ...interface{}) (sql.Result, error)
- func (sess *Session) InsertBySql(query string, value ...interface{}) InsertBuilder
- func (sess *Session) InsertInto(table string) InsertBuilder
- func (sess *Session) NewSession(log EventReceiver) *Session
- func (sess *Session) Query(query string, args ...interface{}) (*sql.Rows, error)
- func (sess *Session) Select(column ...string) SelectBuilder
- func (sess *Session) SelectBySql(query string, value ...interface{}) SelectBuilder
- func (sess *Session) Update(table string) UpdateBuilder
- func (sess *Session) UpdateBySql(query string, value ...interface{}) UpdateBuilder
- type SessionRunner
- type Tx
- func (tx *Tx) Commit() error
- func (tx *Tx) DeleteBySql(query string, value ...interface{}) DeleteBuilder
- func (tx *Tx) DeleteFrom(table string) DeleteBuilder
- func (tx *Tx) Exec(query string, args ...interface{}) (sql.Result, error)
- func (tx *Tx) InsertBySql(query string, value ...interface{}) InsertBuilder
- func (tx *Tx) InsertInto(table string) InsertBuilder
- func (tx *Tx) Query(query string, args ...interface{}) (*sql.Rows, error)
- func (tx *Tx) Rollback() error
- func (tx *Tx) RollbackUnlessCommitted()
- func (tx *Tx) Select(column ...string) SelectBuilder
- func (tx *Tx) SelectBySql(query string, value ...interface{}) SelectBuilder
- func (tx *Tx) Update(table string) UpdateBuilder
- func (tx *Tx) UpdateBySql(query string, value ...interface{}) UpdateBuilder
- type UpdateBuilder
- type UpdateStmt
Constants ¶
This section is empty.
Variables ¶
var ( ErrNotFound = errors.New("dbr: not found") ErrNotSupported = errors.New("dbr: not supported") ErrTableNotSpecified = errors.New("dbr: table not specified") ErrColumnNotSpecified = errors.New("dbr: column not specified") ErrInvalidPointer = errors.New("dbr: attempt to load into an invalid pointer") ErrPlaceholderCount = errors.New("dbr: wrong placeholder count") ErrInvalidSliceLength = errors.New("dbr: length of slice is 0. length must be >= 1") ErrCantConvertToTime = errors.New("dbr: can't convert to time.Time") ErrInvalidTimestring = errors.New("dbr: invalid time string") ErrPrewhereNotSupported = errors.New("dbr: PREWHERE statement is not supported") )
package errors
var Now = nowSentinel{}
Now is a value that serializes to the current time
Functions ¶
func InterpolateForDialect ¶
InterpolateForDialect replaces placeholder in query with corresponding value in dialect
Types ¶
type Buffer ¶
type Buffer interface { WriteString(s string) (n int, err error) String() string WriteValue(v ...interface{}) (err error) Value() []interface{} }
Buffer is an interface used by Builder to store intermediate results
type Builder ¶
Builder builds sql in one dialect like MySQL/PostgreSQL e.g. XxxBuilder
func Eq ¶
Eq is `=`. When value is nil, it will be translated to `IS NULL`. When value is a slice, it will be translated to `IN`. Otherwise it will be translated to `=`.
type ConflictStmt ¶
type ConflictStmt interface {
Action(column string, action interface{}) ConflictStmt
}
ConflictStmt is ` ON CONFLICT ...` part of InsertStmt
type Connection ¶
type Connection struct { *sql.DB Dialect Dialect EventReceiver }
Connection is a connection to the database with an EventReceiver to send events, errors, and timings to
func Open ¶
func Open(driver, dsn string, log EventReceiver) (*Connection, error)
Open instantiates a Connection for a given database/sql connection and event receiver
func (*Connection) NewSession ¶
func (conn *Connection) NewSession(log EventReceiver) *Session
NewSession instantiates a Session for the Connection
func (*Connection) NewSessionContext ¶
func (conn *Connection) NewSessionContext(ctx context.Context, log EventReceiver) *Session
NewSessionContext instantiates a Session with context for the Connection
type DeleteBuilder ¶
type DeleteBuilder interface { Builder EventReceiver Executer Where(query interface{}, value ...interface{}) DeleteBuilder Limit(n uint64) DeleteBuilder }
DeleteBuilder builds "DELETE ..." stmt
type DeleteStmt ¶
type DeleteStmt interface { Builder Where(query interface{}, value ...interface{}) DeleteStmt }
DeleteStmt builds `DELETE ...`
func DeleteBySql ¶
func DeleteBySql(query string, value ...interface{}) DeleteStmt
DeleteBySql creates a DeleteStmt from raw query
type Dialect ¶
type Dialect interface { QuoteIdent(id string) string EncodeString(s string) string EncodeBool(b bool) string EncodeTime(t time.Time) string EncodeBytes(b []byte) string Placeholder(n int) string OnConflict(constraint string) string Proposed(column string) string Limit(offset, limit int64) string Prewhere() string }
Dialect abstracts database differences
type EventReceiver ¶
type EventReceiver interface { Event(eventName string) EventKv(eventName string, kvs map[string]string) EventErr(eventName string, err error) error EventErrKv(eventName string, err error, kvs map[string]string) error Timing(eventName string, nanoseconds int64) TimingKv(eventName string, nanoseconds int64, kvs map[string]string) }
EventReceiver gets events from dbr methods for logging purposes
type I ¶
type I string
I is a identifier, which always will be quoted
type InsertBuilder ¶
type InsertBuilder interface { Builder EventReceiver Executer Columns(column ...string) InsertBuilder Values(value ...interface{}) InsertBuilder Record(structValue interface{}) InsertBuilder OnConflictMap(constraint string, actions map[string]interface{}) InsertBuilder OnConflict(constraint string) ConflictStmt Pair(column string, value interface{}) InsertBuilder }
InsertBuilder builds "INSERT ..." stmt
type InsertStmt ¶
type InsertStmt interface { Builder Columns(column ...string) InsertStmt Values(value ...interface{}) InsertStmt Record(structValue interface{}) InsertStmt OnConflictMap(constraint string, actions map[string]interface{}) InsertStmt OnConflict(constraint string) ConflictStmt }
InsertStmt builds `INSERT INTO ...`
func InsertBySql ¶
func InsertBySql(query string, value ...interface{}) InsertStmt
InsertBySql creates an InsertStmt from raw query
type NullBool ¶
NullBool is a type that can be null or a bool
func NewNullBool ¶
func NewNullBool(v interface{}) (n NullBool)
NewNullBool create a NullBool from v
func (NullBool) MarshalJSON ¶
MarshalJSON correctly serializes a NullBool to JSON
func (*NullBool) UnmarshalJSON ¶
UnmarshalJSON correctly deserializes a NullBool from JSON
type NullEventReceiver ¶
type NullEventReceiver struct{}
NullEventReceiver is a sentinel EventReceiver; use it if the caller doesn't supply one
func (*NullEventReceiver) Event ¶
func (n *NullEventReceiver) Event(eventName string)
Event receives a simple notification when various events occur
func (*NullEventReceiver) EventErr ¶
func (n *NullEventReceiver) EventErr(eventName string, err error) error
EventErr receives a notification of an error if one occurs
func (*NullEventReceiver) EventErrKv ¶
EventErrKv receives a notification of an error if one occurs along with optional key/value data
func (*NullEventReceiver) EventKv ¶
func (n *NullEventReceiver) EventKv(eventName string, kvs map[string]string)
EventKv receives a notification when various events occur along with optional key/value data
func (*NullEventReceiver) Timing ¶
func (n *NullEventReceiver) Timing(eventName string, nanoseconds int64)
Timing receives the time an event took to happen
type NullFloat64 ¶
type NullFloat64 struct {
sql.NullFloat64
}
NullFloat64 is a type that can be null or a float64
func NewNullFloat64 ¶
func NewNullFloat64(v interface{}) (n NullFloat64)
NewNullFloat64 create a NullFloat64 from v
func (NullFloat64) MarshalJSON ¶
func (n NullFloat64) MarshalJSON() ([]byte, error)
MarshalJSON correctly serializes a NullFloat64 to JSON
func (*NullFloat64) UnmarshalJSON ¶
func (n *NullFloat64) UnmarshalJSON(b []byte) error
UnmarshalJSON correctly deserializes a NullFloat64 from JSON
type NullInt64 ¶
NullInt64 is a type that can be null or an int
func NewNullInt64 ¶
func NewNullInt64(v interface{}) (n NullInt64)
NewNullInt64 create a NullInt64 from v
func (NullInt64) MarshalJSON ¶
MarshalJSON correctly serializes a NullInt64 to JSON
func (*NullInt64) UnmarshalJSON ¶
UnmarshalJSON correctly deserializes a NullInt64 from JSON
type NullString ¶
type NullString struct {
sql.NullString
}
NullString is a type that can be null or a string
func NewNullString ¶
func NewNullString(v interface{}) (n NullString)
NewNullString create a NullString from v
func (NullString) MarshalJSON ¶
func (n NullString) MarshalJSON() ([]byte, error)
MarshalJSON correctly serializes a NullString to JSON
func (*NullString) UnmarshalJSON ¶
func (n *NullString) UnmarshalJSON(b []byte) error
UnmarshalJSON correctly deserializes a NullString from JSON
type NullTime ¶
NullTime is a type that can be null or a time
func NewNullTime ¶
func NewNullTime(v interface{}) (n NullTime)
NewNullTime create a NullTime from v
func (NullTime) MarshalJSON ¶
MarshalJSON correctly serializes a NullTime to JSON
func (*NullTime) Scan ¶
Scan implements the Scanner interface. The value type must be time.Time or string / []byte (formatted time-string), otherwise Scan fails.
func (*NullTime) UnmarshalJSON ¶
UnmarshalJSON correctly deserializes a NullTime from JSON
type SelectBuilder ¶
type SelectBuilder interface { Builder EventReceiver As(alias string) Builder Comment(text string) SelectBuilder Distinct() SelectBuilder ForUpdate() SelectBuilder From(table interface{}) SelectBuilder FullJoin(table, on interface{}) SelectBuilder GroupBy(col ...string) SelectBuilder Having(query interface{}, value ...interface{}) SelectBuilder InTimezone(loc *time.Location) SelectBuilder Join(table, on interface{}) SelectBuilder LeftJoin(table, on interface{}) SelectBuilder Limit(n uint64) SelectBuilder Offset(n uint64) SelectBuilder OrderAsc(col string) SelectBuilder OrderBy(col string) SelectBuilder OrderDesc(col string) SelectBuilder OrderDir(col string, isAsc bool) SelectBuilder Paginate(page, perPage uint64) SelectBuilder Prewhere(query interface{}, value ...interface{}) SelectBuilder RightJoin(table, on interface{}) SelectBuilder SkipLocked() SelectBuilder Where(query interface{}, value ...interface{}) SelectBuilder // contains filtered or unexported methods }
SelectBuilder build "SELECT" stmt
type SelectStmt ¶
type SelectStmt interface { Builder From(table interface{}) SelectStmt Distinct() SelectStmt Prewhere(query interface{}, value ...interface{}) SelectStmt Where(query interface{}, value ...interface{}) SelectStmt Having(query interface{}, value ...interface{}) SelectStmt GroupBy(col ...string) SelectStmt OrderAsc(col string) SelectStmt OrderDesc(col string) SelectStmt Limit(n uint64) SelectStmt Offset(n uint64) SelectStmt ForUpdate() SelectStmt SkipLocked() SelectStmt Join(table, on interface{}) SelectStmt LeftJoin(table, on interface{}) SelectStmt RightJoin(table, on interface{}) SelectStmt FullJoin(table, on interface{}) SelectStmt AddComment(text string) SelectStmt As(alias string) Builder }
SelectStmt builds `SELECT ...`
func SelectBySql ¶
func SelectBySql(query string, value ...interface{}) SelectStmt
SelectBySql creates a SelectStmt from raw query
type Session ¶
type Session struct { *Connection EventReceiver // contains filtered or unexported fields }
Session represents a business unit of execution for some connection
func (*Session) BeginWithOpts ¶
BeginWithOptions creates a transaction for the given section with ability to set TxOpts
func (*Session) DeleteBySql ¶
func (sess *Session) DeleteBySql(query string, value ...interface{}) DeleteBuilder
DeleteBySql creates a DeleteBuilder from raw query
func (*Session) DeleteFrom ¶
func (sess *Session) DeleteFrom(table string) DeleteBuilder
DeleteFrom creates a DeleteBuilder
func (*Session) Exec ¶
Exec executes a query without returning any rows. The args are for any placeholder parameters in the query.
func (*Session) InsertBySql ¶
func (sess *Session) InsertBySql(query string, value ...interface{}) InsertBuilder
InsertBySql creates a InsertBuilder from raw query
func (*Session) InsertInto ¶
func (sess *Session) InsertInto(table string) InsertBuilder
InsertInto creates a InsertBuilder
func (*Session) NewSession ¶
func (sess *Session) NewSession(log EventReceiver) *Session
NewSession forks current session
func (*Session) Query ¶
Query executes a query that returns rows, typically a SELECT. The args are for any placeholder parameters in the query.
func (*Session) Select ¶
func (sess *Session) Select(column ...string) SelectBuilder
Select creates a SelectBuilder
func (*Session) SelectBySql ¶
func (sess *Session) SelectBySql(query string, value ...interface{}) SelectBuilder
SelectBySql creates a SelectBuilder from raw query
func (*Session) Update ¶
func (sess *Session) Update(table string) UpdateBuilder
Update creates a UpdateBuilder
func (*Session) UpdateBySql ¶
func (sess *Session) UpdateBySql(query string, value ...interface{}) UpdateBuilder
UpdateBySql creates a UpdateBuilder from raw query
type SessionRunner ¶
type SessionRunner interface { Select(column ...string) SelectBuilder SelectBySql(query string, value ...interface{}) SelectBuilder InsertInto(table string) InsertBuilder InsertBySql(query string, value ...interface{}) InsertBuilder Update(table string) UpdateBuilder UpdateBySql(query string, value ...interface{}) UpdateBuilder DeleteFrom(table string) DeleteBuilder DeleteBySql(query string, value ...interface{}) DeleteBuilder }
SessionRunner can do anything that a Session can except start a transaction.
type Tx ¶
type Tx struct { EventReceiver Dialect Dialect *sql.Tx // contains filtered or unexported fields }
Tx is a transaction for the given Session
func (*Tx) DeleteBySql ¶
func (tx *Tx) DeleteBySql(query string, value ...interface{}) DeleteBuilder
DeleteBySql creates a DeleteBuilder from raw query
func (*Tx) DeleteFrom ¶
func (tx *Tx) DeleteFrom(table string) DeleteBuilder
DeleteFrom creates a DeleteBuilder
func (*Tx) Exec ¶
Exec executes a query without returning any rows. The args are for any placeholder parameters in the query.
func (*Tx) InsertBySql ¶
func (tx *Tx) InsertBySql(query string, value ...interface{}) InsertBuilder
InsertBySql creates a InsertBuilder from raw query
func (*Tx) InsertInto ¶
func (tx *Tx) InsertInto(table string) InsertBuilder
InsertInto creates a InsertBuilder
func (*Tx) Query ¶
Query executes a query that returns rows, typically a SELECT. The args are for any placeholder parameters in the query.
func (*Tx) RollbackUnlessCommitted ¶
func (tx *Tx) RollbackUnlessCommitted()
RollbackUnlessCommitted rollsback the transaction unless it has already been committed or rolled back. Useful to defer tx.RollbackUnlessCommitted() -- so you don't have to handle N failure cases Keep in mind the only way to detect an error on the rollback is via the event log.
func (*Tx) Select ¶
func (tx *Tx) Select(column ...string) SelectBuilder
Select creates a SelectBuilder
func (*Tx) SelectBySql ¶
func (tx *Tx) SelectBySql(query string, value ...interface{}) SelectBuilder
SelectBySql creates a SelectBuilder from raw query
func (*Tx) UpdateBySql ¶
func (tx *Tx) UpdateBySql(query string, value ...interface{}) UpdateBuilder
UpdateBySql creates a UpdateBuilder from raw query
type UpdateBuilder ¶
type UpdateBuilder interface { Builder EventReceiver Executer Where(query interface{}, value ...interface{}) UpdateBuilder Set(column string, value interface{}) UpdateBuilder SetMap(m map[string]interface{}) UpdateBuilder Limit(n uint64) UpdateBuilder }
UpdateBuilder builds `UPDATE ...`
type UpdateStmt ¶
type UpdateStmt interface { Builder Where(query interface{}, value ...interface{}) UpdateStmt Set(column string, value interface{}) UpdateStmt SetMap(m map[string]interface{}) UpdateStmt SetRecord(structValue interface{}) UpdateStmt }
UpdateStmt builds `UPDATE ...`
func UpdateBySql ¶
func UpdateBySql(query string, value ...interface{}) UpdateStmt
UpdateBySql creates an UpdateStmt with raw query
Source Files ¶
- buffer.go
- builder.go
- condition.go
- dbr.go
- dbr_go18.go
- delete.go
- delete_builder.go
- dialect.go
- errors.go
- event.go
- expr.go
- ident.go
- insert.go
- insert_builder.go
- interpolate.go
- join.go
- load.go
- now.go
- order.go
- select.go
- select_builder.go
- select_return.go
- transaction.go
- types.go
- union.go
- update.go
- update_builder.go
- util.go