Socket
Socket
Sign inDemoInstall

moleculer-db-adapter-sequelize

Package Overview
Dependencies
Maintainers
0
Versions
33
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

moleculer-db-adapter-sequelize - npm Package Compare versions

Comparing version 0.2.17 to 0.2.18

6

package.json
{
"name": "moleculer-db-adapter-sequelize",
"version": "0.2.17",
"version": "0.2.18",
"description": "SQL adapter (Postgres, MySQL, SQLite & MSSQL) for Moleculer DB service",

@@ -49,3 +49,3 @@ "main": "index.js",

"sequelize": "^6.35.0",
"sqlite3": "^5.1.6",
"sqlite3": "^5.1.7",
"tedious": "^11.0.8"

@@ -66,3 +66,3 @@ },

},
"gitHead": "b8026d6b112201ed48a2160f8a8623cf816e2083"
"gitHead": "ee39037b85238f5fe481d85dd958f9e66cddf257"
}

@@ -130,4 +130,4 @@ ![Moleculer logo](http://moleculer.services/images/banner.png)

# Contact
Copyright (c) 2016-2022 MoleculerJS
Copyright (c) 2016-2024 MoleculerJS
[![@moleculerjs](https://img.shields.io/badge/github-moleculerjs-green.svg)](https://github.com/moleculerjs) [![@MoleculerJS](https://img.shields.io/badge/twitter-MoleculerJS-blue.svg)](https://twitter.com/MoleculerJS)

@@ -316,2 +316,4 @@ /*

const searchConditions = [];
// Text search

@@ -324,11 +326,35 @@ if (_.isString(params.search) && params.search !== "") {

const searchConditions = fields.map(f => {
return {
for (const f of fields) {
searchConditions.push({
[f]: {
[Op.like]: "%" + params.search + "%"
}
};
});
});
}
}
// Case insensitive search
else if (_.isString(params.iSearch) && params.iSearch !== "") {
let fields = [];
if (params.searchFields) {
fields = _.isString(params.searchFields) ? params.searchFields.split(" ") : params.searchFields;
}
const lowerCaseSearch = "%" + (params.iSearch).toLowerCase() + "%";
for (const f of fields) {
searchConditions.push(Sequelize.where(
Sequelize.fn("lower", Sequelize.col(f)),
Op.like,
lowerCaseSearch
));
}
}
// Assign only query params
if (searchConditions.length == 0) {
if (params.query) {
Object.assign(q.where, params.query);
}
// Assign query and search params
} else {
if (params.query) {
q.where[Op.and] = [

@@ -341,4 +367,2 @@ params.query,

}
} else if (params.query) {
Object.assign(q.where, params.query);
}

@@ -345,0 +369,0 @@

@@ -232,3 +232,3 @@ "use strict";

adapter.createCursor({
search: "walter",
search: "WaLtEr",
searchFields: ["title", "content"]

@@ -240,12 +240,4 @@ });

[Op.or]: [
{
title: {
[Op.like]: "%walter%"
}
},
{
content: {
[Op.like]: "%walter%"
}
}
{ "title": { [Op.like]: "%WaLtEr%" } },
{ "content": { [Op.like]: "%WaLtEr%" } }
]

@@ -256,2 +248,45 @@ }

it("call with full-text search (insensitive case) without query", () => {
adapter.model.findAll.mockClear();
adapter.createCursor({
iSearch: "WaLtEr",
searchFields: ["title", "content"]
});
expect(adapter.model.findAll).toHaveBeenCalledTimes(1);
expect(adapter.model.findAll).toHaveBeenCalledWith({
where: {
[Op.or]: [
Sequelize.where(
Sequelize.fn("lower", Sequelize.col("title")),
Op.like,
"%walter%"
),
Sequelize.where(
Sequelize.fn("lower", Sequelize.col("content")),
Op.like,
"%walter%"
)
]
}
});
});
it("call with full-text search and full-text insensitive case search without query", () => {
adapter.model.findAll.mockClear();
adapter.createCursor({
search: "WaLtEr",
iSearch: "WaLtEr",
searchFields: ["title", "content"]
});
expect(adapter.model.findAll).toHaveBeenCalledTimes(1);
expect(adapter.model.findAll).toHaveBeenCalledWith({
where: {
[Op.or]: [
{ "title": { [Op.like]: "%WaLtEr%" } },
{ "content": { [Op.like]: "%WaLtEr%" } }
]
}
});
});
it("call with full-text search with query", () => {

@@ -261,3 +296,3 @@ adapter.model.findAll.mockClear();

query: { status: 1 },
search: "walter",
search: "wAlTeR",
searchFields: ["title", "content"]

@@ -271,14 +306,5 @@ });

{ [Op.or]: [
{
title: {
[Op.like]: "%walter%"
}
},
{
content: {
[Op.like]: "%walter%"
}
}
]
}
{ "title": { [Op.like]: "%wAlTeR%" } },
{ "content": { [Op.like]: "%wAlTeR%" } }
] }
]

@@ -289,2 +315,53 @@ }

it("call with full-text search (insensitive case) with query", () => {
adapter.model.findAll.mockClear();
adapter.createCursor({
query: { status: 1 },
iSearch: "wAlTeR",
searchFields: ["title", "content"]
});
expect(adapter.model.findAll).toHaveBeenCalledTimes(1);
expect(adapter.model.findAll).toHaveBeenCalledWith({
where: {
[Op.and]: [
{ status: 1 },
{ [Op.or]: [
Sequelize.where(
Sequelize.fn("lower", Sequelize.col("title")),
Op.like,
"%walter%"
),
Sequelize.where(
Sequelize.fn("lower", Sequelize.col("content")),
Op.like,
"%walter%"
)
] }
]
}
});
});
it("call with full-text search and full-text insensitive case search with query", () => {
adapter.model.findAll.mockClear();
adapter.createCursor({
query: { status: 1 },
search: "wAlTeR",
iSearch: "wAlTeR",
searchFields: ["title", "content"]
});
expect(adapter.model.findAll).toHaveBeenCalledTimes(1);
expect(adapter.model.findAll).toHaveBeenCalledWith({
where: {
[Op.and]: [
{ status: 1 },
{ [Op.or]: [
{ "title": { [Op.like]: "%wAlTeR%" } },
{ "content": { [Op.like]: "%wAlTeR%" } }
] }
]
}
});
});
it("call with full-text search & advanced query", () => {

@@ -299,3 +376,3 @@ adapter.model.findAll.mockClear();

},
search: "walter",
search: "WALTER",
searchFields: ["title", "content"]

@@ -312,12 +389,4 @@ });

{ [Op.or]: [
{
title: {
[Op.like]: "%walter%"
}
},
{
content: {
[Op.like]: "%walter%"
}
}
{ "title": { [Op.like]: "%WALTER%" } },
{ "content": { [Op.like]: "%WALTER%" } }
] }

@@ -329,2 +398,68 @@ ]

it("call with full-text search (insensitive case) & advanced query", () => {
adapter.model.findAll.mockClear();
adapter.createCursor({
query: {
[Op.or]: [
{ status: 1 },
{ deleted: 0 }
]
},
iSearch: "WALTER",
searchFields: ["title", "content"]
});
expect(adapter.model.findAll).toHaveBeenCalledTimes(1);
expect(adapter.model.findAll).toHaveBeenCalledWith({
where: {
[Op.and]: [
{ [Op.or]: [
{ status: 1 },
{ deleted: 0 },
] },
{ [Op.or]: [
Sequelize.where(
Sequelize.fn("lower", Sequelize.col("title")),
Op.like,
"%walter%"
),
Sequelize.where(
Sequelize.fn("lower", Sequelize.col("content")),
Op.like,
"%walter%"
)
] }
]
}
});
});
it("call with full-text search and full-text insensitive case search & advanced query", () => {
adapter.model.findAll.mockClear();
adapter.createCursor({
query: {
[Op.or]: [
{ status: 1 },
{ deleted: 0 }
]
},
search: "WALTER",
iSearch: "WALTER",
searchFields: ["title", "content"]
});
expect(adapter.model.findAll).toHaveBeenCalledTimes(1);
expect(adapter.model.findAll).toHaveBeenCalledWith({
where: {
[Op.and]: [
{ [Op.or]: [
{ status: 1 },
{ deleted: 0 },
] },
{ [Op.or]: [
{ "title": { [Op.like]: "%WALTER%" } },
{ "content": { [Op.like]: "%WALTER%" } }
] }
]
}
});
});
});

@@ -331,0 +466,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc