Documentation
¶
Overview ¶
Package hey is a helper that quickly responds to the results of insert, delete, update, select sql statements. You can also use hey to quickly build sql statements.
Index ¶
- Constants
- Variables
- func ArgString(helper Helper, i interface{}) string
- func BasicTypeValue(value interface{}) interface{}
- func BuildCount(s *Get, countColumns ...string) (prepare string, args []interface{})
- func BuildGet(s *Get) (prepare string, args []interface{})
- func BuildOrderByLimitOffset(s *Get) (prepare string)
- func BuildTable(s *Get) (prepare string, args []interface{})
- func BuildUnion(withs []*GetWith, unionType string, gets []*Get) (prepare string, args []interface{})
- func BuildWith(withs []*GetWith) (prepare string, args []interface{})
- func ConcatString(sss ...string) string
- func EqualAll(f Filter, column string, subquery *Get)
- func EqualAny(f Filter, column string, subquery *Get)
- func EvenSlice2Map[K comparable](elems ...K) map[K]K
- func ExpectGet(gets ...*Get) (prepare string, args []interface{})
- func GetCount(get *Get, countColumns ...string) (count int64, err error)
- func GetCountGet(get *Get, result interface{}, countColumn ...string) (int64, error)
- func GetCountQuery(get *Get, query func(rows *sql.Rows) (err error), countColumn ...string) (int64, error)
- func GetExists(get *Get) (exists bool, err error)
- func GetGet(get *Get, result interface{}) error
- func GetQuery(get *Get, query func(rows *sql.Rows) (err error)) error
- func GetScanAll(get *Get, fc func(rows *sql.Rows) error) error
- func GetScanOne(get *Get, dest ...interface{}) error
- func GetViewMap(get *Get) (result []map[string]interface{}, err error)
- func GreaterThanAll(f Filter, column string, subquery *Get)
- func GreaterThanAny(f Filter, column string, subquery *Get)
- func GreaterThanEqualAll(f Filter, column string, subquery *Get)
- func GreaterThanEqualAny(f Filter, column string, subquery *Get)
- func IntersectGet(gets ...*Get) (prepare string, args []interface{})
- func LastNotEmptyString(sss []string) string
- func LessThanAll(f Filter, column string, subquery *Get)
- func LessThanAny(f Filter, column string, subquery *Get)
- func LessThanEqualAll(f Filter, column string, subquery *Get)
- func LessThanEqualAny(f Filter, column string, subquery *Get)
- func MergeMap[K comparable, V interface{}](elems ...map[K]V) map[K]V
- func MergeSlice[V interface{}](elems ...[]V) []V
- func MustAffectedRows(affectedRows int64, err error) error
- func NotEqualAll(f Filter, column string, subquery *Get)
- func NotEqualAny(f Filter, column string, subquery *Get)
- func PrepareString(helper Helper, prepare string, args []interface{}) string
- func PutCase(i *Case)
- func PutFilter(f Filter)
- func RemoveDuplicate(dynamic ...interface{}) (result []interface{})
- func RemoveDuplicates[T comparable](dynamic ...T) (result []T)
- func RemoveSliceMemberByIndex[T interface{}](indexList []int, elementList []T) []T
- func ScanAll(rows *sql.Rows, fc func(rows *sql.Rows) error) (err error)
- func ScanOne(rows *sql.Rows, dest ...interface{}) error
- func ScanSliceStruct(rows *sql.Rows, result interface{}, tag string) error
- func ScanViewMap(rows *sql.Rows) ([]map[string]interface{}, error)
- func Slice2MapNewKey[K comparable](elems []K, createKey func(v K) K) map[K]K
- func Slice2MapNewVal[K comparable, V interface{}](elems []K, createValue func(v K) V) map[K]V
- func SliceIter[V interface{}](iter func(v V) V, elems []V) []V
- func SliceMatchMap[K comparable, X interface{}, Y interface{}](kx map[K]X, handle func(x X, y Y), key func(y Y) K, elems []Y)
- func SqlAlias(name string, alias string) string
- func SqlPrefix(prefix string, name string) string
- func StructInsert(object interface{}, tag string, except []string, allow []string) (fields []string, values [][]interface{})
- func StructModify(object interface{}, tag string, except ...string) (fields []string, values []interface{})
- func StructObtain(object interface{}, tag string, except ...string) (fields []string, values []interface{})
- func StructUpdate(origin interface{}, latest interface{}, tag string, except ...string) (fields []string, values []interface{})
- type Add
- func (s *Add) Add() (int64, error)
- func (s *Add) Comment(comment string) *Add
- func (s *Add) Context(ctx context.Context) *Add
- func (s *Add) Create(create interface{}) *Add
- func (s *Add) Default(fc func(o *Add)) *Add
- func (s *Add) FieldValue(field string, value interface{}) *Add
- func (s *Add) FieldsValues(fields []string, values [][]interface{}) *Add
- func (s *Add) Permit(permit ...string) *Add
- func (s *Add) ReturnId(getReturningColumn func() string, ...) (id int64, err error)
- func (s *Add) SQL() (prepare string, args []interface{})
- func (s *Add) Table(table string) *Add
- func (s *Add) ValuesSubQuery(prepare string, args []interface{}) *Add
- func (s *Add) ValuesSubQueryGet(get *Get, fields ...string) *Add
- func (s *Add) Way() *Way
- type AdjustColumn
- func (s *AdjustColumn) Adjust(adjust func(column string) string, columns ...string) []string
- func (s *AdjustColumn) Alias() string
- func (s *AdjustColumn) Avg(column string, aliases ...string) string
- func (s *AdjustColumn) Column(column string, aliases ...string) string
- func (s *AdjustColumn) ColumnAll(columns ...string) []string
- func (s *AdjustColumn) Count(counts ...string) string
- func (s *AdjustColumn) IfNull(column string, defaultValue string, aliases ...string) string
- func (s *AdjustColumn) IfNullAvg(column string, aliases ...string) string
- func (s *AdjustColumn) IfNullMax(column string, aliases ...string) string
- func (s *AdjustColumn) IfNullMin(column string, aliases ...string) string
- func (s *AdjustColumn) IfNullSum(column string, aliases ...string) string
- func (s *AdjustColumn) Max(column string, aliases ...string) string
- func (s *AdjustColumn) Min(column string, aliases ...string) string
- func (s *AdjustColumn) SetAlias(alias string) *AdjustColumn
- func (s *AdjustColumn) Sum(column string, aliases ...string) string
- type Caller
- type Case
- type Config
- type Del
- type Filter
- type Get
- func (s *Get) AddColumn(column ...string) *Get
- func (s *Get) AddColumnCase(caseList ...func(c *Case)) *Get
- func (s *Get) Alias(alias string) *Get
- func (s *Get) Asc(column string) *Get
- func (s *Get) Column(column ...string) *Get
- func (s *Get) Comment(comment string) *Get
- func (s *Get) Context(ctx context.Context) *Get
- func (s *Get) Count(column ...string) (int64, error)
- func (s *Get) CountGet(result interface{}, countColumn ...string) (int64, error)
- func (s *Get) CountQuery(query func(rows *sql.Rows) (err error), countColumn ...string) (int64, error)
- func (s *Get) CrossJoin(fs ...func(j *GetJoin)) *Get
- func (s *Get) Desc(column string) *Get
- func (s *Get) Distinct(distinct bool) *Get
- func (s *Get) Exists() (bool, error)
- func (s *Get) FullJoin(fs ...func(j *GetJoin)) *Get
- func (s *Get) Get(result interface{}) error
- func (s *Get) Group(group ...string) *Get
- func (s *Get) Having(having Filter) *Get
- func (s *Get) InnerJoin(fs ...func(j *GetJoin)) *Get
- func (s *Get) LeftJoin(fs ...func(j *GetJoin)) *Get
- func (s *Get) Limit(limit int64) *Get
- func (s *Get) Limiter(limiter Limiter) *Get
- func (s *Get) Offset(offset int64) *Get
- func (s *Get) Order(order string, orderMap ...map[string]string) *Get
- func (s *Get) Query(query func(rows *sql.Rows) (err error)) error
- func (s *Get) Raw(prepare string, args []interface{}) *Get
- func (s *Get) RightJoin(fs ...func(j *GetJoin)) *Get
- func (s *Get) SQL() (prepare string, args []interface{})
- func (s *Get) SQLCount(columns ...string) (string, []interface{})
- func (s *Get) ScanAll(fc func(rows *sql.Rows) error) error
- func (s *Get) ScanOne(dest ...interface{}) error
- func (s *Get) SubQuery(prepare string, args []interface{}) *Get
- func (s *Get) SubQueryGet(get *Get, alias ...string) *Get
- func (s *Get) Table(table string, alias ...string) *Get
- func (s *Get) Union(unions ...*Get) *Get
- func (s *Get) UnionAll(unions ...*Get) *Get
- func (s *Get) ViewMap() ([]map[string]interface{}, error)
- func (s *Get) Way() *Way
- func (s *Get) Where(where Filter) *Get
- func (s *Get) With(with ...*GetWith) *Get
- type GetJoin
- func (s *GetJoin) Alias(alias string) *GetJoin
- func (s *GetJoin) On(on string) *GetJoin
- func (s *GetJoin) OnEqual(fields ...string) *GetJoin
- func (s *GetJoin) SQL() (prepare string, args []interface{})
- func (s *GetJoin) SubQuery(prepare string, args []interface{}) *GetJoin
- func (s *GetJoin) SubQueryGet(get *Get, alias ...string) *GetJoin
- func (s *GetJoin) Table(table string) *GetJoin
- func (s *GetJoin) Using(fields ...string) *GetJoin
- type GetWith
- type Helper
- type Identifier
- type Limiter
- type LogSql
- type LogSqlArgs
- type Mod
- func (s *Mod) Comment(comment string) *Mod
- func (s *Mod) Context(ctx context.Context) *Mod
- func (s *Mod) Decr(field string, value interface{}) *Mod
- func (s *Mod) Default(fc func(o *Mod)) *Mod
- func (s *Mod) Expr(field string, expr string, args ...interface{}) *Mod
- func (s *Mod) FieldsValues(fields []string, values []interface{}) *Mod
- func (s *Mod) Incr(field string, value interface{}) *Mod
- func (s *Mod) Mod() (int64, error)
- func (s *Mod) Modify(modify interface{}) *Mod
- func (s *Mod) Permit(permit ...string) *Mod
- func (s *Mod) SQL() (prepare string, args []interface{})
- func (s *Mod) Set(field string, value interface{}) *Mod
- func (s *Mod) SetCase(field string, value func(c *Case)) *Mod
- func (s *Mod) SetSQL() (prepare string, args []interface{})
- func (s *Mod) Table(table string) *Mod
- func (s *Mod) Update(originObject interface{}, latestObject interface{}, except ...string) *Mod
- func (s *Mod) Way() *Way
- func (s *Mod) Where(where Filter) *Mod
- type MysqlHelper
- func (s *MysqlHelper) BinaryDataToHexString(binaryData []byte) string
- func (s *MysqlHelper) DataSourceName() []byte
- func (s *MysqlHelper) DriverName() []byte
- func (s *MysqlHelper) IfNull(columnName string, columnDefaultValue string) string
- func (s *MysqlHelper) Prepare(prepare string) string
- func (s *MysqlHelper) SetBinaryDataToHexString(binaryDataToHexString func(binaryData []byte) string) Helper
- func (s *MysqlHelper) SetIdentifier(identifier Identifier) Helper
- func (s *MysqlHelper) SetIfNull(ifNull func(columnName string, columnDefaultValue string) string) Helper
- func (s *MysqlHelper) SetPrepare(prepare func(prepare string) string) Helper
- type PostgresHelper
- func (s *PostgresHelper) BinaryDataToHexString(binaryData []byte) string
- func (s *PostgresHelper) DataSourceName() []byte
- func (s *PostgresHelper) DriverName() []byte
- func (s *PostgresHelper) IfNull(columnName string, columnDefaultValue string) string
- func (s *PostgresHelper) Prepare(prepare string) string
- func (s *PostgresHelper) SetBinaryDataToHexString(binaryDataToHexString func(binaryData []byte) string) Helper
- func (s *PostgresHelper) SetIdentifier(identifier Identifier) Helper
- func (s *PostgresHelper) SetIfNull(ifNull func(columnName string, columnDefaultValue string) string) Helper
- func (s *PostgresHelper) SetPrepare(prepare func(prepare string) string) Helper
- type PrepareArgs
- type Reader
- type Sqlite3Helper
- func (s *Sqlite3Helper) BinaryDataToHexString(binaryData []byte) string
- func (s *Sqlite3Helper) DataSourceName() []byte
- func (s *Sqlite3Helper) DriverName() []byte
- func (s *Sqlite3Helper) IfNull(columnName string, columnDefaultValue string) string
- func (s *Sqlite3Helper) Prepare(prepare string) string
- func (s *Sqlite3Helper) SetBinaryDataToHexString(binaryDataToHexString func(binaryData []byte) string) Helper
- func (s *Sqlite3Helper) SetIdentifier(identifier Identifier) Helper
- func (s *Sqlite3Helper) SetIfNull(ifNull func(columnName string, columnDefaultValue string) string) Helper
- func (s *Sqlite3Helper) SetPrepare(prepare func(prepare string) string) Helper
- type Stmt
- func (s *Stmt) Close() (err error)
- func (s *Stmt) Exec(args ...interface{}) (int64, error)
- func (s *Stmt) ExecContext(ctx context.Context, args ...interface{}) (int64, error)
- func (s *Stmt) Execute(args ...interface{}) (sql.Result, error)
- func (s *Stmt) ExecuteContext(ctx context.Context, args ...interface{}) (sql.Result, error)
- func (s *Stmt) Query(query func(rows *sql.Rows) error, args ...interface{}) error
- func (s *Stmt) QueryContext(ctx context.Context, query func(rows *sql.Rows) error, args ...interface{}) error
- func (s *Stmt) QueryRow(query func(rows *sql.Row) error, args ...interface{}) (err error)
- func (s *Stmt) QueryRowContext(ctx context.Context, query func(rows *sql.Row) error, args ...interface{}) error
- func (s *Stmt) TakeAll(result interface{}, args ...interface{}) error
- func (s *Stmt) TakeAllContext(ctx context.Context, result interface{}, args ...interface{}) error
- type SubQuery
- type Way
- func (s *Way) Add(table string) *Add
- func (s *Way) Begin(ctx context.Context, opts ...*sql.TxOptions) (*Way, error)
- func (s *Way) BeginConn(ctx context.Context, conn *sql.Conn, opts ...*sql.TxOptions) (*Way, error)
- func (s *Way) Commit() error
- func (s *Way) DB() *sql.DB
- func (s *Way) Del(table string) *Del
- func (s *Way) Exec(prepare string, args ...interface{}) (int64, error)
- func (s *Way) ExecContext(ctx context.Context, prepare string, args ...interface{}) (int64, error)
- func (s *Way) Execute(prepare string, args ...interface{}) (sql.Result, error)
- func (s *Way) ExecuteContext(ctx context.Context, prepare string, args ...interface{}) (sql.Result, error)
- func (s *Way) F(fs ...Filter) Filter
- func (s *Way) Get(table ...string) *Get
- func (s *Way) GetConfig() *Config
- func (s *Way) GetLogger() *logger.Logger
- func (s *Way) GetReader() Reader
- func (s *Way) Getter(caller Caller, query func(rows *sql.Rows) error, prepare string, ...) error
- func (s *Way) GetterContext(ctx context.Context, caller Caller, query func(rows *sql.Rows) error, ...) (err error)
- func (s *Way) IsRead() bool
- func (s *Way) LogSql(prepare string, args []interface{}) *LogSql
- func (s *Way) Mod(table string) *Mod
- func (s *Way) Now() time.Time
- func (s *Way) Prepare(prepare string, caller ...Caller) (*Stmt, error)
- func (s *Way) PrepareContext(ctx context.Context, prepare string, caller ...Caller) (stmt *Stmt, err error)
- func (s *Way) Query(query func(rows *sql.Rows) error, prepare string, args ...interface{}) error
- func (s *Way) QueryContext(ctx context.Context, query func(rows *sql.Rows) error, prepare string, ...) error
- func (s *Way) QueryRow(query func(row *sql.Row) error, prepare string, args ...interface{}) error
- func (s *Way) QueryRowContext(ctx context.Context, query func(row *sql.Row) error, prepare string, ...) error
- func (s *Way) Read() *Way
- func (s *Way) Rollback() error
- func (s *Way) ScanAll(rows *sql.Rows, fc func(rows *sql.Rows) error) error
- func (s *Way) ScanOne(rows *sql.Rows, dest ...interface{}) error
- func (s *Way) SetConfig(cfg Config) *Way
- func (s *Way) SetLogger(l *logger.Logger) *Way
- func (s *Way) SetReader(reader Reader) *Way
- func (s *Way) Setter(caller Caller, prepare string, args ...interface{}) (int64, error)
- func (s *Way) SetterContext(ctx context.Context, caller Caller, prepare string, args ...interface{}) (int64, error)
- func (s *Way) T() *AdjustColumn
- func (s *Way) TA() *AdjustColumn
- func (s *Way) TB() *AdjustColumn
- func (s *Way) TC() *AdjustColumn
- func (s *Way) TD() *AdjustColumn
- func (s *Way) TE() *AdjustColumn
- func (s *Way) TF() *AdjustColumn
- func (s *Way) TG() *AdjustColumn
- func (s *Way) TakeAll(result interface{}, prepare string, args ...interface{}) error
- func (s *Way) TakeAllContext(ctx context.Context, result interface{}, prepare string, args ...interface{}) error
- func (s *Way) Transaction(ctx context.Context, fc func(tx *Way) error, opts ...*sql.TxOptions) error
- func (s *Way) TransactionIsNil() bool
- func (s *Way) TransactionMessage(message string) *Way
- func (s *Way) TransactionNew(ctx context.Context, fc func(tx *Way) error, opts ...*sql.TxOptions) error
- func (s *Way) TransactionRetry(ctx context.Context, retries int, fc func(tx *Way) error, ...) (err error)
- func (s *Way) WindowFunc(alias ...string) *WindowFunc
- type WindowFunc
- func (s *WindowFunc) Alias(alias string) *WindowFunc
- func (s *WindowFunc) Asc(column string) *WindowFunc
- func (s *WindowFunc) Avg(column string) *WindowFunc
- func (s *WindowFunc) Count(column string) *WindowFunc
- func (s *WindowFunc) DenseRank() *WindowFunc
- func (s *WindowFunc) Desc(column string) *WindowFunc
- func (s *WindowFunc) FirstValue(column string) *WindowFunc
- func (s *WindowFunc) Lag(column string, offset int64, defaultValue any) *WindowFunc
- func (s *WindowFunc) LastValue(column string) *WindowFunc
- func (s *WindowFunc) Lead(column string, offset int64, defaultValue any) *WindowFunc
- func (s *WindowFunc) Max(column string) *WindowFunc
- func (s *WindowFunc) Min(column string) *WindowFunc
- func (s *WindowFunc) NthValue(column string, LineNumber int64) *WindowFunc
- func (s *WindowFunc) Ntile(buckets int64) *WindowFunc
- func (s *WindowFunc) Partition(column ...string) *WindowFunc
- func (s *WindowFunc) Rank() *WindowFunc
- func (s *WindowFunc) Result() string
- func (s *WindowFunc) RowNumber() *WindowFunc
- func (s *WindowFunc) Sum(column string) *WindowFunc
- func (s *WindowFunc) WindowFrame(windowFrame string) *WindowFunc
- func (s *WindowFunc) WithFunc(withFunc string) *WindowFunc
Constants ¶
const ( State0 = 0 State1 = 1 StateY = "Y" StateN = "N" StateYes = "YES" StateNo = "NO" StateOn = "ON" StateOff = "OFF" )
Common data values for table.column.
const ( DriverNameMysql = "mysql" DriverNamePostgres = "postgres" DriverNameSqlite3 = "sqlite3" )
const ( // DefaultTag Mapping of default database column name and struct tag. DefaultTag = "db" // EmptyString Empty string value. EmptyString = "" )
const ( SqlPoint = "." SqlSpace = " " SqlStar = "*" SqlAs = "AS" SqlAsc = "ASC" SqlDesc = "DESC" SqlUnion = "UNION" SqlUnionAll = "UNION ALL" SqlJoinInner = "INNER JOIN" SqlJoinLeft = "LEFT JOIN" SqlJoinRight = "RIGHT JOIN" SqlJoinFull = "FULL JOIN" SqlJoinCross = "CROSS JOIN" SqlAnd = "AND" SqlOr = "OR" SqlNot = "NOT" SqlNull = "NULL" SqlPlaceholder = "?" SqlEqual = "=" SqlNotEqual = "<>" SqlGreaterThan = ">" SqlGreaterThanEqual = ">=" SqlLessThan = "<" SqlLessThanEqual = "<=" SqlAll = "ALL" SqlAny = "ANY" SqlLeftSmallBracket = "(" SqlRightSmallBracket = ")" SqlExpect = "EXCEPT" SqlIntersect = "INTERSECT" SqlDistinct = "DISTINCT" )
const ( AliasA = "a" AliasB = "b" AliasC = "c" AliasD = "d" AliasE = "e" AliasF = "f" AliasG = "g" )
const (
DefaultAliasNameCount = "counts"
)
Variables ¶
var ( DefaultConfig = Config{ Scan: ScanSliceStruct, ScanTag: DefaultTag, DeleteMustUseWhere: true, UpdateMustUseWhere: true, TransactionMaxDuration: time.Second * 5, WarnDuration: time.Millisecond * 200, } )
var ( // ErrNoAffectedRows No rows are affected when execute SQL. ErrNoAffectedRows = errors.New("database: there are no affected rows") )
Functions ¶
func BasicTypeValue ¶
func BasicTypeValue(value interface{}) interface{}
func BuildCount ¶
BuildCount Build count query. SELECT COUNT(*) AS count FROM ( [WITH xxx] SELECT xxx FROM xxx [INNER JOIN xxx ON xxx] [WHERE xxx] [GROUP BY xxx [HAVING xxx]] ) AS a SELECT COUNT(*) AS count FROM ( query1 UNION [ALL] query2 [UNION [ALL] ...] ) AS a
func BuildGet ¶
BuildGet Build a complete query. [WITH xxx] SELECT xxx FROM xxx [INNER JOIN xxx ON xxx] [WHERE xxx] [GROUP BY xxx [HAVING xxx]] [ORDER BY xxx] [LIMIT xxx [OFFSET xxx]]
func BuildOrderByLimitOffset ¶
BuildOrderByLimitOffset Build query table of ORDER BY, LIMIT, OFFSET. [ORDER BY xxx] [LIMIT xxx [OFFSET xxx]]
func BuildTable ¶
BuildTable Build query table (without ORDER BY, LIMIT, OFFSET). [WITH xxx] SELECT xxx FROM xxx [INNER JOIN xxx ON xxx] [WHERE xxx] [GROUP BY xxx [HAVING xxx]]
func BuildUnion ¶
func BuildUnion(withs []*GetWith, unionType string, gets []*Get) (prepare string, args []interface{})
BuildUnion Combines the results of two or more SELECT queries into a single result set. [WITH xxx] /*query1*/( [WITH xxx] SELECT xxx FROM xxx [INNER JOIN xxx ON xxx] [WHERE xxx] [GROUP BY xxx [HAVING xxx]] [ORDER BY xxx] [LIMIT xxx [OFFSET xxx]]) UNION [ALL] /*query2*/( [WITH xxx] SELECT xxx FROM xxx [INNER JOIN xxx ON xxx] [WHERE xxx] [GROUP BY xxx [HAVING xxx]] [ORDER BY xxx] [LIMIT xxx [OFFSET xxx]]) [ORDER BY xxx] [LIMIT xxx [OFFSET xxx]]
func EqualAll ¶
EqualAll There are few practical application scenarios because all values are required to be equal.
func EvenSlice2Map ¶
func EvenSlice2Map[K comparable](elems ...K) map[K]K
EvenSlice2Map even slice to map.
func GetCountGet ¶
GetCountGet execute the built SQL statement and scan query result, count + get.
func GetCountQuery ¶
func GetCountQuery(get *Get, query func(rows *sql.Rows) (err error), countColumn ...string) (int64, error)
GetCountQuery execute the built SQL statement and scan query result, count + query.
func GetScanAll ¶
GetScanAll execute the built SQL statement and scan all from the query results.
func GetScanOne ¶
GetScanOne execute the built SQL statement and scan at most once from the query results.
func GetViewMap ¶
GetViewMap execute the built SQL statement and scan all from the query results.
func GreaterThanAll ¶
GreaterThanAll Implement the filter condition: column > ALL ( subquery ) .
func GreaterThanAny ¶
GreaterThanAny Implement the filter condition: column > ANY ( subquery ) .
func GreaterThanEqualAll ¶
GreaterThanEqualAll Implement the filter condition: column >= ALL ( subquery ) .
func GreaterThanEqualAny ¶
GreaterThanEqualAny Implement the filter condition: column >= ANY ( subquery ) .
func IntersectGet ¶
IntersectGet (query1) INTERSECT (query2) INTERSECT (query3)...
func LastNotEmptyString ¶
LastNotEmptyString get last not empty string, return empty string if it does not exist.
func LessThanAll ¶
LessThanAll Implement the filter condition: column < ALL ( subquery ) .
func LessThanAny ¶
LessThanAny Implement the filter condition: column < ANY ( subquery ) .
func LessThanEqualAll ¶
LessThanEqualAll Implement the filter condition: column <= ALL ( subquery ) .
func LessThanEqualAny ¶
LessThanEqualAny Implement the filter condition: column <= ANY ( subquery ) .
func MergeMap ¶
func MergeMap[K comparable, V interface{}](elems ...map[K]V) map[K]V
MergeMap merge multiple maps.
func MergeSlice ¶
func MergeSlice[V interface{}](elems ...[]V) []V
MergeSlice merge multiple slices.
func MustAffectedRows ¶
MustAffectedRows at least one row is affected.
func NotEqualAll ¶
NotEqualAll Implement the filter condition: column <> ALL ( subquery ) .
func NotEqualAny ¶
NotEqualAny Implement the filter condition: column <> ANY ( subquery ) .
func PrepareString ¶
PrepareString Merge executed SQL statements and parameters.
func RemoveDuplicate ¶
func RemoveDuplicate(dynamic ...interface{}) (result []interface{})
RemoveDuplicate remove duplicate element.
func RemoveDuplicates ¶
func RemoveDuplicates[T comparable](dynamic ...T) (result []T)
RemoveDuplicates remove duplicate element.
func RemoveSliceMemberByIndex ¶
func RemoveSliceMemberByIndex[T interface{}](indexList []int, elementList []T) []T
RemoveSliceMemberByIndex delete slice member by index.
func ScanSliceStruct ¶
ScanSliceStruct Scan the query result set into the receiving object the receiving object type is *[]AnyStruct or *[]*AnyStruct.
func ScanViewMap ¶
ScanViewMap Scan query result to []map[string]interface{}, view query result.
func Slice2MapNewKey ¶
func Slice2MapNewKey[K comparable](elems []K, createKey func(v K) K) map[K]K
Slice2MapNewKey make map by slice, create key.
func Slice2MapNewVal ¶
func Slice2MapNewVal[K comparable, V interface{}](elems []K, createValue func(v K) V) map[K]V
Slice2MapNewVal make map by slice, create value.
func SliceIter ¶
func SliceIter[V interface{}](iter func(v V) V, elems []V) []V
SliceIter slice iteration.
func SliceMatchMap ¶
func SliceMatchMap[K comparable, X interface{}, Y interface{}](kx map[K]X, handle func(x X, y Y), key func(y Y) K, elems []Y)
SliceMatchMap use the `key` value of each element in `elems` to match in the map, and call `handle` if the match is successful.
func StructInsert ¶
func StructInsert(object interface{}, tag string, except []string, allow []string) (fields []string, values [][]interface{})
StructInsert object should be one of struct{}, *struct{}, []struct, []*struct{}, *[]struct{}, *[]*struct{}. get fields and values based on struct tag.
func StructModify ¶
func StructModify(object interface{}, tag string, except ...string) (fields []string, values []interface{})
StructModify object should be one of struct{}, *struct{} get the fields and values that need to be modified.
func StructObtain ¶
func StructObtain(object interface{}, tag string, except ...string) (fields []string, values []interface{})
StructObtain object should be one of struct{}, *struct{} for get all fields and values.
func StructUpdate ¶
func StructUpdate(origin interface{}, latest interface{}, tag string, except ...string) (fields []string, values []interface{})
StructUpdate compare origin and latest for update.
Types ¶
type Add ¶
type Add struct {
// contains filtered or unexported fields
}
Add for INSERT.
func (*Add) Create ¶
Create value of create should be one of struct{}, *struct{}, map[string]interface{}, []struct, []*struct{}, *[]struct{}, *[]*struct{}.
func (*Add) FieldValue ¶
FieldValue append field-value for insert one or more rows.
func (*Add) FieldsValues ¶
FieldsValues set fields and values.
func (*Add) ReturnId ¶ added in v2.0.7
func (s *Add) ReturnId(getReturningColumn func() string, getId func(ctx context.Context, stmt *Stmt, args []interface{}) (id int64, err error)) (id int64, err error)
ReturnId execute the built SQL statement, returning auto-increment field value.
func (*Add) ValuesSubQuery ¶
ValuesSubQuery values is a query SQL statement.
func (*Add) ValuesSubQueryGet ¶
ValuesSubQueryGet values is a query SQL statement.
type AdjustColumn ¶ added in v2.0.6
type AdjustColumn struct {
// contains filtered or unexported fields
}
func NewAdjustColumn ¶ added in v2.0.6
func NewAdjustColumn(way *Way, aliases ...string) *AdjustColumn
func (*AdjustColumn) Adjust ¶ added in v2.0.6
func (s *AdjustColumn) Adjust(adjust func(column string) string, columns ...string) []string
Adjust Batch adjust columns.
func (*AdjustColumn) Alias ¶ added in v2.0.6
func (s *AdjustColumn) Alias() string
Alias Get the alias name value.
func (*AdjustColumn) Avg ¶ added in v2.0.6
func (s *AdjustColumn) Avg(column string, aliases ...string) string
Avg AVG(column[, alias])
func (*AdjustColumn) Column ¶ added in v2.0.6
func (s *AdjustColumn) Column(column string, aliases ...string) string
Column Add table name prefix to single column name, allowing column alias to be set.
func (*AdjustColumn) ColumnAll ¶ added in v2.0.6
func (s *AdjustColumn) ColumnAll(columns ...string) []string
ColumnAll Add table name prefix to column names in batches.
func (*AdjustColumn) Count ¶ added in v2.0.6
func (s *AdjustColumn) Count(counts ...string) string
Count Example Count(): `COUNT(*) AS counts` Count("total"): `COUNT(*) AS total` Count("1", "total"): `COUNT(1) AS total` Count("id", "counts"): `COUNT(id) AS counts`
func (*AdjustColumn) IfNull ¶ added in v2.0.6
func (s *AdjustColumn) IfNull(column string, defaultValue string, aliases ...string) string
IfNull If the value is NULL, set the default value.
func (*AdjustColumn) IfNullAvg ¶ added in v2.0.6
func (s *AdjustColumn) IfNullAvg(column string, aliases ...string) string
IfNullAvg IF_NULL(AVG(column),0)[ AS column_name]
func (*AdjustColumn) IfNullMax ¶ added in v2.0.6
func (s *AdjustColumn) IfNullMax(column string, aliases ...string) string
IfNullMax IF_NULL(MAX(column),0)[ AS column_name]
func (*AdjustColumn) IfNullMin ¶ added in v2.0.6
func (s *AdjustColumn) IfNullMin(column string, aliases ...string) string
IfNullMin IF_NULL(MIN(column),0)[ AS column_name]
func (*AdjustColumn) IfNullSum ¶ added in v2.0.6
func (s *AdjustColumn) IfNullSum(column string, aliases ...string) string
IfNullSum IF_NULL(SUM(column),0)[ AS column_name]
func (*AdjustColumn) Max ¶ added in v2.0.6
func (s *AdjustColumn) Max(column string, aliases ...string) string
Max MAX(column[, alias])
func (*AdjustColumn) Min ¶ added in v2.0.6
func (s *AdjustColumn) Min(column string, aliases ...string) string
Min MIN(column[, alias])
func (*AdjustColumn) SetAlias ¶ added in v2.0.6
func (s *AdjustColumn) SetAlias(alias string) *AdjustColumn
SetAlias Set the alias name value.
type Caller ¶
type Caller interface { PrepareContext(ctx context.Context, query string) (*sql.Stmt, error) QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error) ExecContext(ctx context.Context, query string, args ...interface{}) (sql.Result, error) }
Caller The implementation object is usually one of *sql.Conn, *sql.DB, *sql.Tx.
type Case ¶
type Case struct {
// contains filtered or unexported fields
}
Case Implementing SQL CASE.
type Config ¶
type Config struct { // Scan Scan data into structure. Scan func(rows *sql.Rows, result interface{}, tag string) error // ScanTag Scan data to tag mapping on structure. ScanTag string // Helper Helpers for handling different types of databases. Helper Helper // DeleteMustUseWhere Deletion of data must be filtered using conditions. DeleteMustUseWhere bool // UpdateMustUseWhere Updated data must be filtered using conditions. UpdateMustUseWhere bool // TransactionOptions Start transaction. TransactionOptions *sql.TxOptions // TransactionMaxDuration Maximum transaction execution time. TransactionMaxDuration time.Duration // WarnDuration SQL execution time warning threshold. WarnDuration time.Duration }
Config Configure of Way.
type Filter ¶
type Filter interface { // SQL Generate conditional filtering SQL statements and their parameters. SQL() (string, []interface{}) // Clean Clear the existing conditional filtering of the current object. Clean() Filter // IsEmpty Is the current object an empty object? IsEmpty() bool // Not Negate the result of the current conditional filter object. Multiple negations are allowed. Not() Filter // And Use logical operator `AND` to combine custom conditions. And(prepare string, args ...interface{}) Filter // Or Use logical operator `OR` to combine custom conditions. Or(prepare string, args ...interface{}) Filter // Group Add a new condition group, which is connected by the `AND` logical operator by default. Group(group func(g Filter)) Filter // OrGroup Add a new condition group, which is connected by the `OR` logical operator by default. OrGroup(group func(g Filter)) Filter // Use Implement import a set of conditional filter objects into the current object. Use(fs ...Filter) Filter // New Create a new conditional filter object based on a set of conditional filter objects. New(fs ...Filter) Filter // GreaterThan Implement conditional filtering: column > value . GreaterThan(column string, value interface{}) Filter // GreaterThanEqual Implement conditional filtering: column >= value . GreaterThanEqual(column string, value interface{}) Filter // LessThan Implement conditional filtering: column < value . LessThan(column string, value interface{}) Filter // LessThanEqual Implement conditional filtering: column <= value . LessThanEqual(column string, value interface{}) Filter // Equal Implement conditional filtering: column = value . Equal(column string, value interface{}) Filter // Between Implement conditional filtering: column BETWEEN value1 AND value2 . Between(column string, start interface{}, end interface{}) Filter // In Implement conditional filtering: column IN ( value1, value2, value3... ) . In(column string, values ...interface{}) Filter // InSql Implement conditional filtering: column IN ( subquery ) . InSql(column string, prepare string, args ...interface{}) Filter // InCols Implement conditional filtering: ( column1, column2, column3... ) IN ( ( value1, value2, value3... ), ( value21, value22, value23... )... ) . InCols(columns []string, values ...[]interface{}) Filter // InColsSql Implement conditional filtering: ( column1, column2, column3... ) IN ( subquery ) . InColsSql(columns []string, prepare string, args ...interface{}) Filter // Exists Implement conditional filtering: EXISTS ( subquery ) . Exists(prepare string, args ...interface{}) Filter // Like Implement conditional filtering: column LIKE value . Like(column string, value interface{}) Filter // IsNull Implement conditional filtering: column IS NULL . IsNull(column string) Filter // InGet Implement conditional filtering: column IN ( subquery ) . InGet(column string, get *Get) Filter // InColsGet Implement conditional filtering: ( column1, column2, column3... ) IN ( subquery ) . InColsGet(columns []string, get *Get) Filter // ExistsGet Implement conditional filtering: EXISTS ( subquery ) . ExistsGet(get *Get) Filter // NotEqual Implement conditional filtering: column <> value . NotEqual(column string, value interface{}) Filter // NotBetween Implement conditional filtering: column NOT BETWEEN value1 AND value2 . NotBetween(column string, start interface{}, end interface{}) Filter // NotIn Implement conditional filtering: column NOT IN ( value1, value2, value3... ) . NotIn(column string, values ...interface{}) Filter // NotInCols Implement conditional filtering: ( column1, column2, column3... ) NOT IN ( ( value1, value2, value3... ), ( value21, value22, value23... )... ) . NotInCols(columns []string, values ...[]interface{}) Filter // NotLike Implement conditional filtering: column NOT LIKE value . NotLike(column string, value interface{}) Filter // IsNotNull Implement conditional filtering: column IS NOT NULL . IsNotNull(column string) Filter }
Filter Implement SQL statement condition filtering.
type Get ¶
type Get struct {
// contains filtered or unexported fields
}
Get for SELECT.
func (*Get) AddColumnCase ¶
AddColumnCase append the columns list of query.
func (*Get) Alias ¶
Alias for table alias name, don't forget to call the current method when the table is a SQL statement.
func (*Get) CountQuery ¶
func (s *Get) CountQuery(query func(rows *sql.Rows) (err error), countColumn ...string) (int64, error)
CountQuery execute the built SQL statement and scan query result, count + query.
func (*Get) Distinct ¶
Distinct Remove duplicate records: one field value or a combination of multiple fields.
func (*Get) Order ¶
Order set the column sorting list in batches through regular expressions according to the request parameter value.
func (*Get) ScanOne ¶
ScanOne execute the built SQL statement and scan at most once from the query results.
func (*Get) SubQueryGet ¶
SubQueryGet table is a query SQL statement.
func (*Get) Union ¶
Union for union(After calling the current method, only WITH, ORDER BY, LIMIT, and OFFSET are valid for the current query attributes.).
func (*Get) UnionAll ¶
UnionAll for union all(After calling the current method, only WITH, ORDER BY, LIMIT, and OFFSET are valid for the current query attributes.).
type GetJoin ¶
type GetJoin struct {
// contains filtered or unexported fields
}
GetJoin join SQL statement.
func (*GetJoin) Alias ¶
Alias for table alias name, don't forget to call the current method when the table is a SQL statement.
func (*GetJoin) SubQueryGet ¶
SubQueryGet table is a query SQL statement.
type GetWith ¶
type GetWith struct {
// contains filtered or unexported fields
}
GetWith CTE: Common Table Expression.
type Helper ¶
type Helper interface { // DriverName Get the driver name. DriverName() []byte // DataSourceName Get the data source name. DataSourceName() []byte // SetIdentifier Custom Identifier. SetIdentifier(identifier Identifier) Helper Identifier // SetPrepare Custom method. SetPrepare(prepare func(prepare string) string) Helper // Prepare Before executing preprocessing, adjust the preprocessing SQL format. Prepare(prepare string) string // SetIfNull Custom method. SetIfNull(ifNull func(columnName string, columnDefaultValue string) string) Helper // IfNull Set a default value when the query field value is NULL. IfNull(columnName string, columnDefaultValue string) string // SetBinaryDataToHexString Custom method. SetBinaryDataToHexString(binaryDataToHexString func(binaryData []byte) string) Helper // BinaryDataToHexString Convert binary data to hexadecimal string. BinaryDataToHexString(binaryData []byte) string }
type Identifier ¶ added in v2.0.7
type Identifier interface { Identify() string AddIdentify(keys []string) []string DelIdentify(keys []string) []string }
func NewIdentifier ¶ added in v2.0.7
func NewIdentifier(identify string) Identifier
type LogSql ¶ added in v2.0.4
type LogSql struct {
// contains filtered or unexported fields
}
LogSql Record executed prepare args.
type LogSqlArgs ¶ added in v2.0.4
type LogSqlArgs struct {
// contains filtered or unexported fields
}
LogSqlArgs Record executed args of prepare.
type Mod ¶
type Mod struct {
// contains filtered or unexported fields
}
Mod for UPDATE.
func (*Mod) FieldsValues ¶
FieldsValues SET field = value by slice, require len(fields) == len(values).
func (*Mod) Modify ¶
Modify value of modify should be one of struct{}, *struct{}, map[string]interface{}.
func (*Mod) SetCase ¶
SetCase SET salary = CASE WHEN department_id = 1 THEN salary * 1.1 WHEN department_id = 2 THEN salary * 1.05 ELSE salary.
type MysqlHelper ¶
type MysqlHelper struct { Identifier // contains filtered or unexported fields }
MysqlHelper helper for mysql.
func NewMysqlHelper ¶
func NewMysqlHelper() *MysqlHelper
func (*MysqlHelper) BinaryDataToHexString ¶ added in v2.0.5
func (s *MysqlHelper) BinaryDataToHexString(binaryData []byte) string
func (*MysqlHelper) DataSourceName ¶ added in v2.0.1
func (s *MysqlHelper) DataSourceName() []byte
func (*MysqlHelper) DriverName ¶ added in v2.0.1
func (s *MysqlHelper) DriverName() []byte
func (*MysqlHelper) IfNull ¶
func (s *MysqlHelper) IfNull(columnName string, columnDefaultValue string) string
func (*MysqlHelper) Prepare ¶
func (s *MysqlHelper) Prepare(prepare string) string
func (*MysqlHelper) SetBinaryDataToHexString ¶ added in v2.0.7
func (s *MysqlHelper) SetBinaryDataToHexString(binaryDataToHexString func(binaryData []byte) string) Helper
func (*MysqlHelper) SetIdentifier ¶ added in v2.0.7
func (s *MysqlHelper) SetIdentifier(identifier Identifier) Helper
func (*MysqlHelper) SetIfNull ¶ added in v2.0.7
func (s *MysqlHelper) SetIfNull(ifNull func(columnName string, columnDefaultValue string) string) Helper
func (*MysqlHelper) SetPrepare ¶ added in v2.0.7
func (s *MysqlHelper) SetPrepare(prepare func(prepare string) string) Helper
type PostgresHelper ¶
type PostgresHelper struct { Identifier // contains filtered or unexported fields }
PostgresHelper helper for postgresql.
func NewPostgresHelper ¶
func NewPostgresHelper() *PostgresHelper
func (*PostgresHelper) BinaryDataToHexString ¶ added in v2.0.5
func (s *PostgresHelper) BinaryDataToHexString(binaryData []byte) string
func (*PostgresHelper) DataSourceName ¶ added in v2.0.1
func (s *PostgresHelper) DataSourceName() []byte
func (*PostgresHelper) DriverName ¶ added in v2.0.1
func (s *PostgresHelper) DriverName() []byte
func (*PostgresHelper) IfNull ¶
func (s *PostgresHelper) IfNull(columnName string, columnDefaultValue string) string
func (*PostgresHelper) Prepare ¶
func (s *PostgresHelper) Prepare(prepare string) string
func (*PostgresHelper) SetBinaryDataToHexString ¶ added in v2.0.7
func (s *PostgresHelper) SetBinaryDataToHexString(binaryDataToHexString func(binaryData []byte) string) Helper
func (*PostgresHelper) SetIdentifier ¶ added in v2.0.7
func (s *PostgresHelper) SetIdentifier(identifier Identifier) Helper
func (*PostgresHelper) SetIfNull ¶ added in v2.0.7
func (s *PostgresHelper) SetIfNull(ifNull func(columnName string, columnDefaultValue string) string) Helper
func (*PostgresHelper) SetPrepare ¶ added in v2.0.7
func (s *PostgresHelper) SetPrepare(prepare func(prepare string) string) Helper
type PrepareArgs ¶
type PrepareArgs struct { Prepare string Args []interface{} }
PrepareArgs Statements to be executed and corresponding parameter list.
type Reader ¶
type Reader interface { // Read Get an object for read. Read() *Way }
Reader Separate read and write, when you distinguish between reading and writing, please do not use the same object for both reading and writing.
type Sqlite3Helper ¶ added in v2.0.1
type Sqlite3Helper struct { Identifier // contains filtered or unexported fields }
Sqlite3Helper helper for sqlite3.
func NewSqlite3Helper ¶ added in v2.0.1
func NewSqlite3Helper() *Sqlite3Helper
func (*Sqlite3Helper) BinaryDataToHexString ¶ added in v2.0.5
func (s *Sqlite3Helper) BinaryDataToHexString(binaryData []byte) string
func (*Sqlite3Helper) DataSourceName ¶ added in v2.0.1
func (s *Sqlite3Helper) DataSourceName() []byte
func (*Sqlite3Helper) DriverName ¶ added in v2.0.1
func (s *Sqlite3Helper) DriverName() []byte
func (*Sqlite3Helper) IfNull ¶ added in v2.0.1
func (s *Sqlite3Helper) IfNull(columnName string, columnDefaultValue string) string
func (*Sqlite3Helper) Prepare ¶ added in v2.0.1
func (s *Sqlite3Helper) Prepare(prepare string) string
func (*Sqlite3Helper) SetBinaryDataToHexString ¶ added in v2.0.7
func (s *Sqlite3Helper) SetBinaryDataToHexString(binaryDataToHexString func(binaryData []byte) string) Helper
func (*Sqlite3Helper) SetIdentifier ¶ added in v2.0.7
func (s *Sqlite3Helper) SetIdentifier(identifier Identifier) Helper
func (*Sqlite3Helper) SetIfNull ¶ added in v2.0.7
func (s *Sqlite3Helper) SetIfNull(ifNull func(columnName string, columnDefaultValue string) string) Helper
func (*Sqlite3Helper) SetPrepare ¶ added in v2.0.7
func (s *Sqlite3Helper) SetPrepare(prepare func(prepare string) string) Helper
type Stmt ¶
type Stmt struct {
// contains filtered or unexported fields
}
Stmt Prepare handle.
func (*Stmt) Exec ¶
Exec -> Execute prepared, that can be called repeatedly, return number of rows affected.
func (*Stmt) ExecContext ¶
ExecContext -> Execute prepared, that can be called repeatedly, return number of rows affected.
func (*Stmt) ExecuteContext ¶
ExecuteContext -> Execute prepared, that can be called repeatedly.
func (*Stmt) QueryContext ¶
func (s *Stmt) QueryContext(ctx context.Context, query func(rows *sql.Rows) error, args ...interface{}) error
QueryContext -> Query prepared, that can be called repeatedly.
func (*Stmt) QueryRowContext ¶
func (s *Stmt) QueryRowContext(ctx context.Context, query func(rows *sql.Row) error, args ...interface{}) error
QueryRowContext -> Query prepared, that can be called repeatedly.
type SubQuery ¶
type SubQuery struct {
// contains filtered or unexported fields
}
func NewSubQuery ¶
type Way ¶
type Way struct {
// contains filtered or unexported fields
}
Way Quick insert, delete, update, select helper.
func (*Way) ExecContext ¶
ExecContext -> Execute the execute sql statement.
func (*Way) ExecuteContext ¶
func (s *Way) ExecuteContext(ctx context.Context, prepare string, args ...interface{}) (sql.Result, error)
ExecuteContext -> Execute the execute sql statement.
func (*Way) Getter ¶
func (s *Way) Getter(caller Caller, query func(rows *sql.Rows) error, prepare string, args ...interface{}) error
Getter -> Execute the query sql statement with args, no prepared is used.
func (*Way) GetterContext ¶
func (s *Way) GetterContext(ctx context.Context, caller Caller, query func(rows *sql.Rows) error, prepare string, args ...interface{}) (err error)
GetterContext -> Execute the query sql statement with args, no prepared is used.
func (*Way) PrepareContext ¶
func (s *Way) PrepareContext(ctx context.Context, prepare string, caller ...Caller) (stmt *Stmt, err error)
PrepareContext -> Prepare sql statement, don't forget to call *Stmt.Close().
func (*Way) QueryContext ¶
func (s *Way) QueryContext(ctx context.Context, query func(rows *sql.Rows) error, prepare string, args ...interface{}) error
QueryContext -> Execute the query sql statement.
func (*Way) QueryRow ¶
QueryRow -> Execute sql statement and return a row data, usually INSERT, UPDATE, DELETE.
func (*Way) QueryRowContext ¶
func (s *Way) QueryRowContext(ctx context.Context, query func(row *sql.Row) error, prepare string, args ...interface{}) error
QueryRowContext -> Execute sql statement and return a row data, usually INSERT, UPDATE, DELETE.
func (*Way) SetterContext ¶
func (s *Way) SetterContext(ctx context.Context, caller Caller, prepare string, args ...interface{}) (int64, error)
SetterContext -> Execute the execute sql statement with args, no prepared is used.
func (*Way) TakeAllContext ¶
func (s *Way) TakeAllContext(ctx context.Context, result interface{}, prepare string, args ...interface{}) error
TakeAllContext -> Query prepared and get all query results, through the mapping of column names and struct tags.
func (*Way) Transaction ¶
func (s *Way) Transaction(ctx context.Context, fc func(tx *Way) error, opts ...*sql.TxOptions) error
Transaction -> Atomically executes a set of SQL statements. If a transaction has been opened, the opened transaction instance will be used.
func (*Way) TransactionIsNil ¶ added in v2.0.3
TransactionIsNil -> Is the transaction object empty?
func (*Way) TransactionMessage ¶ added in v2.0.3
TransactionMessage -> Set the prompt for the current transaction, can only be set once.
func (*Way) TransactionNew ¶ added in v2.0.3
func (s *Way) TransactionNew(ctx context.Context, fc func(tx *Way) error, opts ...*sql.TxOptions) error
TransactionNew -> Starts a new transaction and executes a set of SQL statements atomically. Does not care whether the current transaction instance is open.
func (*Way) TransactionRetry ¶
func (s *Way) TransactionRetry(ctx context.Context, retries int, fc func(tx *Way) error, opts ...*sql.TxOptions) (err error)
TransactionRetry Starts a new transaction and executes a set of SQL statements atomically. Does not care whether the current transaction instance is open.
func (*Way) WindowFunc ¶ added in v2.0.5
func (s *Way) WindowFunc(alias ...string) *WindowFunc
WindowFunc New a window function object.
type WindowFunc ¶
type WindowFunc struct { // Helper Database helper. Helper Helper // contains filtered or unexported fields }
WindowFunc sql window function.
func NewWindowFunc ¶
func NewWindowFunc(way *Way, aliases ...string) *WindowFunc
func (*WindowFunc) Alias ¶
func (s *WindowFunc) Alias(alias string) *WindowFunc
Alias Set the alias of the field that uses the window function.
func (*WindowFunc) Asc ¶
func (s *WindowFunc) Asc(column string) *WindowFunc
Asc Define the sorting within the partition so that the window function is calculated in order.
func (*WindowFunc) Avg ¶
func (s *WindowFunc) Avg(column string) *WindowFunc
Avg AVG() Returns the average of all rows in the window.
func (*WindowFunc) Count ¶
func (s *WindowFunc) Count(column string) *WindowFunc
Count COUNT() Returns the number of rows in the window.
func (*WindowFunc) DenseRank ¶
func (s *WindowFunc) DenseRank() *WindowFunc
DenseRank DENSE_RANK() Similar to RANK(), but does not skip rankings.
func (*WindowFunc) Desc ¶
func (s *WindowFunc) Desc(column string) *WindowFunc
Desc Define the sorting within the partition so that the window function is calculated in descending order.
func (*WindowFunc) FirstValue ¶
func (s *WindowFunc) FirstValue(column string) *WindowFunc
FirstValue FIRST_VALUE() Returns the value of the first row in the window.
func (*WindowFunc) Lag ¶
func (s *WindowFunc) Lag(column string, offset int64, defaultValue any) *WindowFunc
Lag LAG() Returns the value of the row before the current row.
func (*WindowFunc) LastValue ¶
func (s *WindowFunc) LastValue(column string) *WindowFunc
LastValue LAST_VALUE() Returns the value of the last row in the window.
func (*WindowFunc) Lead ¶
func (s *WindowFunc) Lead(column string, offset int64, defaultValue any) *WindowFunc
Lead LEAD() Returns the value of a row after the current row.
func (*WindowFunc) Max ¶
func (s *WindowFunc) Max(column string) *WindowFunc
Max MAX() Returns the maximum value within the window.
func (*WindowFunc) Min ¶
func (s *WindowFunc) Min(column string) *WindowFunc
Min MIN() Returns the minimum value within the window.
func (*WindowFunc) NthValue ¶
func (s *WindowFunc) NthValue(column string, LineNumber int64) *WindowFunc
NthValue NTH_VALUE() The Nth value can be returned according to the specified order. This is very useful when you need to get data at a specific position.
func (*WindowFunc) Ntile ¶
func (s *WindowFunc) Ntile(buckets int64) *WindowFunc
Ntile NTILE() Divide the rows in the window into n buckets and assign a bucket number to each row.
func (*WindowFunc) Partition ¶
func (s *WindowFunc) Partition(column ...string) *WindowFunc
Partition The OVER clause defines window partitions so that the window function is calculated independently in each partition.
func (*WindowFunc) Rank ¶
func (s *WindowFunc) Rank() *WindowFunc
Rank RANK() Assign a rank to each row, if there are duplicate values, the rank is skipped.
func (*WindowFunc) RowNumber ¶
func (s *WindowFunc) RowNumber() *WindowFunc
RowNumber ROW_NUMBER() Assign a unique serial number to each row, in the order specified, starting with 1.
func (*WindowFunc) Sum ¶
func (s *WindowFunc) Sum(column string) *WindowFunc
Sum SUM() Returns the sum of all rows in the window.
func (*WindowFunc) WindowFrame ¶
func (s *WindowFunc) WindowFrame(windowFrame string) *WindowFunc
WindowFrame Set custom window frame clause.
func (*WindowFunc) WithFunc ¶
func (s *WindowFunc) WithFunc(withFunc string) *WindowFunc
WithFunc Using custom function. for example: CUME_DIST(), PERCENT_RANK(), PERCENTILE_CONT(), PERCENTILE_DISC()...