Documentation ¶
Index ¶
- Constants
- Variables
- func BeginTx(ctx context.Context, opts *sql.TxOptions) (*sql.Tx, error)
- func ContextConn(ctx context.Context, conn *sql.Conn) context.Context
- func ContextDB(ctx context.Context, db *sql.DB) context.Context
- func ContextTx(ctx context.Context, tx *sql.Tx) context.Context
- func ErrorNumber(err error) uint16
- func Escape(val any) string
- func Exec(q *SQLQuery) error
- func Fetch[T any](ctx context.Context, where map[string]any) ([]*T, error)
- func FetchOne[T any](ctx context.Context, target *T, where map[string]any) error
- func Get[T any](ctx context.Context, where map[string]any) (*T, error)
- func HasChanged[T any](obj *T) bool
- func Init(dsn string) error
- func InitCfg(cfg *mysql.Config) error
- func Insert[T any](ctx context.Context, target ...*T) error
- func InsertIgnore[T any](ctx context.Context, target ...*T) error
- func IsNotExist(err error) bool
- func Query(q *SQLQuery, cb func(*sql.Rows) error) error
- func QueryContext(ctx context.Context, q *SQLQuery, cb func(*sql.Rows) error) error
- func QuoteName(v string) string
- func Raw(s string) any
- func Replace[T any](ctx context.Context, target ...*T) error
- func Tx(ctx context.Context, cb func(ctx context.Context) error) error
- func Update[T any](ctx context.Context, target ...*T) error
- func V(v driver.Value) driver.Value
- type Comparison
- type Error
- type EscapeTableable
- type EscapeValueable
- type Hex
- type Key
- type Like
- type Name
- type QueryBuilder
- func (q *QueryBuilder) AlsoSelect(fields ...any) *QueryBuilder
- func (q *QueryBuilder) Delete() *QueryBuilder
- func (q *QueryBuilder) From(table any) *QueryBuilder
- func (q *QueryBuilder) Insert(fields ...any) *QueryBuilder
- func (q *QueryBuilder) Into(table EscapeTableable) *QueryBuilder
- func (q *QueryBuilder) Render() (string, error)
- func (q *QueryBuilder) Replace(table EscapeTableable) *QueryBuilder
- func (q *QueryBuilder) Select(fields ...any) *QueryBuilder
- func (q *QueryBuilder) Set(fields ...any) *QueryBuilder
- func (q *QueryBuilder) Table(table any) *QueryBuilder
- func (q *QueryBuilder) Update(table any) *QueryBuilder
- func (q *QueryBuilder) Where(where ...any) *QueryBuilder
- type SQLQuery
- type Set
- type ShowFieldsResult
- type ShowIndexResult
- type TableMeta
- func (t *TableMeta[T]) Fetch(ctx context.Context, where map[string]interface{}) ([]*T, error)
- func (t *TableMeta[T]) FetchOne(ctx context.Context, target *T, where map[string]interface{}) error
- func (t *TableMeta[T]) Get(ctx context.Context, where map[string]interface{}) (*T, error)
- func (t *TableMeta[T]) HasChanged(obj *T) bool
- func (t *TableMeta[T]) Insert(ctx context.Context, targets ...*T) error
- func (t *TableMeta[T]) InsertIgnore(ctx context.Context, targets ...*T) error
- func (t *TableMeta[T]) Name() string
- func (t *TableMeta[T]) Replace(ctx context.Context, targets ...*T) error
- func (t *TableMeta[T]) ScanTo(row *sql.Rows, v *T) error
- func (t *TableMeta[T]) Update(ctx context.Context, target ...*T) error
- type TableMetaIntf
- type WhereAND
- type WhereOR
Constants ¶
const ( // Use " for ANSI SQL, and ` for MySQL's own thing NameQuoteChar = `"` NameQuoteRune = '"' )
Variables ¶
var ErrNotNillable = errors.New("field is nil but cannot be nil")
var FormatTableName = formatCamelSnakeCase
Functions ¶
func ContextConn ¶ added in v0.1.10
func ErrorNumber ¶
func Escape ¶
Escape takes any value and transforms it into a string that can be included in a MySQL query
func Get ¶ added in v0.1.8
Get will instanciate a new object of type T and return a pointer to it after loading from database
func HasChanged ¶ added in v0.1.2
func Insert ¶
Insert is a short way to insert objects into database
psql.Insert(ctx, obj)
Is equivalent to:
psql.Table(obj).Insert(ctx, obj)
All passed objects must be of the same type
func InsertIgnore ¶ added in v0.1.7
func IsNotExist ¶
IsNotExist returns true if the error is relative to a table not existing.
See: https://mariadb.com/kb/en/mariadb-error-codes/
Example: Error 1146: Table 'test.Test_Table1' doesn't exist
func Query ¶
Query performs a query and use a callback to advance results, meaning there is no need to call sql.Rows.Close()
err = psql.Query(psql.Q("SELECT ..."), func(row *sql.Rows) error { ... })
func QueryContext ¶
func Replace ¶ added in v0.1.7
Replace is a short way to replace objects into database
psql.Replace(ctx, obj)
Is equivalent to:
psql.Table(obj).Replace(ctx, obj)
All passed objects must be of the same type
func Tx ¶ added in v0.1.10
Tx can be used to run a function inside a sql transaction for isolation/etc
Types ¶
type Comparison ¶
func Equal ¶
func Equal(a, b any) *Comparison
func (*Comparison) EscapeValue ¶
func (c *Comparison) EscapeValue() string
type EscapeTableable ¶
type EscapeTableable interface {
EscapeTable() string
}
EscapeTableable is a type of value that can be used as a table
type EscapeValueable ¶
type EscapeValueable interface {
EscapeValue() string
}
func F ¶
func F(field ...string) EscapeValueable
F allows passing a field name to the query builder. It can be used in multiple ways:
psql.F("field") psql.F("table.field") psql.F("", "field.with.dots") psql.F("table", "field") psql.F("table.with.dots", "field.with.dots") and more...
type Key ¶
type Key struct {
// contains filtered or unexported fields
}
Name allows specifying the table name when associating a table with a struct
For example: type X struct { KeyName psql.Key `sql:",type=UNIQUE,fields='A,B'"` ... }
type Like ¶
func (*Like) EscapeValue ¶
type Name ¶
type Name struct {
// contains filtered or unexported fields
}
Name allows specifying the table name when associating a table with a struct
For example: type X struct { TableName psql.Name `sql:"X"` ... }
type QueryBuilder ¶
type QueryBuilder struct { Query string Fields []any Tables []EscapeTableable FieldsSet []any WhereData WhereAND GroupBy []any OrderBy []any Limit []int // flags Distinct bool CalcFoundRows bool UpdateIgnore bool InsertIgnore bool ForUpdate bool // contains filtered or unexported fields }
func B ¶
func B() *QueryBuilder
func (*QueryBuilder) AlsoSelect ¶
func (q *QueryBuilder) AlsoSelect(fields ...any) *QueryBuilder
func (*QueryBuilder) Delete ¶
func (q *QueryBuilder) Delete() *QueryBuilder
func (*QueryBuilder) From ¶
func (q *QueryBuilder) From(table any) *QueryBuilder
func (*QueryBuilder) Insert ¶
func (q *QueryBuilder) Insert(fields ...any) *QueryBuilder
func (*QueryBuilder) Into ¶
func (q *QueryBuilder) Into(table EscapeTableable) *QueryBuilder
func (*QueryBuilder) Render ¶
func (q *QueryBuilder) Render() (string, error)
func (*QueryBuilder) Replace ¶
func (q *QueryBuilder) Replace(table EscapeTableable) *QueryBuilder
func (*QueryBuilder) Select ¶
func (q *QueryBuilder) Select(fields ...any) *QueryBuilder
func (*QueryBuilder) Set ¶
func (q *QueryBuilder) Set(fields ...any) *QueryBuilder
func (*QueryBuilder) Table ¶
func (q *QueryBuilder) Table(table any) *QueryBuilder
func (*QueryBuilder) Update ¶
func (q *QueryBuilder) Update(table any) *QueryBuilder
func (*QueryBuilder) Where ¶
func (q *QueryBuilder) Where(where ...any) *QueryBuilder
type ShowFieldsResult ¶
type ShowFieldsResult struct { Virtual Name `sql:",check=0"` Field string `sql:",type=VARCHAR,size=256"` Type string `sql:",type=VARCHAR,size=256"` Collation *string `sql:",type=VARCHAR,size=256,null=1"` Null string `sql:",type=VARCHAR,size=3"` // "YES" or "NO" Key string `sql:",type=VARCHAR,size=3"` // "PRI", "UNI", "MUL" or "" Default *string `sql:",type=VARCHAR,size=256"` Extra string `sql:",type=VARCHAR,size=256"` Privileges string `sql:",type=VARCHAR,size=256"` // "select,insert,update,references" Comment string `sql:",type=VARCHAR,size=256"` }
type ShowIndexResult ¶
type ShowIndexResult struct { Virtual Name `sql:",check=0"` Table string `sql:",type=VARCHAR,size=256"` NonUnique bool `sql:"Non_unique"` KeyName string `sql:"Key_name,type=VARCHAR,size=256"` SeqInIndex int64 `sql:"Seq_in_index"` ColumnName string `sql:"Column_name,type=VARCHAR,size=256"` Collation string `sql:",type=VARCHAR,size=256"` Cardinality int64 SubPart *int64 `sql:"Sub_part"` // Packed? Null string `sql:",type=VARCHAR,size=3"` // "YES" or "" IndexType string `sql:"Index_type,type=VARCHAR,size=256"` // BTREE, HASH Comment string `sql:",type=VARCHAR,size=256"` IndexComment string `sql:"Index_comment,type=VARCHAR,size=256"` }
type TableMeta ¶
type TableMeta[T any] struct { // contains filtered or unexported fields }
func (*TableMeta[T]) HasChanged ¶ added in v0.1.2
func (*TableMeta[T]) InsertIgnore ¶ added in v0.1.7
type TableMetaIntf ¶ added in v0.1.2
type TableMetaIntf interface {
Name() string
}