Documentation
¶
Overview ¶
Package sqlgen2 contains a small API plus a tool that generates SQL functions for specified struct types.
Lighter than a full-blown ORM and simpler than hand-written code, the output makes it easy to write flexible yet reliable and high-performance database code.
See the README for further details: https://github.com/rickb777/sqlgen2/blob/master/README.md
Index ¶
- func LogError(logger *log.Logger, err error) error
- func LogIfError(logger *log.Logger, err error) error
- func LogQuery(logger *log.Logger, query string, args ...interface{})
- func Named(name string, value interface{}) sql.NamedArg
- func NamedArgString(arg sql.NamedArg) string
- type CanPostGet
- type CanPreInsert
- type CanPreUpdate
- type Execer
- type NamedArgList
- func (list NamedArgList) Assignments(d schema.Dialect, from int) []string
- func (list NamedArgList) Contains(name string) bool
- func (list NamedArgList) Exists(fn func(sql.NamedArg) bool) bool
- func (list NamedArgList) Find(fn func(sql.NamedArg) bool) (sql.NamedArg, bool)
- func (list NamedArgList) FindByName(name string) (sql.NamedArg, bool)
- func (list NamedArgList) MkString(sep string) string
- func (list NamedArgList) Names() []string
- func (list NamedArgList) String() string
- func (list NamedArgList) Values() []interface{}
- type Table
- type TableCreator
- type TableName
- type TableWithCrud
- type TableWithIndexes
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func LogError ¶ added in v0.10.0
LogError writes error info to the logger, if the logger is not nil.
func LogIfError ¶ added in v0.10.0
LogIfError writes error info to the logger, if the logger and the error are not nil.
func NamedArgString ¶
NamedArgString converts the argument to a string of the form "name=value".
Types ¶
type CanPostGet ¶ added in v0.8.0
type CanPostGet interface {
PostGet() error
}
CanPostGet is implemented by value types that need a hook to run just after their data is fetched from the database.
type CanPreInsert ¶
type CanPreInsert interface {
PreInsert() error
}
CanPreInsert is implemented by value types that need a hook to run just before their data is inserted into the database.
type CanPreUpdate ¶
type CanPreUpdate interface {
PreUpdate() error
}
CanPreUpdate is implemented by value types that need a hook to run just before their data is updated in the database.
type Execer ¶
type Execer interface {
ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error)
PrepareContext(ctx context.Context, query string) (*sql.Stmt, error)
QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row
}
Execer describes the methods of the core database API. See database/sql/DB and database/sql/Tx.
type NamedArgList ¶
NamedArgList holds a slice of NamedArgs
func (NamedArgList) Assignments ¶
func (list NamedArgList) Assignments(d schema.Dialect, from int) []string
Assignments gets the assignment expressions.
func (NamedArgList) Contains ¶
func (list NamedArgList) Contains(name string) bool
Contains tests whether anything in the list has a certain name.
func (NamedArgList) Exists ¶
func (list NamedArgList) Exists(fn func(sql.NamedArg) bool) bool
Exists verifies that one or more elements of NamedArgList return true for the passed func.
func (NamedArgList) Find ¶
Find returns the first sql.NamedArg that returns true for some function. False is returned if none match.
func (NamedArgList) FindByName ¶
func (list NamedArgList) FindByName(name string) (sql.NamedArg, bool)
FindByName finds the first item with a particular name.
func (NamedArgList) MkString ¶
func (list NamedArgList) MkString(sep string) string
MkString produces a string ontainin all the values separated by sep.
func (NamedArgList) String ¶
func (list NamedArgList) String() string
String produces a string ontainin all the values separated by comma.
func (NamedArgList) Values ¶
func (list NamedArgList) Values() []interface{}
Values gets all the valules
type Table ¶
type Table interface {
// Name gets the table name. without prefix
Name() TableName
// DB gets the wrapped database handle, provided this is not within a transaction.
// Panics if it is in the wrong state - use IsTx() if necessary.
DB() *sql.DB
// Tx gets the wrapped transaction handle, provided this is within a transaction.
// Panics if it is in the wrong state - use IsTx() if necessary.
Tx() *sql.Tx
// IsTx tests whether this is within a transaction.
IsTx() bool
// Ctx gets the current request context.
Ctx() context.Context
// Dialect gets the database dialect.
Dialect() schema.Dialect
// Logger gets the trace logger.
Logger() *log.Logger
// SetLogger sets the trace logger.
SetLogger(logger *log.Logger) Table
// Wrapper gets whatever structure is present, as needed.
Wrapper() interface{}
// SetWrapper sets a user-defined wrapper or container.
SetWrapper(wrapper interface{}) Table
}
Table provides the generic features of each generated table handler.
type TableCreator ¶
type TableName ¶ added in v0.8.0
type TableName struct {
// Prefix on the table name. It can be used as the schema name, in which case
// it should include the trailing dot. Or it can be any prefix as needed.
Prefix string
// The principal name of the table.
Name string
}
TableName holds a two-part name. The prefix part is optional.
func (TableName) PrefixWithoutDot ¶ added in v0.8.0
PrefixWithoutDot return the prefix; if this ends with a dot, the dot is removed.
type TableWithCrud ¶
type TableWithCrud interface {
Table
// QueryOneNullString is a low-level access method for one string. This can be used for function queries and
// such like. If the query selected many rows, only the first is returned; the rest are discarded.
// If not found, the result will be invalid.
QueryOneNullString(query string, args ...interface{}) (result sql.NullString, err error)
// MustQueryOneNullString is a low-level access method for one string. This can be used for function queries and
// such like.
//
// It places a requirement that exactly one result must be found; an error is generated when this expectation is not met.
MustQueryOneNullString(query string, args ...interface{}) (result sql.NullString, err error)
// QueryOneNullInt64 is a low-level access method for one int64. This can be used for 'COUNT(1)' queries and
// such like. If the query selected many rows, only the first is returned; the rest are discarded.
// If not found, the result will be invalid.
QueryOneNullInt64(query string, args ...interface{}) (result sql.NullInt64, err error)
// MustQueryOneNullInt64 is a low-level access method for one int64. This can be used for 'COUNT(1)' queries and
// such like.
//
// It places a requirement that exactly one result must be found; an error is generated when this expectation is not met.
MustQueryOneNullInt64(query string, args ...interface{}) (result sql.NullInt64, err error)
// QueryOneNullFloat64 is a low-level access method for one float64. This can be used for 'AVG(...)' queries and
// such like. If the query selected many rows, only the first is returned; the rest are discarded.
// If not found, the result will be invalid.
QueryOneNullFloat64(query string, args ...interface{}) (result sql.NullFloat64, err error)
// MustQueryOneNullFloat64 is a low-level access method for one float64. This can be used for 'AVG(...)' queries and
// such like.
//
// It places a requirement that exactly one result must be found; an error is generated when this expectation is not met.
MustQueryOneNullFloat64(query string, args ...interface{}) (result sql.NullFloat64, err error)
// ReplaceTableName replaces all occurrences of "{TABLE}" with the table's name.
ReplaceTableName(query string) string
// Exec executes a query.
//
// It places a requirement, which may be nil, on the number of affected rows: this
// controls whether an error is generated when this expectation is not met.
//
// It returns the number of rows affected (if the DB supports that).
Exec(req require.Requirement, query string, args ...interface{}) (int64, error)
// CountWhere counts records that match a 'where' predicate.
CountWhere(where string, args ...interface{}) (count int64, err error)
// Count counts records that match a 'where' predicate.
Count(where where.Expression) (count int64, err error)
// UpdateFields writes new values to the specified columns for rows that match the 'where' predicate.
// It returns the number of rows affected (if the DB supports that).
UpdateFields(req require.Requirement, where where.Expression, fields ...sql.NamedArg) (int64, error)
// Delete deletes rows that match the 'where' predicate.
// It returns the number of rows affected (if the DB supports that).
Delete(req require.Requirement, wh where.Expression) (int64, error)
}
type TableWithIndexes ¶
type TableWithIndexes interface {
TableCreator
// CreateIndexes creates the indexes for the database table.
CreateIndexes(ifNotExist bool) (err error)
// DropIndexes executes a query that drops all the indexes on the database table.
DropIndexes(ifExist bool) (err error)
// CreateTableWithIndexes creates the database table and its indexes.
CreateTableWithIndexes(ifNotExist bool) (err error)
}
Directories
¶
| Path | Synopsis |
|---|---|
|
Package require provides simple constraints to assist with detecting errors in database queries that arise from the wrong number of result (for example no result or too many results).
|
Package require provides simple constraints to assist with detecting errors in database queries that arise from the wrong number of result (for example no result or too many results). |