Compare commits

...

3 Commits

Author SHA1 Message Date
c679797765 v0.0.410 add ginext.SuppressGinLogs
Some checks failed
Build Docker and Deploy / Run goext test-suite (push) Has been cancelled
2024-03-11 20:42:12 +01:00
401aad9fa4 v0.0.409
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 1m41s
2024-03-11 17:05:10 +01:00
645113d553 v0.0.408
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 3m43s
2024-03-11 16:41:47 +01:00
5 changed files with 77 additions and 12 deletions

View File

@@ -39,6 +39,7 @@ type ginRouteSpec struct {
type Options struct {
AllowCors *bool // Add cors handler to allow all CORS requests on the default http methods
GinDebug *bool // Set gin.debug to true (adds more logs)
SuppressGinLogs *bool // Suppress our custom gin logs (even if GinDebug == true)
BufferBody *bool // Buffers the input body stream, this way the ginext error handler can later include the whole request body
Timeout *time.Duration // The default handler timeout
ListenerBeforeRequest []func(g *gin.Context) // Register listener that are called before the handler method
@@ -51,7 +52,7 @@ func NewEngine(opt Options) *GinWrapper {
wrapper := &GinWrapper{
engine: engine,
suppressGinLogs: false,
suppressGinLogs: langext.Coalesce(opt.SuppressGinLogs, false),
allowCors: langext.Coalesce(opt.AllowCors, false),
ginDebug: langext.Coalesce(opt.GinDebug, true),
bufferBody: langext.Coalesce(opt.BufferBody, false),

View File

@@ -1,5 +1,5 @@
package goext
const GoextVersion = "0.0.407"
const GoextVersion = "0.0.410"
const GoextVersionTimestamp = "2024-03-11T16:40:41+0100"
const GoextVersionTimestamp = "2024-03-11T20:42:12+0100"

View File

@@ -5,12 +5,76 @@ import (
"time"
)
func Coalesce[T any](v *T, def T) T {
if v == nil {
return def
} else {
return *v
func Coalesce[T any](v1 *T, def T) T {
if v1 != nil {
return *v1
}
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 {

View File

@@ -6,7 +6,7 @@ import (
"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 {
filter = NewEmptyPaginateFilter()
}

View File

@@ -334,7 +334,7 @@ func ScanAll[TData any](ctx context.Context, q Queryable, rows *sqlx.Rows, mode
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
if sec == Safe {
@@ -370,7 +370,7 @@ func IterateAll[TData any](ctx context.Context, q Queryable, rows *sqlx.Rows, mo
return rcount, err
}
err = consumer(data)
err = consumer(ctx, data)
if err != nil {
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
}
err = consumer(data)
err = consumer(ctx, data)
if err != nil {
return rcount, exerr.Wrap(err, "").Build()
}