v0.0.188 exerr MVP
This commit is contained in:
@@ -6,7 +6,6 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
"go.mongodb.org/mongo-driver/bson"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"gogs.mikescher.com/BlackForestBytes/goext/langext"
|
||||
@@ -15,6 +14,10 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// This is a buffed up map[string]any
|
||||
// we also save type information of the map-values
|
||||
// which allows us to deserialize them back into te correct types later
|
||||
|
||||
type MetaMap map[string]MetaValue
|
||||
|
||||
type metaDataType string
|
||||
@@ -350,11 +353,7 @@ func (v *MetaValue) Deserialize(value string, datatype metaDataType) error {
|
||||
v.DataType = datatype
|
||||
return nil
|
||||
} else {
|
||||
r, err := valueFromProto(value[1:], MDTString)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
v.Value = langext.Ptr(r.Value.(string))
|
||||
v.Value = langext.Ptr(value[1:])
|
||||
v.DataType = datatype
|
||||
return nil
|
||||
}
|
||||
@@ -586,51 +585,6 @@ func (v MetaValue) ValueString() string {
|
||||
return "(err)"
|
||||
}
|
||||
|
||||
func valueFromProto(value string, datatype metaDataType) (MetaValue, error) {
|
||||
obj := MetaValue{}
|
||||
err := obj.Deserialize(value, datatype)
|
||||
if err != nil {
|
||||
return MetaValue{}, err
|
||||
}
|
||||
return obj, nil
|
||||
}
|
||||
|
||||
func metaFromProto(proto []*spbmodels.CustomError_MetaValue) MetaMap {
|
||||
r := make(MetaMap)
|
||||
|
||||
for _, v := range proto {
|
||||
mval, err := valueFromProto(v.Value, metaDataType(v.Type))
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msg("metaFromProto failed for " + v.Key)
|
||||
continue
|
||||
}
|
||||
r[v.Key] = mval
|
||||
}
|
||||
|
||||
return r
|
||||
}
|
||||
|
||||
func (mm MetaMap) ToProto() []*spbmodels.CustomError_MetaValue {
|
||||
if mm == nil {
|
||||
return make([]*spbmodels.CustomError_MetaValue, 0)
|
||||
}
|
||||
r := make([]*spbmodels.CustomError_MetaValue, 0, len(mm))
|
||||
for k, v := range mm {
|
||||
strval, err := v.SerializeValue()
|
||||
if err != nil {
|
||||
log.Warn().Err(err).Msg("MetaMap.ToProto failed for " + k)
|
||||
continue
|
||||
}
|
||||
|
||||
r = append(r, &spbmodels.CustomError_MetaValue{
|
||||
Key: k,
|
||||
Type: string(v.DataType),
|
||||
Value: strval,
|
||||
})
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
func (mm MetaMap) FormatOneLine(singleMaxLen int) string {
|
||||
r := ""
|
||||
|
||||
|
Reference in New Issue
Block a user