Documentation ¶
Overview ¶
Package sqladapter provides common logic for SQL adapters.
Index ¶
- func IsKeyValue(v interface{}) bool
- func NumActiveStatements() int64
- func ReplaceWithDollarSign(in string) string
- func RunTx(d sqlbuilder.Database, ctx context.Context, fn func(tx sqlbuilder.Tx) error) error
- type BaseCollection
- type BaseDatabase
- type BaseTx
- type Collection
- type Database
- type DatabaseTx
- type PartialCollection
- type PartialDatabase
- type Result
- func (r *Result) All(dst interface{}) error
- func (r *Result) And(conds ...interface{}) db.Result
- func (r *Result) Base() interface{}
- func (r *Result) Close() error
- func (r *Result) Count() (uint64, error)
- func (r *Result) Cursor(cursorColumn string) db.Result
- func (r *Result) Delete() error
- func (r *Result) Err() error
- func (r *Result) Exists() (bool, error)
- func (r *Result) Fn(in interface{}) error
- func (r *Result) Group(fields ...interface{}) db.Result
- func (r *Result) Limit(n int) db.Result
- func (r *Result) Next(dst interface{}) bool
- func (r *Result) NextPage(cursorValue interface{}) db.Result
- func (r *Result) Offset(n int) db.Result
- func (r *Result) One(dst interface{}) error
- func (r *Result) OrderBy(fields ...interface{}) db.Result
- func (r *Result) Page(pageNumber uint) db.Result
- func (r *Result) Paginate(pageSize uint) db.Result
- func (r *Result) Prev() immutable.Immutable
- func (r *Result) PrevPage(cursorValue interface{}) db.Result
- func (r *Result) SQLBuilder() sqlbuilder.SQLBuilder
- func (r *Result) Select(fields ...interface{}) db.Result
- func (r *Result) String() string
- func (r *Result) TotalEntries() (uint64, error)
- func (r *Result) TotalPages() (uint, error)
- func (r *Result) Update(values interface{}) error
- func (r *Result) Where(conds ...interface{}) db.Result
- type Stmt
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsKeyValue ¶
func IsKeyValue(v interface{}) bool
IsKeyValue reports whether v is a valid value for a primary key that can be used with Find(pKey).
func NumActiveStatements ¶
func NumActiveStatements() int64
NumActiveStatements returns the global number of prepared statements in use at any point.
func ReplaceWithDollarSign ¶
ReplaceWithDollarSign turns a SQL statament with '?' placeholders into dollar placeholders, like $1, $2, ..., $n
func RunTx ¶
func RunTx(d sqlbuilder.Database, ctx context.Context, fn func(tx sqlbuilder.Tx) error) error
RunTx creates a transaction context and runs fn within it.
Types ¶
type BaseCollection ¶
type BaseCollection interface { // Exists returns true if the collection exists. Exists() bool // Find creates and returns a new result set. Find(conds ...interface{}) db.Result // Truncate removes all items on the collection. Truncate() error // InsertReturning inserts a new item and updates it with the // actual values from the database. InsertReturning(interface{}) error // UpdateReturning updates an item and returns the actual values from the // database. UpdateReturning(interface{}) error // PrimaryKeys returns the table's primary keys. PrimaryKeys() []string }
BaseCollection provides logic for methods that can be shared across all SQL adapters.
func NewBaseCollection ¶
func NewBaseCollection(p PartialCollection) BaseCollection
NewBaseCollection returns a collection with basic methods.
type BaseDatabase ¶
type BaseDatabase interface { db.Settings // Name returns the name of the database. Name() string // Close closes the database session Close() error // Ping checks if the database server is reachable. Ping() error // ClearCache clears all caches the session is using ClearCache() // Collection returns a new collection. Collection(string) db.Collection // Driver returns the underlying driver the session is using Driver() interface{} // WaitForConnection attempts to run the given connection function a fixed // number of times before failing. WaitForConnection(func() error) error // BindSession sets the *sql.DB the session will use. BindSession(*sql.DB) error // Session returns the *sql.DB the session is using. Session() *sql.DB // BindTx binds a transaction to the current session. BindTx(context.Context, *sql.Tx) error // Returns the current transaction the session is using. Transaction() BaseTx // NewClone clones the database using the given PartialDatabase as base. NewClone(PartialDatabase, bool) (BaseDatabase, error) // Context returns the default context the session is using. Context() context.Context // SetContext sets a default context for the session. SetContext(context.Context) // TxOptions returns the default TxOptions for new transactions in the // session. TxOptions() *sql.TxOptions // SetTxOptions sets default TxOptions for the session. SetTxOptions(txOptions sql.TxOptions) }
BaseDatabase provides logic for methods that can be shared across all SQL adapters.
func NewBaseDatabase ¶
func NewBaseDatabase(p PartialDatabase) BaseDatabase
NewBaseDatabase provides a BaseDatabase given a PartialDatabase
type BaseTx ¶
type BaseTx interface { db.Tx // Committed returns true if the transaction was already commited. Committed() bool }
BaseTx provides logic for methods that can be shared across all SQL adapters.
type Collection ¶
type Collection interface { PartialCollection BaseCollection }
Collection represents a SQL table.
type Database ¶
type Database interface { PartialDatabase BaseDatabase }
Database represents a SQL database.
type DatabaseTx ¶
type DatabaseTx interface { BaseDatabase PartialDatabase BaseTx }
DatabaseTx represents a database session within a transaction.
func NewDatabaseTx ¶
func NewDatabaseTx(db Database) DatabaseTx
NewDatabaseTx creates a database session within a transaction.
type PartialCollection ¶
type PartialCollection interface { // Database returns the parent database. Database() Database // Name returns the name of the table. Name() string // Insert inserts a new item into the collection. Insert(interface{}) (interface{}, error) }
PartialCollection defines methods that must be implemented by the adapter.
type PartialDatabase ¶
type PartialDatabase interface { sqlbuilder.SQLBuilder // Collections returns a list of non-system tables from the database. Collections() ([]string, error) // Open opens a new connection Open(db.ConnectionURL) error // TableExists returns an error if the given table does not exist. TableExists(name string) error // LookupName returns the name of the database. LookupName() (string, error) // PrimaryKeys returns all primary keys on the table. PrimaryKeys(name string) ([]string, error) // NewCollection allocates a new collection by name. NewCollection(name string) db.Collection // CompileStatement transforms an internal statement into a format // database/sql can understand. CompileStatement(stmt *exql.Statement, args []interface{}) (string, []interface{}) // ConnectionURL returns the database's connection URL, if any. ConnectionURL() db.ConnectionURL // Err wraps specific database errors (given in string form) and transforms them // into error values. Err(in error) (out error) // NewDatabaseTx begins a transaction block and returns a new // session backed by it. NewDatabaseTx(ctx context.Context) (DatabaseTx, error) }
PartialDatabase defines methods to be implemented by SQL database adapters.
type Result ¶
type Result struct {
// contains filtered or unexported fields
}
func NewResult ¶
func NewResult(builder sqlbuilder.SQLBuilder, table string, conds []interface{}) *Result
NewResult creates and Results a new Result set on the given table, this set is limited by the given exql.Where conditions.
func (*Result) Err ¶
Err returns the last error that has happened with the result set, nil otherwise
func (*Result) Group ¶
Group is used to group Results that have the same value in the same column or columns.
func (*Result) Offset ¶
Offset determines how many documents will be skipped before starting to grab Results.
func (*Result) OrderBy ¶
OrderBy determines sorting of Results according to the provided names. Fields may be prefixed by - (minus) which means descending order, ascending order would be used otherwise.
func (*Result) SQLBuilder ¶
func (r *Result) SQLBuilder() sqlbuilder.SQLBuilder
func (*Result) TotalEntries ¶
func (*Result) TotalPages ¶
type Stmt ¶
Stmt represents a *sql.Stmt that is cached and provides the OnPurge method to allow it to clean after itself.
func NewStatement ¶
NewStatement creates an returns an opened statement