* Generate a hash from a query, with unique fields for columns, values, order, * skip, and limit.
(query)
| 97 | * skip, and limit. |
| 98 | */ |
| 99 | function queryHash(query) { |
| 100 | if (query instanceof Parse.Query) { |
| 101 | query = { |
| 102 | className: query.className, |
| 103 | where: query._where, |
| 104 | }; |
| 105 | } |
| 106 | var where = flattenOrQueries(query.where || {}); |
| 107 | var columns = []; |
| 108 | var values = []; |
| 109 | var i; |
| 110 | if (Array.isArray(where)) { |
| 111 | var uniqueColumns = {}; |
| 112 | for (i = 0; i < where.length; i++) { |
| 113 | var subValues = {}; |
| 114 | var keys = Object.keys(where[i]); |
| 115 | keys.sort(); |
| 116 | for (var j = 0; j < keys.length; j++) { |
| 117 | subValues[keys[j]] = where[i][keys[j]]; |
| 118 | uniqueColumns[keys[j]] = true; |
| 119 | } |
| 120 | values.push(subValues); |
| 121 | } |
| 122 | columns = Object.keys(uniqueColumns); |
| 123 | columns.sort(); |
| 124 | } else { |
| 125 | columns = Object.keys(where); |
| 126 | columns.sort(); |
| 127 | for (i = 0; i < columns.length; i++) { |
| 128 | values.push(where[columns[i]]); |
| 129 | } |
| 130 | } |
| 131 | |
| 132 | var sections = [columns.join(','), stringify(values)]; |
| 133 | |
| 134 | return query.className + ':' + sections.join('|'); |
| 135 | } |
| 136 | |
| 137 | /** |
| 138 | * contains -- Determines if an object is contained in a list with special handling for Parse pointers. |
no test coverage detected