in dax/internal/client/response.go [434:487]
func decodeScanQueryOutput(ctx context.Context, reader *cbor.Reader, table string, indexed bool, projection *string, exprAttrNames map[string]string, keySchemaCache *lru.Lru, attrNamesListToId *lru.Lru) (*scanQueryOutput, error) {
if consumed, err := consumeNil(reader); err != nil {
return nil, err
} else if consumed {
return nil, nil
}
out := &scanQueryOutput{}
out.Items = []map[string]types.AttributeValue{}
var err error
err = consumeMap(reader, func(key int, reader *cbor.Reader) error {
switch key {
case responseParamItems:
projectionOrdinals, err := buildProjectionOrdinals(projection, exprAttrNames)
if err != nil {
return err
}
if out.Items, err = decodeScanQueryItems(ctx, reader, table, keySchemaCache, attrNamesListToId, projectionOrdinals); err != nil {
return err
}
case responseParamConsumedCapacity:
if out.ConsumedCapacity, err = decodeConsumedCapacity(reader); err != nil {
return err
}
case responseParamCount:
c, err := reader.ReadInt64()
if err != nil {
return err
}
out.Count = int32(c)
case responseParamScannedCount:
c, err := reader.ReadInt64()
if err != nil {
return err
}
out.ScannedCount = int32(c)
case responseParamLastEvaluatedKey:
k, err := decodeLastEvaluatedKey(ctx, reader, table, indexed, keySchemaCache)
if err != nil {
return err
}
if len(k) > 0 {
out.LastEvaluatedKey = k
}
default:
return &smithy.SerializationError{Err: fmt.Errorf("unknown response param key %d", key)}
}
return nil
})
if err != nil {
return nil, err
}
return out, nil
}