Skip to content

Commit b8dcbe6

Browse files
committed
add regex operator support
1 parent 989e14b commit b8dcbe6

3 files changed

Lines changed: 27 additions & 0 deletions

File tree

lib/node/valueExpression.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ var ValueExpressionMixin = function() {
109109
bitwiseNot : binaryMethod('~'),
110110
bitwiseOr : binaryMethod('|'),
111111
bitwiseXor : binaryMethod('#'),
112+
regex : binaryMethod('~'),
113+
notRegex : binaryMethod('!~'),
112114
concat : binaryMethod('||'),
113115
key : binaryMethod('->'),
114116
keyText : binaryMethod('->>'),

test/binary-clause-tests.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,6 @@ test('operators', function() {
3232
assert.equal(Foo.baz.bitwiseXor(1).operator, '#');
3333
assert.equal(Foo.baz.divide(1).operator, '/');
3434
assert.equal(Foo.baz.modulo(1).operator, '%');
35+
assert.equal(Foo.baz.regex(1).operator, '~');
36+
assert.equal(Foo.baz.notRegex(1).operator, '!~');
3537
});

test/dialects/regex-tests.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'use strict';
2+
3+
var Harness = require('./support');
4+
var customer = Harness.defineCustomerTable();
5+
var Sql = require('../../lib').setDialect('postgres');
6+
7+
Harness.test({
8+
query: customer.select(customer.metadata.regex('age')),
9+
pg: {
10+
text : 'SELECT ("customer"."metadata" ~ $1) FROM "customer"',
11+
string: 'SELECT ("customer"."metadata" ~ \'age\') FROM "customer"'
12+
},
13+
params: ['age']
14+
});
15+
16+
Harness.test({
17+
query: customer.select(customer.metadata.notRegex('age')),
18+
pg: {
19+
text : 'SELECT ("customer"."metadata" !~ $1) FROM "customer"',
20+
string: 'SELECT ("customer"."metadata" !~ \'age\') FROM "customer"'
21+
},
22+
params: ['age']
23+
});

0 commit comments

Comments
 (0)