1

ユーザーがリクエスト本文で渡すパラメーターに従ってアイテムをリストできるようにする API エンドポイントを作成しています。

パーティション キーを唯一の必須パラメータにしたい。クライアントは、クエリで必要なレベルの粒度を達成するために、0 個以上のキーと値のペアを渡すことができます。

私の DynamoDB テーブルには、次の構造のアイテムが保持されます。

{
  "appName": { //PARTITION KEY
    "S": "APP_1"
  },
  "requestId": { // SORT KEY
    "S": "request_1224"
  },
  "creationTime": {
    "N": "1636332520679"
  },
  "resolver": {
    "S": "SOMEONES_ID"
  },
  "status": {
     "S": "PENDING"
  }
}

ハードコーディングされた作業コードがいくつかありDynamoDBQueryExpression、クエリ式を動的にまとめる方法については考えていますが、for ループと文字列操作の醜い組み合わせを考えています。

を動的にまとめるエレガントでクリーンな方法はありますDynamoDBQueryExpressionか?

参考までに、私が持っているスターターコードは次のとおりです。

    Map<String, AttributeValue> eav = new HashMap<String, AttributeValue>();
    eav.put(":val1", new AttributeValue().withS(requestModel.getAppName()));
    eav.put(":val2", new AttributeValue().withS(accessRequestModel.getRequestStatus()));

    DynamoDBQueryExpression<RequestModel> queryExpression = new DynamoDBQueryExpression<RequestModel>()
            .withKeyConditionExpression("appName = :val1")
            .withFilterExpression("RequestStatus = :val2")
            .withExpressionAttributeValues(eav);

さらに明確にするために、私がどのようにputハードコーディングされた値をwithFilterConditionExpressionどのように渡しているかを見てください。

Java のAWS DynamoDB Mapperを使用しています。

4

0 に答える 0