From 23a4f007fce35e5e6c4b8248a1022af2579a0d8f Mon Sep 17 00:00:00 2001 From: Aleksandr Trushkin Date: Sun, 11 Feb 2024 20:13:23 +0300 Subject: [PATCH] fix fbs encoding --- cmd/cli/main.go | 8 +++++++- internal/encoding/fbs/helpers.go | 12 +++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/cmd/cli/main.go b/cmd/cli/main.go index 4d043f2..a78dd7b 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -545,6 +545,8 @@ type chanIter[T any] struct { next T } +var errChannelClosed = errors.New("channel closed") + func (i *chanIter[T]) Next() (ok bool) { if i.err != nil { return false @@ -552,7 +554,7 @@ func (i *chanIter[T]) Next() (ok bool) { i.next, ok = <-i.in if !ok { - i.err = errors.New("channel closed") + i.err = errChannelClosed } return ok @@ -563,6 +565,10 @@ func (i *chanIter[T]) Get() T { } func (i *chanIter[T]) Err() error { + if errors.Is(i.err, errChannelClosed) { + return nil + } + return i.err } diff --git a/internal/encoding/fbs/helpers.go b/internal/encoding/fbs/helpers.go index d19e1df..77b4725 100644 --- a/internal/encoding/fbs/helpers.go +++ b/internal/encoding/fbs/helpers.go @@ -88,7 +88,6 @@ func makeDomainGoodItem(builder *flatbuffers.Builder, in entity.GoodsItem) flatb h = float32(in.Sizes.Height.AdjustTo(entity.DimensionKindCentimeter).Value) l = float32(in.Sizes.Length.AdjustTo(entity.DimensionKindCentimeter).Value) } - sizes := CreateDimensions(builder, w, h, l) GoodItemStart(builder) GoodItemAddSku(builder, sku) @@ -106,9 +105,9 @@ func makeDomainGoodItem(builder *flatbuffers.Builder, in entity.GoodsItem) flatb GoodItemAddTariff(builder, float32(in.TariffPrice)) GoodItemAddCart(builder, int64(in.Cart)) GoodItemAddStock(builder, int16(in.Stock)) - GoodItemAddSizes(builder, sizes) GoodItemAddParameters(builder, parameters) GoodItemAddCreatedAt(builder, in.CreatedAt.Unix()) + GoodItemAddSizes(builder, CreateDimensions(builder, w, h, l)) return GoodItemEnd(builder) } @@ -145,10 +144,13 @@ func ParseGoodsItem(data []byte) (item entity.GoodsItem, err error) { } } + var w, h, l float64 sizes := itemFBS.Sizes(nil) - w := float64(sizes.Width()) - h := float64(sizes.Height()) - l := float64(sizes.Length()) + if sizes != nil { + w = float64(sizes.Width()) + h = float64(sizes.Height()) + l = float64(sizes.Length()) + } item.Sizes = entity.GoodsItemSize{ Width: entity.NewMilimeterDimension(w),