diff --git a/package-lock.json b/package-lock.json index d99e10d..9757e7a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "adapcon-utils-js", - "version": "1.3.7", + "version": "1.3.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "adapcon-utils-js", - "version": "1.3.7", + "version": "1.3.8", "dependencies": { "@aws-sdk/client-dynamodb": "^3.496.0", "@aws-sdk/client-lambda": "^3.496.0", diff --git a/package.json b/package.json index d7882cc..45da3ff 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "adapcon-utils-js", - "version": "1.3.7", + "version": "1.3.8", "description": "Utils library for Javascript", "keywords": [], "author": { diff --git a/src/dao/dynamo/dao.ts b/src/dao/dynamo/dao.ts index e840f0f..77e3f8f 100644 --- a/src/dao/dynamo/dao.ts +++ b/src/dao/dynamo/dao.ts @@ -67,7 +67,7 @@ const query = async ({ return items } -async function scan(params: ScanCommandInput): Promise> { +async function scan (params: ScanCommandInput): Promise> { const command = new ScanCommand(params) const result = await documentInstance.send(command) @@ -319,6 +319,15 @@ const dynamicFilters = ({ newExpressionAttributeNames[`#filter_${index}`] = field newExpressionAttributeValues[`:filter_between_0_${index}`] = start newExpressionAttributeValues[`:filter_between_1_${index}`] = end + } else if (operator === 'IN') { + const inValues = value.map((_, i: number) => `:filter_in_${index}_${i}`) + const values: string = inValues.join(', ') + filterExpression.push(`#filter_${index} ${operator} (${values})`) + + newExpressionAttributeNames[`#filter_${index}`] = field + value.forEach((v: string, i: number) => { + newExpressionAttributeValues[`:filter_in_${index}_${i}`] = v + }) } else { filterExpression.push(`#filter_${index} ${operator} :filter_${index}`)