Socket
Socket
Sign inDemoInstall

objection

Package Overview
Dependencies
Maintainers
2
Versions
201
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

objection - npm Package Compare versions

Comparing version 2.2.5 to 2.2.6

lib/queryBuilder/operations/MergeOperation.js

77

lib/queryBuilder/operations/UpdateOperation.js

@@ -41,3 +41,3 @@ 'use strict';

const json = this.model.$toDatabaseJson(builder);
const convertedJson = this.convertFieldExpressionsToRaw(builder, json);
const convertedJson = convertFieldExpressionsToRaw(builder, this.model, json);

@@ -51,39 +51,2 @@ return knexBuilder.update(convertedJson);

convertFieldExpressionsToRaw(builder, json) {
const knex = builder.knex();
const convertedJson = {};
for (const key of Object.keys(json)) {
let val = json[key];
if (key.indexOf(':') > -1) {
// 'col:attr' : ref('other:lol') is transformed to
// "col" : raw(`jsonb_set("col", '{attr}', to_jsonb("other"#>'{lol}'), true)`)
let parsed = ref(key);
let jsonRefs = '{' + parsed.parsedExpr.access.map((it) => it.ref).join(',') + '}';
let valuePlaceholder = '?';
if (isKnexQueryBuilder(val) || isKnexRaw(val)) {
valuePlaceholder = 'to_jsonb(?)';
} else {
val = JSON.stringify(val);
}
convertedJson[
parsed.column
] = knex.raw(`jsonb_set(??, '${jsonRefs}', ${valuePlaceholder}, true)`, [
convertedJson[parsed.column] || parsed.column,
val,
]);
delete this.model[key];
} else {
convertedJson[key] = val;
}
}
return convertedJson;
}
toFindOperation() {

@@ -134,4 +97,42 @@ return null;

function convertFieldExpressionsToRaw(builder, model, json) {
const knex = builder.knex();
const convertedJson = {};
for (const key of Object.keys(json)) {
let val = json[key];
if (key.indexOf(':') > -1) {
// 'col:attr' : ref('other:lol') is transformed to
// "col" : raw(`jsonb_set("col", '{attr}', to_jsonb("other"#>'{lol}'), true)`)
let parsed = ref(key);
let jsonRefs = '{' + parsed.parsedExpr.access.map((it) => it.ref).join(',') + '}';
let valuePlaceholder = '?';
if (isKnexQueryBuilder(val) || isKnexRaw(val)) {
valuePlaceholder = 'to_jsonb(?)';
} else {
val = JSON.stringify(val);
}
convertedJson[
parsed.column
] = knex.raw(`jsonb_set(??, '${jsonRefs}', ${valuePlaceholder}, true)`, [
convertedJson[parsed.column] || parsed.column,
val,
]);
delete model[key];
} else {
convertedJson[key] = val;
}
}
return convertedJson;
}
module.exports = {
UpdateOperation,
convertFieldExpressionsToRaw,
};

@@ -7,2 +7,3 @@ 'use strict';

const { KnexOperation } = require('./operations/KnexOperation');
const { MergeOperation } = require('./operations/MergeOperation');
const { SelectOperation } = require('./operations/select/SelectOperation');

@@ -697,3 +698,3 @@ const { ReturningOperation } = require('./operations/ReturningOperation');

merge(...args) {
return this.addOperation(new KnexOperation('merge'), args);
return this.addOperation(new MergeOperation('merge'), args);
}

@@ -700,0 +701,0 @@ }

@@ -7,3 +7,3 @@ 'use strict';

function isEmpty(item) {
if (Array.isArray(item)) {
if (Array.isArray(item) || Buffer.isBuffer(item)) {
return item.length === 0;

@@ -10,0 +10,0 @@ } else if (isObject(item)) {

{
"name": "objection",
"version": "2.2.5",
"version": "2.2.6",
"description": "An SQL-friendly ORM for Node.js",

@@ -5,0 +5,0 @@ "main": "lib/objection.js",

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