Documentation ¶
Index ¶
- Variables
- func As[T any](v any) T
- func Batch[S Storer, F Finder[R], R any](db S, finder F, batchNum int, handler func([]R) error) (err error)
- func BatchConcurrent[S Storer, F Finder[R], R any](db S, finder F, batchNum int, handler func([]R) error, concNum int) (err error)
- func BytesToString(b []byte) string
- func CodeIs200(code int) error
- func FindAll[S Storer, F Finder[R], R any](db S, finder F, initial R) (r []R, err error)
- func FindFirst[S Storer, F Finder[R], R any](db S, finder F, res *R) (err error)
- func FindList[S Storer, F Finder[R], R any](db S, finder F, res *[]R) (err error)
- func FindOne[S Storer, F Finder[R], R any](db S, finder F, initial R) (r R, err error)
- func ForgotKey(key string)
- func FuncName(skip int, withFileInfo bool) string
- func HashJoin[K comparable, LE, RE, R any](left []LE, right []RE, lk func(item LE) K, rk func(item RE) K, ...) []R
- func IsComparable[T comparable]()
- func JSONExtractor[R any](data []byte) (R, error)
- func KeyBy[K comparable, E any](collection []E, iteratee func(item E) K) map[K]E
- func KeyValueBy[K comparable, E, V any](collection []E, iteratee func(item E) (K, V)) map[K]V
- func Keys[K comparable, E any](collection map[K]E) []K
- func MatchError(v any) bool
- func MkdirAllIfNotExist(dir string) error
- func Must(err error)
- func Must1[T any](a1 T, err error) T
- func Must2[T1, T2 any](a1 T1, a2 T2, err error) (T1, T2)
- func Must3[T1, T2, T3 any](a1 T1, a2 T2, a3 T3, err error) (T1, T2, T3)
- func Must4[T1, T2, T3, T4 any](a1 T1, a2 T2, a3 T3, a4 T4, err error) (T1, T2, T3, T4)
- func Must5[T1, T2, T3, T4, T5 any](a1 T1, a2 T2, a3 T3, a4 T4, a5 T5, err error) (T1, T2, T3, T4, T5)
- func NestedJoin[J, K, R any](left []J, right []K, match func(J, K) bool, mapper func(J, K) R) []R
- func NewError[T any](inner T) error
- func PrintFields(fields []any)
- func RetryWithDeadline(ctx context.Context, d time.Time, f Doer) error
- func RetryWithTimes(ctx context.Context, tryTimes int, f Doer) error
- func SendHTTPRequest[R any](client *http.Client, method string, link string, body io.Reader, ...) (R, error)
- func SingleFlight[R any](key string, fn SingleFlightCall[R]) (r R, err error)
- func StringToBytes(s string) []byte
- func ValueAs[K comparable, T any](m *Map[K, any], key K) T
- func Values[K comparable, E any](collection map[K]E) []E
- func WrapConnFindAll[F Finder[R], R any](ctx context.Context, db *sql.DB, finder F, initial R) (r []R, err error)
- func WrapDB(ctx context.Context, driverName string, dataSourceName string, ...) error
- func WrapSQLConn(ctx context.Context, db *sql.DB, ...) error
- func WrapSQLQueryRows(ctx context.Context, db *sql.DB, stmt string, args []interface{}, ...) error
- func WrapTx(ctx context.Context, db *sql.DB, f func(ctx context.Context, tx *sql.Tx) error) (err error)
- func WrapTxFindAll[F Finder[R], R any](ctx context.Context, db *sql.DB, finder F, initial R) (r []R, err error)
- func XMLExtractor[R any](data []byte) (R, error)
- type CodeChecker
- type DoWithCtx
- type Doer
- type Error
- type ErrorHandler
- type Field
- type Finder
- type Job
- type Map
- type ResultExtractor
- type SingleFlightCall
- type Slice
- type Storer
- type Struct
- type StructCommentEntity
- type Worker
Constants ¶
This section is empty.
Variables ¶
var ( ErrWorkerIsStop = errors.New("Worker is stop") ErrNilJobDo = errors.New("Job do field is nil") )
var (
ErrNilDoer = errors.New("f is nil")
)
Functions ¶
func Batch ¶ added in v0.2.0
func Batch[S Storer, F Finder[R], R any](db S, finder F, batchNum int, handler func([]R) error) (err error)
Batch process data find from Storer in batches
func BatchConcurrent ¶ added in v0.2.0
func BatchConcurrent[S Storer, F Finder[R], R any](db S, finder F, batchNum int, handler func([]R) error, concNum int) (err error)
BatchConcurrent batch process data concurrently
func BytesToString ¶ added in v0.5.0
BytesToString converts byte slice to string without a memory allocation.
func HashJoin ¶ added in v0.2.0
func HashJoin[K comparable, LE, RE, R any]( left []LE, right []RE, lk func(item LE) K, rk func(item RE) K, mapper func(LE, RE) R, ) []R
HashJoin like hash join
func IsComparable ¶ added in v0.8.0
func IsComparable[T comparable]()
IsComparable check if a type is comparable in compile time
func JSONExtractor ¶ added in v0.2.0
func KeyBy ¶ added in v0.2.0
func KeyBy[K comparable, E any](collection []E, iteratee func(item E) K) map[K]E
KeyBy slice to map, key specified by iteratee, value is slice element
func KeyValueBy ¶ added in v0.2.0
func KeyValueBy[K comparable, E, V any](collection []E, iteratee func(item E) (K, V)) map[K]V
KeyValueBy slice to map, key value specified by iteratee
func Keys ¶ added in v0.8.0
func Keys[K comparable, E any](collection map[K]E) []K
func MatchError ¶
func MkdirAllIfNotExist ¶ added in v0.8.0
func Must5 ¶
func Must5[T1, T2, T3, T4, T5 any](a1 T1, a2 T2, a3 T3, a4 T4, a5 T5, err error) (T1, T2, T3, T4, T5)
Must5 panic if err is not nill,or return 5 result
func NestedJoin ¶ added in v0.2.0
func NestedJoin[J, K, R any]( left []J, right []K, match func(J, K) bool, mapper func(J, K) R, ) []R
NestedJoin like nested loop join
func PrintFields ¶ added in v0.2.0
func PrintFields(fields []any)
func RetryWithDeadline ¶ added in v0.5.0
RetryWithDeadline retry f before d exceeds if f failed
func RetryWithTimes ¶ added in v0.5.0
RetryWithTimes retry f tryTimes times if f failed
func SendHTTPRequest ¶ added in v0.2.0
func SingleFlight ¶ added in v0.6.0
func SingleFlight[R any](key string, fn SingleFlightCall[R]) (r R, err error)
SingleFlight make sure only one request is doing with one key
func StringToBytes ¶ added in v0.5.0
StringToBytes converts string to byte slice without a memory allocation.
func ValueAs ¶ added in v0.8.0
func ValueAs[K comparable, T any](m *Map[K, any], key K) T
ValueAs get value by key from *Map[K, any], and assert value type to T
func Values ¶ added in v0.8.0
func Values[K comparable, E any](collection map[K]E) []E
func WrapConnFindAll ¶ added in v0.2.0
func WrapConnFindAll[F Finder[R], R any]( ctx context.Context, db *sql.DB, finder F, initial R, ) (r []R, err error)
WrapConnFindAll query by stmt and args, return values with dest support many rows
func WrapSQLConn ¶ added in v0.2.0
func WrapSQLQueryRows ¶ added in v0.2.0
func WrapSQLQueryRows( ctx context.Context, db *sql.DB, stmt string, args []interface{}, dest ...interface{}, ) error
WrapSQLQueryRows query by stmt and args, return values with dest only support one row
func WrapTxFindAll ¶ added in v0.2.0
func XMLExtractor ¶ added in v0.2.0
Types ¶
type CodeChecker ¶ added in v0.2.0
type Error ¶
type Error[T any] struct { // contains filtered or unexported fields }
Error is a error type with any element
func ConvertError ¶
type ErrorHandler ¶ added in v0.2.0
type ErrorHandler func(error)
type Field ¶ added in v0.9.0
type Field struct { reflect.StructField // 内嵌反射结构体字段类型 Comment string // 注释 Struct Struct // 字段的类型是其它结构体 }
Field 字段
type Finder ¶ added in v0.2.0
type Finder[R any] interface { // return query sql and args Query() (query string, args []any) // new a result type object, not the same, to receive every row // fields must be pointer type of result object's field, and it is match with query sql's select column one by one NewScanObjAndFields(colTypes []*sql.ColumnType) (r *R, fields []any) }
type Map ¶ added in v0.6.0
type Map[K comparable, T any] struct { // contains filtered or unexported fields }
type ResultExtractor ¶ added in v0.2.0
type SingleFlightCall ¶ added in v0.6.0
type Struct ¶ added in v0.9.0
type Struct struct { Name string // 名字 Comment string // 注释 Description string // 描述 Type reflect.Type // 反射类型 Fields []Field // 结构体字段 }
Struct 结构体
func ResolveStruct ¶ added in v0.9.0
ResolveStruct 解析结构体