in dax/internal/cbor/item.go [270:302]
func EncodeItemNonKeyAttributes(ctx context.Context, item map[string]types.AttributeValue, keydef []types.AttributeDefinition,
attrNamesListToId *lru.Lru, writer *Writer) error {
keydeflen := len(keydef)
nonKeyAttrNames := make([]string, 0, len(item)-keydeflen)
for k := range item {
if k != *keydef[0].AttributeName && (keydeflen == 1 || k != *keydef[1].AttributeName) {
nonKeyAttrNames = append(nonKeyAttrNames, k)
}
}
sort.Strings(nonKeyAttrNames)
nonKeyAttrValues := make([]types.AttributeValue, len(nonKeyAttrNames))
for i, k := range nonKeyAttrNames {
nonKeyAttrValues[i] = item[k]
}
id, err := attrNamesListToId.GetWithContext(ctx, nonKeyAttrNames)
if err != nil {
return err
}
if err = writer.WriteInt64(id.(int64)); err != nil {
return err
}
for _, v := range nonKeyAttrValues {
if err := EncodeAttributeValue(v, writer); err != nil {
return err
}
}
return nil
}