不要怂,就是干,撸起袖子干!

Commit 306aa49a by James Wernicke

Added support for WHERE LIKE ANY

1 parent 16d175a1
...@@ -1737,6 +1737,7 @@ module.exports = (function() { ...@@ -1737,6 +1737,7 @@ module.exports = (function() {
} }
// Setup keys and comparators // Setup keys and comparators
var any;
if (Array.isArray(value) && fieldType instanceof DataTypes.ARRAY) { if (Array.isArray(value) && fieldType instanceof DataTypes.ARRAY) {
value = this.escape(value, field); value = this.escape(value, field);
} else if (value && (value.$in || value.$notIn)) { } else if (value && (value.$in || value.$notIn)) {
...@@ -1766,6 +1767,11 @@ module.exports = (function() { ...@@ -1766,6 +1767,11 @@ module.exports = (function() {
value = (value.$between || value.$notBetween).map(function (item) { value = (value.$between || value.$notBetween).map(function (item) {
return self.escape(item); return self.escape(item);
}).join(' AND '); }).join(' AND ');
} else if (value && ((value.$like && (any = value.$like.$any) && (comparator = 'LIKE ANY')) ||
(value.$iLike && (any = value.$iLike.$any) && (comparator = 'ILIKE ANY')) ||
(value.$notLike && (any = value.$notLike.$any) && (comparator = 'NOT LIKE ANY')) ||
(value.$notILike && (any = value.$notILike.$any) && (comparator = 'NOT ILIKE ANY')))) {
value = '('+self.escape(any)+')';
} else { } else {
if (_.isPlainObject(value)) { if (_.isPlainObject(value)) {
_.forOwn(value, function (item, key) { _.forOwn(value, function (item, key) {
...@@ -2114,4 +2120,3 @@ module.exports = (function() { ...@@ -2114,4 +2120,3 @@ module.exports = (function() {
return QueryGenerator; return QueryGenerator;
})(); })();
...@@ -423,6 +423,37 @@ suite(Support.getTestDialectTeaser('SQL'), function() { ...@@ -423,6 +423,37 @@ suite(Support.getTestDialectTeaser('SQL'), function() {
}); });
}); });
}); });
suite('$like', function() {
testsql('userId', {
$like: {
$any: ['foo', 'bar', 'baz']
}
}, {
postgres: "\"userId\" LIKE ANY (ARRAY['foo','bar','baz'])"
});
testsql('userId', {
$iLike: {
$any: ['foo', 'bar', 'baz']
}
}, {
postgres: "\"userId\" ILIKE ANY (ARRAY['foo','bar','baz'])"
});
testsql('userId', {
$notLike: {
$any: ['foo', 'bar', 'baz']
}
}, {
postgres: "\"userId\" NOT LIKE ANY (ARRAY['foo','bar','baz'])"
});
testsql('userId', {
$notILike: {
$any: ['foo', 'bar', 'baz']
}
}, {
postgres: "\"userId\" NOT ILIKE ANY (ARRAY['foo','bar','baz'])"
});
});
}); });
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!