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

@directus/data-sql

Package Overview
Dependencies
Maintainers
2
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@directus/data-sql - npm Package Compare versions

Comparing version 0.1.0 to 0.2.0

36

dist/index.d.ts
import { AbstractQueryNodeSortTargets, AbstractQuery } from '@directus/data';
interface SqlStatementSelectPrimitive {
interface SqlStatementColumn {
type: 'primitive';
table: string;
column: string;
}
interface SqlStatementSelectColumn extends SqlStatementColumn {
as?: string;

@@ -17,3 +19,3 @@ }

/**
* This is an abstract SQL query.
* This is an abstract SQL query which can be passen to all SQL drivers.
*

@@ -31,10 +33,12 @@ * @example

interface AbstractSqlQuery {
select: SqlStatementSelectPrimitive[];
select: SqlStatementSelectColumn[];
from: string;
limit?: ParameterIndex;
offset?: ParameterIndex;
order?: AbstractSqlOrder[];
order?: AbstractSqlQueryOrderNode[];
where?: AbstractSqlQueryWhereConditionNode | AbstractSqlQueryWhereLogicalNode;
intersect?: AbstractSqlQuery;
parameters: (string | boolean | number)[];
}
type AbstractSqlOrder = {
type AbstractSqlQueryOrderNode = {
orderBy: AbstractQueryNodeSortTargets;

@@ -44,2 +48,22 @@ direction: 'ASC' | 'DESC';

/**
* An abstract WHERE clause.
*/
interface AbstractSqlQueryWhereConditionNode {
type: 'condition';
target: SqlStatementColumn;
operation: 'eq' | 'lt' | 'lte' | 'gt' | 'gte' | 'in' | 'contains' | 'starts_with' | 'ends_with' | 'intersects';
negate: boolean;
compareTo: CompareValueNode;
}
interface AbstractSqlQueryWhereLogicalNode {
type: 'logical';
operator: 'and' | 'or';
negate: boolean;
childNodes: (AbstractSqlQueryWhereConditionNode | AbstractSqlQueryWhereLogicalNode)[];
}
interface CompareValueNode {
type: 'value';
parameterIndexes: number[];
}
/**
* An actual vendor specific SQL statement with its parameters.

@@ -65,2 +89,2 @@ * @example

export { AbstractSqlOrder, AbstractSqlQuery, ParameterizedSQLStatement, SqlStatementSelectPrimitive, convertAbstractQueryToAbstractSqlQuery };
export { AbstractSqlQuery, AbstractSqlQueryOrderNode, AbstractSqlQueryWhereConditionNode, AbstractSqlQueryWhereLogicalNode, CompareValueNode, ParameterizedSQLStatement, SqlStatementSelectColumn, convertAbstractQueryToAbstractSqlQuery };

@@ -32,2 +32,49 @@ // src/converter/convert-primitive.ts

// src/converter/convert-filter.ts
var convertFilter = (filter, collection, generator) => {
return convertFilterWithNegate(filter, collection, generator, false);
};
var convertFilterWithNegate = (filter, collection, generator, negate) => {
if (filter.type === "condition") {
if (filter.target.type !== "primitive") {
throw new Error("Only primitives are currently supported.");
}
if (filter.operation === "intersects" || filter.operation === "intersects_bounding_box") {
throw new Error("The intersects operators are not yet supported.");
}
return {
where: {
type: "condition",
negate,
operation: filter.operation,
target: {
column: filter.target.field,
table: collection,
type: "primitive"
},
compareTo: {
type: "value",
parameterIndexes: [generator.next().value]
}
},
parameters: [filter.compareTo.value]
};
} else if (filter.type === "negate") {
return convertFilterWithNegate(filter.childNode, collection, generator, !negate);
} else {
const children = filter.childNodes.map(
(childNode) => convertFilterWithNegate(childNode, collection, generator, false)
);
return {
where: {
type: "logical",
negate,
operator: filter.operator,
childNodes: children.map((child) => child.where)
},
parameters: children.flatMap((child) => child.parameters)
};
}
};
// src/converter/index.ts

@@ -53,11 +100,14 @@ var convertAbstractQueryToAbstractSqlQuery = (abstractQuery) => {

const idGen = parameterIndexGenerator();
if (abstractQuery.modifiers?.filter) {
const convertedFilter = convertFilter(abstractQuery.modifiers.filter, abstractQuery.collection, idGen);
statement.where = convertedFilter.where;
statement.parameters.push(...convertedFilter.parameters);
}
if (abstractQuery.modifiers?.limit) {
const idx = idGen.next().value;
statement.limit = { parameterIndex: idx };
statement.parameters[idx] = abstractQuery.modifiers.limit.value;
statement.limit = { parameterIndex: idGen.next().value };
statement.parameters.push(abstractQuery.modifiers.limit.value);
}
if (abstractQuery.modifiers?.offset) {
const idx = idGen.next().value;
statement.offset = { parameterIndex: idx };
statement.parameters[idx] = abstractQuery.modifiers.offset.value;
statement.offset = { parameterIndex: idGen.next().value };
statement.parameters.push(abstractQuery.modifiers.offset.value);
}

@@ -64,0 +114,0 @@ if (abstractQuery.modifiers?.sort) {

4

package.json
{
"name": "@directus/data-sql",
"version": "0.1.0",
"version": "0.2.0",
"type": "module",

@@ -29,3 +29,3 @@ "sideEffects": false,

"vitest": "0.31.1",
"@directus/data": "0.1.0",
"@directus/data": "0.2.0",
"@directus/random": "0.2.1",

@@ -32,0 +32,0 @@ "@directus/tsconfig": "0.0.7",

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