func EncodeItemNonKeyAttributes()

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
}