func decodeScanQueryOutput()

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
}