* validateSearchParams - validate value of ?search= in request * @param {string} searchParams - value of search params in request * which should be jsu sql where clause * For metadata: x-amz-meta-color=\"blue\" * For tags: tags.x-amz-meta-color=\"blue\" * For replication status : replication-
(searchParams)
| 63 | * @return {undefined | error} undefined if validates or arsenal error if not |
| 64 | */ |
| 65 | function validateSearchParams(searchParams) { |
| 66 | let ast; |
| 67 | try { |
| 68 | // allow using 'replicationStatus' as search param to increase |
| 69 | // ease of use, pending metadata search rework |
| 70 | // eslint-disable-next-line no-param-reassign |
| 71 | searchParams = searchParams.replace( |
| 72 | 'replication-status', 'replicationInfo.status'); |
| 73 | ast = parser.parse(searchParams); |
| 74 | } catch (e) { |
| 75 | if (e) { |
| 76 | return { |
| 77 | error: errorInstances.InvalidArgument |
| 78 | .customizeDescription('Invalid sql where clause ' + |
| 79 | 'sent as search query'), |
| 80 | }; |
| 81 | } |
| 82 | } |
| 83 | const possibleAttributes = objModel.getAttributes(); |
| 84 | const invalidAttribute = _validateTree(ast, possibleAttributes); |
| 85 | if (invalidAttribute) { |
| 86 | return { |
| 87 | error: errorInstances.InvalidArgument |
| 88 | .customizeDescription('Search param ' + |
| 89 | `contains unknown attribute: ${invalidAttribute}`) }; |
| 90 | } |
| 91 | return { |
| 92 | ast, |
| 93 | }; |
| 94 | } |
| 95 | |
| 96 | module.exports = validateSearchParams; |
no test coverage detected