Skip to content

Commit

Permalink
Merge 10a8f81 into eaae2c9
Browse files Browse the repository at this point in the history
  • Loading branch information
fishcharlie committed Apr 8, 2020
2 parents eaae2c9 + 10a8f81 commit fd8dc2b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 2 deletions.
8 changes: 6 additions & 2 deletions lib/DocumentRetriever.js
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,19 @@ function main(documentRetrieverTypeString) {
res[item.KeyType.toLowerCase()] = item.AttributeName;
return res;
}, {});
return comparisonChart[hash].type === "EQ" && (!range || comparisonChart[range].type === "EQ");
return (comparisonChart[hash] || {}).type === "EQ" && (!range || !comparisonChart[range] || comparisonChart[range].type === "EQ");
});
if (!index) {
throw new Error.InvalidParameter("Index can't be found for query.");
}
object.IndexName = index.IndexName;
}
function moveParameterNames(val, prefix) {
const [key, value] = Object.entries(object.ExpressionAttributeNames).find((entry) => entry[1] === val);
const entry = Object.entries(object.ExpressionAttributeNames).find((entry) => entry[1] === val);
if (!entry) {
return;
}
const [key, value] = entry;
object.ExpressionAttributeNames[`#${prefix}a`] = value;
delete object.ExpressionAttributeNames[key];

Expand Down
23 changes: 23 additions & 0 deletions test/Query.js
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,23 @@ describe("Query", () => {
});
});

it("Should send correct request on query.exec for index with hash and range key but only querying hash key", async () => {
Model = new dynamoose.Model("Cat", {"id": Number, "age": {"type": Number, "index": {"global": true, "rangeKey": "name"}}, "name": String});
queryPromiseResolver = () => ({"Items": []});
await callType.func(Model.query("age").eq(1).exec).bind(Model.query("age").eq(1))();
expect(queryParams).to.eql({
"TableName": "Cat",
"IndexName": "ageGlobalIndex",
"ExpressionAttributeNames": {
"#qha": "age"
},
"ExpressionAttributeValues": {
":qhv": {"N": "1"}
},
"KeyConditionExpression": "#qha = :qhv"
});
});

it("Should return correct result with get function for attribute", async () => {
Model = new dynamoose.Model("Cat", new dynamoose.Schema({"id": Number, "name": {"type": String, "index": {"global": true}, "get": (val) => `${val}-get`}}));
queryPromiseResolver = () => ({"Items": [{"id": {"N": "1"}, "name": {"S": "Charlie"}}]});
Expand All @@ -321,6 +338,12 @@ describe("Query", () => {
return expect(callType.func(Model.query("name").eq("Charlie").exec).bind(Model.query("name").eq("Charlie"))()).to.be.rejectedWith("Index can't be found for query.");
});

it("Should throw error if not querying index hash key", async () => {
Model = new dynamoose.Model("Cat", {"id": Number, "age": {"type": Number, "index": {"global": true, "rangeKey": "name"}}, "name": String});
queryPromiseResolver = () => ({"Items": []});
return expect(callType.func(Model.query("name").eq("Charlie").exec).bind(Model.query("name").eq("Charlie"))()).to.be.rejectedWith("Index can't be found for query.");
});

it("Should throw error from AWS", () => {
queryPromiseResolver = () => {
throw {"error": "Error"};
Expand Down

0 comments on commit fd8dc2b

Please sign in to comment.