New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@linked-db/linked-ql

Package Overview
Dependencies
Maintainers
0
Versions
125
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@linked-db/linked-ql - npm Package Compare versions

Comparing version 0.9.0 to 0.9.1

2

package.json

@@ -14,3 +14,3 @@ {

"icon": "https://webqit.io/icon.svg",
"version": "0.9.0",
"version": "0.9.1",
"license": "MIT",

@@ -17,0 +17,0 @@ "repository": {

@@ -53,12 +53,12 @@

*
* @param Number|Object|Function clauses
* @param Number|Object|Function modifiers
*
* @param Array fields
* @param Object|Function|Number clauses
* @param Object|Function|Number modifiers
*/
async count(...args) {
const fields = [].concat(Array.isArray(args[0]) || typeof args[0] === 'string' ? args.shift() : '*');
const fields = [].concat(Array.isArray(args[0]) ? args.shift() : '*');
if (fields.length !== 1) throw new Error(`Count expects exactly one field.`);
const result = await this.select([ q => q.fn('COUNT', fields[0]).as('c') ], ...args);
return !Array.isArray(result)/*for when clauses.where is an ID*/ ? result.c : result[0].c;
return !Array.isArray(result)/*for when modifiers.where is an ID*/ ? result.c : result[0].c;
}

@@ -71,6 +71,6 @@

*
* @param Number|Object|Function clauses
* @param Number|Object|Function modifiers
*
* @param Array fields
* @param Object|Function|Number clauses
* @param Object|Function|Number modifiers
*/

@@ -83,7 +83,7 @@ async select(...args) {

query.select(...fields);
const clauses = args.shift() || {};
await this.$applyClauses(query, clauses);
const modifiers = args.shift() || {};
await this.$applyModifiers(query, modifiers);
// Handle
const result = await this.database.client.query(query);
if (['string', 'number'].includes(typeof clauses.where)) return result[0];
if (['string', 'number'].includes(typeof modifiers.where)) return result[0];
return result;

@@ -96,10 +96,10 @@ }

* @param Object payload
* @param Object|Function clauses
* @param Object|Function modifiers
*
* @param Array multilinePayload
* @param Object|Function clauses
* @param Object|Function modifiers
*
* @param Array columns
* @param Array multilineValues
* @param Object|Function clauses
* @param Object|Function modifiers
*/

@@ -109,14 +109,14 @@ async insert(...args) {

query.into([this.database.name, this.name]);
const [ columns = [], values = [], clauses ] = await this.$resolvePayload(...args);
const [ columns = [], values = [], modifiers ] = await this.$resolvePayload(...args);
// Payload
if (columns.length) query.columns(...columns);
for (const row of values) query.values(...row);
if (_isObject(clauses) && clauses.returning) {
query.returning(clauses.returning);
} else if (_isFunction(clauses)) {
clauses(query);
if (_isObject(modifiers) && modifiers.returning) {
query.returning(modifiers.returning);
} else if (_isFunction(modifiers)) {
modifiers(query);
}
// Handle
const result = await this.database.client.query(query);
if (_isObject(args[0]) && clauses?.returning) return result[0];
if (_isObject(args[0]) && modifiers?.returning) return result[0];
return result;

@@ -129,10 +129,10 @@ }

* @param Object payload
* @param Object|Function clauses
* @param Object|Function modifiers
*
* @param Array multilinePayload
* @param Object|Function clauses
* @param Object|Function modifiers
*
* @param Array columns
* @param Array multilineValues
* @param Object|Function clauses
* @param Object|Function modifiers
*/

@@ -142,10 +142,10 @@ async upsert(...args) {

query.into([this.database.name, this.name]);
const [ columns = [], values = [], clauses ] = await this.$resolvePayload(...args);
const [ columns = [], values = [], modifiers ] = await this.$resolvePayload(...args);
// Payload
if (columns.length) query.columns(...columns);
for (const row of values) query.values(...row);
if (_isObject(clauses) && clauses.returning) {
query.returning(clauses.returning);
} else if (_isFunction(clauses)) {
clauses(query);
if (_isObject(modifiers) && modifiers.returning) {
query.returning(modifiers.returning);
} else if (_isFunction(modifiers)) {
modifiers(query);
}

@@ -164,3 +164,3 @@ // On-conflict

const result = await this.database.client.query(query);
if (_isObject(args[0]) && clauses?.returning) return result[0];
if (_isObject(args[0]) && modifiers?.returning) return result[0];
return result;

@@ -173,13 +173,13 @@ }

* @param Object payload
* @param Object|Function|Number clauses
* @param Object|Function|Number modifiers
*/
async update(payload, clauses) {
if (!clauses) throw new Error(`The "clauses" parameter cannot be ommitted.`);
async update(payload, modifiers) {
if (!modifiers) throw new Error(`The "modifiers" parameter cannot be ommitted.`);
const query = new UpdateStatement(this.database.client);
query.table([this.database.name, this.name]);
for (const [k, v] of Object.entries(payload)) query.set(k, toVal(v, this.params.autoBindings));
await this.$applyClauses(query, clauses);
await this.$applyModifiers(query, modifiers);
// Handle
const result = await this.database.client.query(query);
if (['string', 'number'].includes(typeof clauses.where) && clauses.returning) return result[0];
if (['string', 'number'].includes(typeof modifiers.where) && modifiers.returning) return result[0];
return result;

@@ -191,12 +191,12 @@ }

*
* @param Object|Function|Number clauses
* @param Object|Function|Number modifiers
*/
async delete(clauses) {
if (!clauses) throw new Error(`The "clauses" parameter cannot be ommitted.`);
async delete(modifiers) {
if (!modifiers) throw new Error(`The "modifiers" parameter cannot be ommitted.`);
const query = new DeleteStatement(this.database.client);
query.from([this.database.name, this.name]);
await this.$applyClauses(query, clauses);
await this.$applyModifiers(query, modifiers);
// Handle
const result = await this.database.client.query(query);
if (['string', 'number'].includes(typeof clauses.where) && clauses.returning) return result[0];
if (['string', 'number'].includes(typeof modifiers.where) && modifiers.returning) return result[0];
return result;

@@ -213,21 +213,21 @@ }

* @param Query query
* @param Object|Function|Number|Bool clauses
* @param Object|Function|Number|Bool modifiers
*/
async $applyClauses(query, clauses) {
if (clauses === true) return;
if (_isObject(clauses)) {
async $applyModifiers(query, modifiers) {
if (modifiers === true) return;
if (_isObject(modifiers)) {
const addWheres = wheres => query.where(...Object.entries(wheres).map(([k, v]) => q => q.equals(k, toVal(v, this.params.autoBindings))));
if (['string', 'number'].includes(typeof clauses.where)) {
if (['string', 'number'].includes(typeof modifiers.where)) {
const schema = await this.database.describeTable(this.name);
const primaryKey = schema.columns?.find(col => col.primaryKey)?.name || schema.constraints?.find(cons => cons.type === 'PRIMARY_KEY')?.targetColumns[0];
if (!primaryKey) throw new Error(`Cannot resolve primary key name for implied record.`);
addWheres({ [primaryKey]: clauses.where });
} else if (_isObject(clauses.where)) addWheres(clauses.where);
else if (clauses.where) query.where(clauses.where);
if (clauses.limit) query.limit(clauses.limit);
if (clauses.returning) query.returning(clauses.returning);
} else if (_isFunction(clauses)) {
clauses(query);
} else if (/^\d+$/.test(clauses)) {
query.limit(clauses);
addWheres({ [primaryKey]: modifiers.where });
} else if (_isObject(modifiers.where)) addWheres(modifiers.where);
else if (modifiers.where) query.where(modifiers.where);
if (modifiers.limit) query.limit(modifiers.limit);
if (modifiers.returning) query.returning(modifiers.returning);
} else if (_isFunction(modifiers)) {
modifiers(query);
} else if (/^\d+$/.test(modifiers)) {
query.limit(modifiers);
}

@@ -240,16 +240,16 @@ }

* @param Object payload
* @param Object|Function clauses
* @param Object|Function modifiers
*
* @param Array multilinePayload
* @param Object|Function clauses
* @param Object|Function modifiers
*
* @param Array columns
* @param Array multilineValues
* @param Object|Function clauses
* @param Object|Function modifiers
*/
async $resolvePayload(...args) {
let columns = [], values = [], clauses;
let columns = [], values = [], modifiers;
if (Array.isArray(args[0]) && /*important*/args[0].every(s => typeof s === 'string') && Array.isArray(args[1])) {
if (!args[1].every(s => Array.isArray(s))) throw new TypeError(`Invalid payload format.`);
[ columns, values, clauses ] = args.splice(0, 3);
[ columns, values, modifiers ] = args.splice(0, 3);
} else {

@@ -260,6 +260,6 @@ const payload = [].concat(args.shift());

values = payload.map(row => Object.values(row));
clauses = args.shift();
modifiers = args.shift();
}
values = values.map(row => row.map(v => toVal(v, this.params.autoBindings)));
return [columns, values, clauses];
return [columns, values, modifiers];
}

@@ -266,0 +266,0 @@ }

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

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