Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
401aad9fa4
|
|||
645113d553
|
@@ -1,5 +1,5 @@
|
|||||||
package goext
|
package goext
|
||||||
|
|
||||||
const GoextVersion = "0.0.407"
|
const GoextVersion = "0.0.409"
|
||||||
|
|
||||||
const GoextVersionTimestamp = "2024-03-11T16:40:41+0100"
|
const GoextVersionTimestamp = "2024-03-11T17:05:10+0100"
|
||||||
|
@@ -5,12 +5,76 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Coalesce[T any](v *T, def T) T {
|
func Coalesce[T any](v1 *T, def T) T {
|
||||||
if v == nil {
|
if v1 != nil {
|
||||||
return def
|
return *v1
|
||||||
} else {
|
|
||||||
return *v
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return def
|
||||||
|
}
|
||||||
|
|
||||||
|
func CoalesceOpt[T any](v1 *T, v2 *T) *T {
|
||||||
|
if v1 != nil {
|
||||||
|
return v1
|
||||||
|
}
|
||||||
|
|
||||||
|
return v2
|
||||||
|
}
|
||||||
|
|
||||||
|
func Coalesce3[T any](v1 *T, v2 *T, def T) T {
|
||||||
|
if v1 != nil {
|
||||||
|
return *v1
|
||||||
|
}
|
||||||
|
|
||||||
|
if v2 != nil {
|
||||||
|
return *v2
|
||||||
|
}
|
||||||
|
|
||||||
|
return def
|
||||||
|
}
|
||||||
|
|
||||||
|
func Coalesce3Opt[T any](v1 *T, v2 *T, v3 *T) *T {
|
||||||
|
if v1 != nil {
|
||||||
|
return v1
|
||||||
|
}
|
||||||
|
|
||||||
|
if v2 != nil {
|
||||||
|
return v2
|
||||||
|
}
|
||||||
|
|
||||||
|
return v3
|
||||||
|
}
|
||||||
|
|
||||||
|
func Coalesce4[T any](v1 *T, v2 *T, v3 *T, def T) T {
|
||||||
|
if v1 != nil {
|
||||||
|
return *v1
|
||||||
|
}
|
||||||
|
|
||||||
|
if v2 != nil {
|
||||||
|
return *v2
|
||||||
|
}
|
||||||
|
|
||||||
|
if v3 != nil {
|
||||||
|
return *v3
|
||||||
|
}
|
||||||
|
|
||||||
|
return def
|
||||||
|
}
|
||||||
|
|
||||||
|
func Coalesce4Opt[T any](v1 *T, v2 *T, v3 *T, v4 *T) *T {
|
||||||
|
if v1 != nil {
|
||||||
|
return v1
|
||||||
|
}
|
||||||
|
|
||||||
|
if v2 != nil {
|
||||||
|
return v2
|
||||||
|
}
|
||||||
|
|
||||||
|
if v3 != nil {
|
||||||
|
return v3
|
||||||
|
}
|
||||||
|
|
||||||
|
return v4
|
||||||
}
|
}
|
||||||
|
|
||||||
func CoalesceString(s *string, def string) string {
|
func CoalesceString(s *string, def string) string {
|
||||||
|
@@ -6,7 +6,7 @@ import (
|
|||||||
"gogs.mikescher.com/BlackForestBytes/goext/exerr"
|
"gogs.mikescher.com/BlackForestBytes/goext/exerr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Iterate[TData any](ctx context.Context, q Queryable, table string, filter PaginateFilter, scanMode StructScanMode, scanSec StructScanSafety, page int, limit *int, consumer func(v TData) error) (int, error) {
|
func Iterate[TData any](ctx context.Context, q Queryable, table string, filter PaginateFilter, scanMode StructScanMode, scanSec StructScanSafety, page int, limit *int, consumer func(ctx context.Context, v TData) error) (int, error) {
|
||||||
if filter == nil {
|
if filter == nil {
|
||||||
filter = NewEmptyPaginateFilter()
|
filter = NewEmptyPaginateFilter()
|
||||||
}
|
}
|
||||||
|
@@ -334,7 +334,7 @@ func ScanAll[TData any](ctx context.Context, q Queryable, rows *sqlx.Rows, mode
|
|||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func IterateAll[TData any](ctx context.Context, q Queryable, rows *sqlx.Rows, mode StructScanMode, sec StructScanSafety, close bool, consumer func(v TData) error) (int, error) {
|
func IterateAll[TData any](ctx context.Context, q Queryable, rows *sqlx.Rows, mode StructScanMode, sec StructScanSafety, close bool, consumer func(ctx context.Context, v TData) error) (int, error) {
|
||||||
var strscan *StructScanner
|
var strscan *StructScanner
|
||||||
|
|
||||||
if sec == Safe {
|
if sec == Safe {
|
||||||
@@ -370,7 +370,7 @@ func IterateAll[TData any](ctx context.Context, q Queryable, rows *sqlx.Rows, mo
|
|||||||
return rcount, err
|
return rcount, err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = consumer(data)
|
err = consumer(ctx, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rcount, exerr.Wrap(err, "").Build()
|
return rcount, exerr.Wrap(err, "").Build()
|
||||||
}
|
}
|
||||||
@@ -384,7 +384,7 @@ func IterateAll[TData any](ctx context.Context, q Queryable, rows *sqlx.Rows, mo
|
|||||||
return rcount, err
|
return rcount, err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = consumer(data)
|
err = consumer(ctx, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return rcount, exerr.Wrap(err, "").Build()
|
return rcount, exerr.Wrap(err, "").Build()
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user