diff --git a/src/index.js b/src/index.js index 0e19e7a..ee1700d 100644 --- a/src/index.js +++ b/src/index.js @@ -68,6 +68,8 @@ function filterQuery(resourceConfig, params) { query = query.where(field, 'in', v); } else if (op === 'notIn') { query = query.whereNotIn(field, v); + } else if (op === 'like') { + query = query.where(field, 'like', v); } else if (op === '|==' || op === '|===') { query = query.orWhere(field, v); } else if (op === '|!=' || op === '|!==') { diff --git a/test/findAll.spec.js b/test/findAll.spec.js index 83dd86c..3911ccc 100644 --- a/test/findAll.spec.js +++ b/test/findAll.spec.js @@ -45,6 +45,35 @@ describe('DSSqlAdapter#findAll', function () { assert.isFalse(!!destroyedUser); }); }); + it('should filter users using the "like" operator', function () { + var id; + + return adapter.findAll(User, { + where: { + name: { + 'like': '%J%' + } + } + }).then(function (users) { + assert.equal(users.length, 0); + return adapter.create(User, { name: 'John' }); + }).then(function (user) { + id = user.id; + return adapter.findAll(User, { + where: { + name: { + 'like': '%J%' + } + } + }); + }).then(function (users) { + assert.equal(users.length, 1); + assert.deepEqual(users[0], { id: id, name: 'John', age: null }); + return adapter.destroy(User, id); + }).then(function (destroyedUser) { + assert.isFalse(!!destroyedUser); + }); + }); it('should throw "Operator not found" error', function () { var op = '>=<';