in dax/internal/cbor/attrval.go [36:115]
func EncodeAttributeValue(value *dynamodb.AttributeValue, writer *Writer) error {
if value == nil {
return awserr.New(request.InvalidParameterErrCode, "invalid attribute value: nil", nil)
}
var err error
switch {
case value.S != nil:
err = writer.WriteString(*value.S)
case value.N != nil:
err = writeStringNumber(*value.N, writer)
case value.B != nil:
err = writer.WriteBytes(value.B)
case value.SS != nil:
if err = writer.writeType(Tag, tagStringSet); err != nil {
return err
}
if err = writer.WriteArrayHeader(len(value.SS)); err != nil {
return err
}
for _, sp := range value.SS {
if err := writer.WriteString(*sp); err != nil {
return err
}
}
case value.NS != nil:
if err = writer.writeType(Tag, tagNumberSet); err != nil {
return err
}
if err = writer.WriteArrayHeader(len(value.NS)); err != nil {
return err
}
for _, sp := range value.NS {
if err := writeStringNumber(*sp, writer); err != nil {
return err
}
}
case value.BS != nil:
if err = writer.writeType(Tag, tagBinarySet); err != nil {
return err
}
if err = writer.WriteArrayHeader(len(value.BS)); err != nil {
return err
}
for _, bp := range value.BS {
if err := writer.WriteBytes(bp); err != nil {
return err
}
}
case value.L != nil:
if err = writer.WriteArrayHeader(len(value.L)); err != nil {
return err
}
for _, v := range value.L {
if err := EncodeAttributeValue(v, writer); err != nil {
return err
}
}
case value.M != nil:
if err = writer.WriteMapHeader(len(value.M)); err != nil {
return err
}
for k, v := range value.M {
if err := writer.WriteString(k); err != nil {
return err
}
if err = EncodeAttributeValue(v, writer); err != nil {
return err
}
}
case value.BOOL != nil:
err = writer.WriteBoolean(*value.BOOL)
case value.NULL != nil:
if !(*value.NULL) {
return awserr.New(request.InvalidParameterErrCode, "invalid null attribute value", nil) // DaxJavaClient suppress this error
}
err = writer.WriteNull()
}
return err
}