orma
Advanced tools
Comparing version 1.0.263 to 1.0.264
@@ -131,3 +131,3 @@ "use strict"; | ||
ast_to_sql: (args, path) => { | ||
const res = `COALESCE(${wrap_if_subquery(args.join(', '))})`; | ||
const res = `COALESCE(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`; | ||
return nested_under_odd_nots(path) ? `NOT (${res})` : res; | ||
@@ -138,3 +138,3 @@ }, | ||
$round: { | ||
ast_to_sql: args => `ROUND(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `ROUND(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
min_args: 2, | ||
@@ -169,3 +169,3 @@ max_args: 2 | ||
$if: { | ||
ast_to_sql: args => `IF(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `IF(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
min_args: 3, | ||
@@ -175,7 +175,7 @@ max_args: 3 | ||
$concat: { | ||
ast_to_sql: args => `CONCAT(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `CONCAT(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
min_args: 1 | ||
}, | ||
$group_concat: { | ||
ast_to_sql: args => `GROUP_CONCAT(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `GROUP_CONCAT(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
aggregate: true, | ||
@@ -185,3 +185,3 @@ min_args: 1 | ||
$multiply: { | ||
ast_to_sql: args => `(${wrap_if_subquery(args.join(' * '))})`, | ||
ast_to_sql: args => `(${args.map(arg => wrap_if_subquery(arg)).join(' * ')})`, | ||
min_args: 2, | ||
@@ -191,3 +191,3 @@ max_args: 2 | ||
$divide: { | ||
ast_to_sql: args => `(${wrap_if_subquery(args.join(' / '))})`, | ||
ast_to_sql: args => `(${args.map(arg => wrap_if_subquery(arg)).join(' / ')})`, | ||
min_args: 2, | ||
@@ -197,3 +197,3 @@ max_args: 2 | ||
$add: { | ||
ast_to_sql: args => `(${wrap_if_subquery(args.join(' + '))})`, | ||
ast_to_sql: args => `(${args.map(arg => wrap_if_subquery(arg)).join(' + ')})`, | ||
min_args: 2, | ||
@@ -203,3 +203,3 @@ max_args: 2 | ||
$subtract: { | ||
ast_to_sql: args => `(${wrap_if_subquery(args.join(' - '))})`, | ||
ast_to_sql: args => `(${args.map(arg => wrap_if_subquery(arg)).join(' - ')})`, | ||
min_args: 2, | ||
@@ -210,3 +210,3 @@ max_args: 2 | ||
$st_distance: { | ||
ast_to_sql: args => `ST_Distance(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `ST_Distance(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
min_args: 2, | ||
@@ -216,3 +216,3 @@ max_args: 3 | ||
$st_dwithin: { | ||
ast_to_sql: args => `ST_DWithin(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `ST_DWithin(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
min_args: 2, | ||
@@ -219,0 +219,0 @@ max_args: 3 |
@@ -237,2 +237,27 @@ "use strict"; | ||
}); | ||
(0, mocha_1.test)('Can wrap subqueries for functions part 2', () => { | ||
const json = { | ||
$multiply: [ | ||
'quantity', | ||
{ | ||
$select: ['id'], | ||
$from: 'reviews', | ||
$where: { $eq: ['listing_id', 0] } | ||
} | ||
] | ||
}; | ||
const sql = (0, sql_formatter_1.format)((0, ast_to_sql_1.json_to_sql)(json)); | ||
const goal = (0, sql_formatter_1.format)(` | ||
( | ||
quantity * ( | ||
SELECT | ||
id | ||
FROM | ||
\`reviews\` | ||
WHERE | ||
listing_id = 0 | ||
) | ||
)`); | ||
(0, chai_1.expect)(sql).to.equal(goal); | ||
}); | ||
(0, mocha_1.test)('can create table', () => { | ||
@@ -239,0 +264,0 @@ const json = { |
{ | ||
"name": "orma", | ||
"version": "1.0.263", | ||
"version": "1.0.264", | ||
"description": "A declarative relational syncronous orm", | ||
@@ -5,0 +5,0 @@ "main": "build/index.js", |
@@ -274,2 +274,30 @@ import { expect } from 'chai' | ||
}) | ||
test('Can wrap subqueries for functions part 2', () => { | ||
const json = { | ||
$multiply: [ | ||
'quantity', | ||
{ | ||
$select: ['id'], | ||
$from: 'reviews', | ||
$where: { $eq: ['listing_id', 0] } | ||
} | ||
] | ||
} | ||
const sql = format(json_to_sql(json)) | ||
const goal = format(` | ||
( | ||
quantity * ( | ||
SELECT | ||
id | ||
FROM | ||
\`reviews\` | ||
WHERE | ||
listing_id = 0 | ||
) | ||
)`) | ||
expect(sql).to.equal(goal) | ||
}) | ||
test('can create table', () => { | ||
@@ -276,0 +304,0 @@ const json: CreateStatement = { |
@@ -209,3 +209,3 @@ /** | ||
ast_to_sql: (args, path) => { | ||
const res = `COALESCE(${wrap_if_subquery(args.join(', '))})` | ||
const res = `COALESCE(${args.map(arg => wrap_if_subquery(arg)).join(', ')})` | ||
return nested_under_odd_nots(path) ? `NOT (${res})` : res | ||
@@ -216,3 +216,3 @@ }, | ||
$round: { | ||
ast_to_sql: args => `ROUND(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `ROUND(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
min_args: 2, | ||
@@ -247,3 +247,3 @@ max_args: 2 | ||
$if: { | ||
ast_to_sql: args => `IF(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `IF(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
min_args: 3, | ||
@@ -253,7 +253,7 @@ max_args: 3 | ||
$concat: { | ||
ast_to_sql: args => `CONCAT(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `CONCAT(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
min_args: 1 | ||
}, | ||
$group_concat: { | ||
ast_to_sql: args => `GROUP_CONCAT(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `GROUP_CONCAT(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
aggregate: true, | ||
@@ -263,3 +263,3 @@ min_args: 1 | ||
$multiply: { | ||
ast_to_sql: args => `(${wrap_if_subquery(args.join(' * '))})`, | ||
ast_to_sql: args => `(${args.map(arg => wrap_if_subquery(arg)).join(' * ')})`, | ||
min_args: 2, | ||
@@ -269,3 +269,3 @@ max_args: 2 | ||
$divide: { | ||
ast_to_sql: args => `(${wrap_if_subquery(args.join(' / '))})`, | ||
ast_to_sql: args => `(${args.map(arg => wrap_if_subquery(arg)).join(' / ')})`, | ||
min_args: 2, | ||
@@ -275,3 +275,3 @@ max_args: 2 | ||
$add: { | ||
ast_to_sql: args => `(${wrap_if_subquery(args.join(' + '))})`, | ||
ast_to_sql: args => `(${args.map(arg => wrap_if_subquery(arg)).join(' + ')})`, | ||
min_args: 2, | ||
@@ -281,3 +281,3 @@ max_args: 2 | ||
$subtract: { | ||
ast_to_sql: args => `(${wrap_if_subquery(args.join(' - '))})`, | ||
ast_to_sql: args => `(${args.map(arg => wrap_if_subquery(arg)).join(' - ')})`, | ||
min_args: 2, | ||
@@ -288,3 +288,3 @@ max_args: 2 | ||
$st_distance: { | ||
ast_to_sql: args => `ST_Distance(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `ST_Distance(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
min_args: 2, | ||
@@ -294,3 +294,3 @@ max_args: 3 | ||
$st_dwithin: { | ||
ast_to_sql: args => `ST_DWithin(${wrap_if_subquery(args.join(', '))})`, | ||
ast_to_sql: args => `ST_DWithin(${args.map(arg => wrap_if_subquery(arg)).join(', ')})`, | ||
min_args: 2, | ||
@@ -297,0 +297,0 @@ max_args: 3 |
1704235
41551