moleculer-db-adapter-sequelize
Advanced tools
Comparing version 0.1.9 to 0.1.10
@@ -44,3 +44,3 @@ "use strict"; | ||
name: "posts", | ||
adapter: new SequelizeAdapter("sqlite://:memory:"), | ||
adapter: new SequelizeAdapter("sqlite://:memory:", { operatorsAliases: false }), | ||
//adapter: new SequelizeAdapter({ dialect: "sqlite", storage: "d:\\moleculer-test.db"}), | ||
@@ -85,3 +85,3 @@ //adapter: new SequelizeAdapter("mssql://sa:<password>@localhost/moleculer-test"), | ||
this.logger.info("Connected successfully"); | ||
return this.adapter.clear().then(() => start()); | ||
return this.adapter.clear(); | ||
} | ||
@@ -94,3 +94,3 @@ }); | ||
function start() { | ||
return Promise.resolve() | ||
broker.start() | ||
.delay(500) | ||
@@ -184,2 +184,2 @@ .then(() => checker.execute()) | ||
broker.start(); | ||
start(); |
@@ -9,3 +9,6 @@ "use strict"; | ||
const Sequelize = require("sequelize"); | ||
const Op = Sequelize.Op; | ||
process.on("warning", e => console.warn(e.stack)); | ||
// Create broker | ||
@@ -21,3 +24,3 @@ const broker = new ServiceBroker({ | ||
name: "posts", | ||
adapter: new SequelizeAdapter("sqlite://:memory:"), | ||
adapter: new SequelizeAdapter("sqlite://:memory:", { operatorsAliases: false }), | ||
model: { | ||
@@ -41,3 +44,3 @@ name: "post", | ||
this.logger.info("Connected successfully"); | ||
return this.adapter.clear().then(() => start()); | ||
return this.adapter.clear(); | ||
} | ||
@@ -50,3 +53,3 @@ }); | ||
function start() { | ||
return Promise.resolve() | ||
broker.start() | ||
.delay(500) | ||
@@ -130,3 +133,3 @@ .then(() => checker.execute()) | ||
// Find | ||
checker.add("FIND by query ($gt)", () => adapter.find({ query: { votes: { $gt: 2 } } }), res => { | ||
checker.add("FIND by query (Op.gt)", () => adapter.find({ query: { votes: { [Op.gt]: 2 } } }), res => { | ||
console.log(res.map(adapter.entityToObject)); | ||
@@ -137,3 +140,3 @@ return res.length == 2; | ||
// Find | ||
checker.add("COUNT by query ($gt)", () => adapter.count({ query: { votes: { $gt: 2 } } }), res => { | ||
checker.add("COUNT by query (Op.gt)", () => adapter.count({ query: { votes: { [Op.gt]: 2 } } }), res => { | ||
console.log(res); | ||
@@ -168,3 +171,3 @@ return res == 2; | ||
// Update by query | ||
checker.add("UPDATE BY QUERY", () => adapter.updateMany({ votes: { $lt: 5 }}, { | ||
checker.add("UPDATE BY QUERY", () => adapter.updateMany({ votes: { [Op.lt]: 5 }}, { | ||
$set: { status: false } | ||
@@ -177,3 +180,3 @@ }), count => { | ||
// Remove by query | ||
checker.add("REMOVE BY QUERY", () => adapter.removeMany({ votes: { $lt: 5 }}), count => { | ||
checker.add("REMOVE BY QUERY", () => adapter.removeMany({ votes: { [Op.lt]: 5 }}), count => { | ||
console.log("Removed: ", count); | ||
@@ -207,2 +210,2 @@ return count == 2; | ||
broker.start(); | ||
start(); |
{ | ||
"name": "moleculer-db-adapter-sequelize", | ||
"version": "0.1.9", | ||
"version": "0.1.10", | ||
"description": "SQL adapter (Postgres, MySQL, SQLite & MSSQL) for Moleculer DB service", | ||
@@ -29,3 +29,3 @@ "main": "index.js", | ||
"peerDependencies": { | ||
"moleculer": "^0.12.0" | ||
"moleculer": "^0.12.0 || ^0.13.0" | ||
}, | ||
@@ -35,15 +35,15 @@ "devDependencies": { | ||
"coveralls": "3.0.2", | ||
"eslint": "5.1.0", | ||
"jest": "23.4.0", | ||
"jest-cli": "23.4.0", | ||
"lolex": "2.7.1", | ||
"moleculer": "0.13.0", | ||
"eslint": "5.7.0", | ||
"jest": "23.6.0", | ||
"jest-cli": "23.6.0", | ||
"lolex": "3.0.0", | ||
"moleculer": "0.13.3", | ||
"moleculer-docgen": "0.2.1", | ||
"mysql2": "1.5.3", | ||
"nodemon": "1.18.1", | ||
"npm-check": "5.7.1", | ||
"pg": "7.4.3", | ||
"mysql2": "1.6.1", | ||
"nodemon": "1.18.4", | ||
"npm-check": "5.9.0", | ||
"pg": "7.5.0", | ||
"pg-hstore": "2.3.2", | ||
"sqlite3": "4.0.1", | ||
"tedious": "2.6.3" | ||
"sqlite3": "4.0.3", | ||
"tedious": "3.0.1" | ||
}, | ||
@@ -61,4 +61,4 @@ "jest": { | ||
"dependencies": { | ||
"sequelize": "4.38.0" | ||
"sequelize": "4.41.0" | ||
} | ||
} |
@@ -42,3 +42,3 @@ ![Moleculer logo](http://moleculer.services/images/banner.png) | ||
// Create a Mongoose service for `post` entities | ||
// Create a Sequelize service for `post` entities | ||
broker.createService({ | ||
@@ -45,0 +45,0 @@ name: "posts", |
@@ -12,2 +12,3 @@ /* | ||
const Sequelize = require("sequelize"); | ||
const Op = Sequelize.Op; | ||
@@ -119,3 +120,3 @@ class SequelizeDbAdapter { | ||
findById(_id) { | ||
return this.model.findById(_id); | ||
return this.model.findByPk(_id); | ||
} | ||
@@ -134,3 +135,5 @@ | ||
where: { | ||
id: idList | ||
id: { | ||
[Op.in]: idList | ||
} | ||
} | ||
@@ -178,4 +181,3 @@ }); | ||
insertMany(entities) { | ||
const p = entities.map(e => this.model.create(e)); | ||
return Promise.all(p); | ||
return Promise.all(entities.map(e => this.model.create(e))); | ||
} | ||
@@ -286,6 +288,6 @@ | ||
q.where = { | ||
$or: fields.map(f => { | ||
[Op.or]: fields.map(f => { | ||
return { | ||
[f]: { | ||
$like: "%" + params.search + "%" | ||
[Op.like]: "%" + params.search + "%" | ||
} | ||
@@ -325,7 +327,7 @@ }; | ||
/** | ||
* Convert the `sort` param to a `sort` object to Mongo queries. | ||
* Convert the `sort` param to a `sort` object to Sequelize queries. | ||
* | ||
* @param {String|Array<String>|Object} paramSort | ||
* @returns {Object} Return with a sort object like `[["votes", "ASC"], ["title", "DESC"]]` | ||
* @memberof MongoDbAdapter | ||
* @memberof SequelizeDbAdapter | ||
*/ | ||
@@ -356,4 +358,26 @@ transformSort(paramSort) { | ||
/** | ||
* For compatibility only. | ||
* @param {Object} entity | ||
* @param {String} idField | ||
* @memberof SequelizeDbAdapter | ||
* @returns {Object} Entity | ||
*/ | ||
beforeSaveTransformID (entity, idField) { | ||
return entity; | ||
} | ||
/** | ||
* For compatibility only. | ||
* @param {Object} entity | ||
* @param {String} idField | ||
* @memberof SequelizeDbAdapter | ||
* @returns {Object} Entity | ||
*/ | ||
afterRetrieveTransformID (entity, idField) { | ||
return entity; | ||
} | ||
} | ||
module.exports = SequelizeDbAdapter; |
@@ -12,3 +12,3 @@ "use strict"; | ||
findOne: jest.fn(() => Promise.resolve()), | ||
findById: jest.fn(() => Promise.resolve()), | ||
findByPk: jest.fn(() => Promise.resolve()), | ||
create: jest.fn(() => Promise.resolve()), | ||
@@ -26,2 +26,4 @@ update: jest.fn(() => Promise.resolve([1, 2])), | ||
let Sequelize = require("sequelize"); | ||
const Op = Sequelize.Op; | ||
Sequelize.mockImplementation(() => db); | ||
@@ -57,3 +59,3 @@ | ||
describe("Test SequelizeAdapter", () => { | ||
const broker = new ServiceBroker(); | ||
const broker = new ServiceBroker({ logger: false }); | ||
const service = broker.createService({ | ||
@@ -87,2 +89,4 @@ name: "store", | ||
expect(adapter.clear).toBeDefined(); | ||
expect(adapter.beforeSaveTransformID).toBeInstanceOf(Function); | ||
expect(adapter.afterRetrieveTransformID).toBeInstanceOf(Function); | ||
}); | ||
@@ -206,6 +210,6 @@ | ||
where: { | ||
"$or": [ | ||
[Op.or]: [ | ||
{ | ||
title: { | ||
"$like": "%walter%" | ||
[Op.like]: "%walter%" | ||
} | ||
@@ -215,3 +219,3 @@ }, | ||
content: { | ||
"$like": "%walter%" | ||
[Op.like]: "%walter%" | ||
} | ||
@@ -247,8 +251,8 @@ } | ||
it("call findById", () => { | ||
adapter.model.findById.mockClear(); | ||
it("call findByPk", () => { | ||
adapter.model.findByPk.mockClear(); | ||
return adapter.findById(5).catch(protectReject).then(() => { | ||
expect(adapter.model.findById).toHaveBeenCalledTimes(1); | ||
expect(adapter.model.findById).toHaveBeenCalledWith(5); | ||
expect(adapter.model.findByPk).toHaveBeenCalledTimes(1); | ||
expect(adapter.model.findByPk).toHaveBeenCalledWith(5); | ||
}); | ||
@@ -260,5 +264,5 @@ }); | ||
return adapter.findByIds(5).catch(protectReject).then(() => { | ||
return adapter.findByIds([5]).catch(protectReject).then(() => { | ||
expect(adapter.model.findAll).toHaveBeenCalledTimes(1); | ||
expect(adapter.model.findAll).toHaveBeenCalledWith({"where": {"id": 5}}); | ||
expect(adapter.model.findAll).toHaveBeenCalledWith({"where": {"id": { [Op.in]: [5] }}}); | ||
}); | ||
@@ -366,3 +370,23 @@ }); | ||
it("should transform idField into _id", () => { | ||
let entry = { | ||
myID: "123456789", | ||
title: "My first post" | ||
}; | ||
let idField = "myID"; | ||
let res = adapter.beforeSaveTransformID(entry, idField); | ||
expect(res).toEqual(entry); | ||
}); | ||
it("should transform _id into idField", () => { | ||
let entry = { | ||
_id: "123456789", | ||
title: "My first post" | ||
}; | ||
let idField = "myID"; | ||
let res = adapter.afterRetrieveTransformID(entry, idField); | ||
expect(res).toEqual(entry); | ||
}); | ||
}); | ||
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
34311
983
+ Addedargs@5.0.3(transitive)
+ Addedbluebird@3.7.2(transitive)
+ Addedchalk@2.4.2(transitive)
+ Addedfastest-validator@0.6.19(transitive)
+ Addedglob@7.1.6(transitive)
+ Addedipaddr.js@1.9.1(transitive)
+ Addedlodash@4.17.21(transitive)
+ Addedlru-cache@5.1.1(transitive)
+ Addedmoleculer@0.13.13(transitive)
+ Addedmri@1.1.4(transitive)
+ Addedsequelize@4.41.0(transitive)
+ Addedyallist@3.1.1(transitive)
- Removedargs@4.0.0(transitive)
- Removedbluebird@3.5.1(transitive)
- Removedchalk@2.3.22.4.1(transitive)
- Removedfastest-validator@0.6.9(transitive)
- Removedglob@7.1.2(transitive)
- Removedipaddr.js@1.7.0(transitive)
- Removedlodash@4.17.10(transitive)
- Removedmoleculer@0.12.8(transitive)
- Removedmri@1.1.0(transitive)
- Removednode-object-hash@1.4.1(transitive)
- Removedsequelize@4.38.0(transitive)
Updatedsequelize@4.41.0