This commit is contained in:
2023-06-10 16:22:14 +02:00
parent d017530444
commit b613b122e3
8 changed files with 103 additions and 48 deletions

54
wmo/decoding.go Normal file
View File

@@ -0,0 +1,54 @@
package wmo
import (
"context"
)
func (c *Coll[TData]) decodeSingle(ctx context.Context, dec Decodable) (TData, error) {
if c.customDecoder != nil {
return (*c.customDecoder)(ctx, dec)
} else {
var res TData
err := dec.Decode(&res)
if err != nil {
return *new(TData), err
}
return res, nil
}
}
func (c *Coll[TData]) decodeAll(ctx context.Context, cursor Cursorable) ([]TData, error) {
if c.customDecoder != nil {
res := make([]TData, 0, cursor.RemainingBatchLength())
for cursor.Next(ctx) {
entry, err := (*c.customDecoder)(ctx, cursor)
if err != nil {
return nil, err
}
res = append(res, entry)
}
return res, nil
} else {
res := make([]TData, 0, cursor.RemainingBatchLength())
err := cursor.All(ctx, &res)
if err != nil {
return nil, err
}
return res, nil
}
}