query method

Future<QueryOutputDC> query({
  1. required String tableName,
  2. List<String>? attributesToGet,
  3. ConditionalOperator? conditionalOperator,
  4. bool? consistentRead,
  5. Map<String, dynamic>? exclusiveStartKey,
  6. Map<String, String>? expressionAttributeNames,
  7. Map<String, dynamic>? expressionAttributeValues,
  8. String? filterExpression,
  9. String? indexName,
  10. String? keyConditionExpression,
  11. Map<String, ConditionDC>? keyConditions,
  12. int? limit,
  13. String? projectionExpression,
  14. Map<String, ConditionDC>? queryFilter,
  15. ReturnConsumedCapacity? returnConsumedCapacity,
  16. bool? scanIndexForward,
  17. Select? select,
})

Directly access items from a table by primary key or a secondary index.

Implementation

Future<QueryOutputDC> query({
  required String tableName,
  List<String>? attributesToGet,
  ConditionalOperator? conditionalOperator,
  bool? consistentRead,
  Map<String, dynamic>? exclusiveStartKey,
  Map<String, String>? expressionAttributeNames,
  Map<String, dynamic>? expressionAttributeValues,
  String? filterExpression,
  String? indexName,
  String? keyConditionExpression,
  Map<String, ConditionDC>? keyConditions,
  int? limit,
  String? projectionExpression,
  Map<String, ConditionDC>? queryFilter,
  ReturnConsumedCapacity? returnConsumedCapacity,
  bool? scanIndexForward,
  Select? select,
}) async {
  final qr = await dynamoDB.query(
    tableName: tableName,
    attributesToGet: attributesToGet,
    conditionalOperator: conditionalOperator,
    consistentRead: consistentRead,
    exclusiveStartKey: exclusiveStartKey?.fromJsonToAttributeValue(),
    expressionAttributeNames: expressionAttributeNames,
    expressionAttributeValues:
        expressionAttributeValues?.fromJsonToAttributeValue(),
    filterExpression: filterExpression,
    indexName: indexName,
    keyConditionExpression: keyConditionExpression,
    keyConditions: keyConditions?.map((key, value) => MapEntry(
        key,
        Condition(
          comparisonOperator: value.comparisonOperator,
          attributeValueList:
              value.attributeValueList.map(toAttributeValue).toList(),
        ))),
    limit: limit,
    projectionExpression: projectionExpression,
    queryFilter: queryFilter?.map((key, value) => MapEntry(
        key,
        Condition(
          comparisonOperator: value.comparisonOperator,
          attributeValueList:
              value.attributeValueList.map(toAttributeValue).toList(),
        ))),
    returnConsumedCapacity: returnConsumedCapacity,
    scanIndexForward: scanIndexForward,
    select: select,
  );

  return QueryOutputDC(
    consumedCapacity: qr.consumedCapacity,
    count: qr.count ?? 0,
    scannedCount: qr.scannedCount ?? 0,
    items: qr.items?.map((e) => e.toJson()).toList() ?? [],
    lastEvaluatedKey: qr.lastEvaluatedKey?.toJson() ?? {},
  );
}