proto.io 0.0.168 → 0.0.169
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/file/database.d.ts +2 -2
- package/dist/adapters/file/database.js +1 -1
- package/dist/adapters/file/database.mjs +1 -1
- package/dist/adapters/file/filesystem.d.ts +2 -2
- package/dist/adapters/file/google-cloud-storage.d.ts +2 -2
- package/dist/adapters/storage/progres.d.ts +1 -1
- package/dist/adapters/storage/progres.js +41 -81
- package/dist/adapters/storage/progres.js.map +1 -1
- package/dist/adapters/storage/progres.mjs +41 -81
- package/dist/adapters/storage/progres.mjs.map +1 -1
- package/dist/client.d.ts +3 -3
- package/dist/client.js +1 -1
- package/dist/client.mjs +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/index.mjs +4 -4
- package/dist/internals/{index-BejQNqvC.mjs → index-B1wqSio6.mjs} +1 -2
- package/dist/internals/index-B1wqSio6.mjs.map +1 -0
- package/dist/internals/{index-rkqvel7o.d.ts → index-B5u7VXjz.d.ts} +2 -2
- package/dist/internals/index-B5u7VXjz.d.ts.map +1 -0
- package/dist/internals/{index-y8EePsDY.d.ts → index-BB2vDnq0.d.ts} +2 -2
- package/dist/internals/index-BB2vDnq0.d.ts.map +1 -0
- package/dist/internals/{index-CyzpkgJB.js → index-BJP46VGq.js} +2 -2
- package/dist/internals/index-BJP46VGq.js.map +1 -0
- package/dist/internals/{index-CSNRyhjB.js → index-CzfsyXvb.js} +1 -2
- package/dist/internals/index-CzfsyXvb.js.map +1 -0
- package/dist/internals/{index-Dyfia5Om.mjs → index-D0hHgn2P.mjs} +2 -2
- package/dist/internals/index-D0hHgn2P.mjs.map +1 -0
- package/dist/internals/{index-BQggoDNX.d.ts → index-D_GYwO8X.d.ts} +2 -2
- package/dist/internals/index-D_GYwO8X.d.ts.map +1 -0
- package/dist/internals/{random-DrURPPxr.mjs → random-BCpwYpyw.mjs} +2 -2
- package/dist/internals/{random-DrURPPxr.mjs.map → random-BCpwYpyw.mjs.map} +1 -1
- package/dist/internals/{random-q0PeamQE.js → random-Dytum6Nh.js} +2 -2
- package/dist/internals/{random-q0PeamQE.js.map → random-Dytum6Nh.js.map} +1 -1
- package/package.json +1 -1
- package/dist/internals/index-BQggoDNX.d.ts.map +0 -1
- package/dist/internals/index-BejQNqvC.mjs.map +0 -1
- package/dist/internals/index-CSNRyhjB.js.map +0 -1
- package/dist/internals/index-CyzpkgJB.js.map +0 -1
- package/dist/internals/index-Dyfia5Om.mjs.map +0 -1
- package/dist/internals/index-rkqvel7o.d.ts.map +0 -1
- package/dist/internals/index-y8EePsDY.d.ts.map +0 -1
|
@@ -5,9 +5,9 @@ import QueryStream from 'pg-query-stream';
|
|
|
5
5
|
import { asyncStream } from '@o2ter/utils-js';
|
|
6
6
|
import Decimal from 'decimal.js';
|
|
7
7
|
import { escapeLiteral, escapeIdentifier } from 'pg/lib/utils';
|
|
8
|
-
import { a as QueryCoditionalSelector, b as QueryFieldSelector, c as QueryExpressionSelector, d as QueryDistanceExpression, e as QueryCoditionalExpression, f as QueryComparisonExpression, g as QueryNotExpression, h as QueryArrayExpression, i as QueryValueExpression, j as QueryKeyExpression, Q as QuerySelector, F as FieldSelectorExpression } from '../../internals/index-
|
|
8
|
+
import { a as QueryCoditionalSelector, b as QueryFieldSelector, c as QueryExpressionSelector, d as QueryDistanceExpression, e as QueryCoditionalExpression, f as QueryComparisonExpression, g as QueryNotExpression, h as QueryArrayExpression, i as QueryValueExpression, j as QueryKeyExpression, Q as QuerySelector, F as FieldSelectorExpression } from '../../internals/index-B1wqSio6.mjs';
|
|
9
9
|
import '@o2ter/crypto-js';
|
|
10
|
-
import { r as resolveColumn, a as resolveDataType, g as generateId, Q as QueryValidator } from '../../internals/random-
|
|
10
|
+
import { r as resolveColumn, a as resolveDataType, g as generateId, Q as QueryValidator } from '../../internals/random-BCpwYpyw.mjs';
|
|
11
11
|
import { P as PVK } from '../../internals/private-BUpLAMZi.mjs';
|
|
12
12
|
|
|
13
13
|
//
|
|
@@ -885,9 +885,6 @@ const fetchElement = (compiler, parent, field) => {
|
|
|
885
885
|
relation: {
|
|
886
886
|
target: dataType.target,
|
|
887
887
|
populate,
|
|
888
|
-
mapElem: (callback) => sql `SELECT
|
|
889
|
-
${callback(sql `${json ? sql `VALUE` : sql `UNNEST`}`)}
|
|
890
|
-
FROM ${json ? sql `jsonb_array_elements(${element})` : sql `UNNEST(${element})`}`,
|
|
891
888
|
},
|
|
892
889
|
};
|
|
893
890
|
}
|
|
@@ -2128,12 +2125,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2128
2125
|
case '$lt':
|
|
2129
2126
|
case '$lte':
|
|
2130
2127
|
{
|
|
2131
|
-
const
|
|
2128
|
+
const op = {
|
|
2132
2129
|
'$gt': '>',
|
|
2133
2130
|
'$gte': '>=',
|
|
2134
2131
|
'$lt': '<',
|
|
2135
2132
|
'$lte': '<=',
|
|
2136
|
-
};
|
|
2133
|
+
}[expr.type];
|
|
2137
2134
|
if (_.isRegExp(expr.value) || expr.value instanceof QuerySelector || expr.value instanceof FieldSelectorExpression)
|
|
2138
2135
|
break;
|
|
2139
2136
|
if (dataType && isPrimitive(dataType)) {
|
|
@@ -2141,46 +2138,47 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2141
2138
|
case 'boolean':
|
|
2142
2139
|
if (!_.isBoolean(expr.value))
|
|
2143
2140
|
break;
|
|
2144
|
-
return sql `${element} ${{ literal:
|
|
2141
|
+
return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
|
|
2145
2142
|
case 'number':
|
|
2146
2143
|
case 'decimal':
|
|
2147
2144
|
if (!(expr.value instanceof Decimal) && !_.isNumber(expr.value))
|
|
2148
2145
|
break;
|
|
2149
|
-
return sql `${element} ${{ literal:
|
|
2146
|
+
return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
|
|
2150
2147
|
case 'string':
|
|
2151
2148
|
if (!_.isString(expr.value))
|
|
2152
2149
|
break;
|
|
2153
|
-
return sql `${element} ${{ literal:
|
|
2150
|
+
return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
|
|
2154
2151
|
case 'date':
|
|
2155
2152
|
if (!_.isDate(expr.value))
|
|
2156
2153
|
break;
|
|
2157
|
-
return sql `${element} ${{ literal:
|
|
2154
|
+
return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
|
|
2158
2155
|
}
|
|
2159
2156
|
}
|
|
2160
2157
|
else if (!_.isString(dataType) && dataType?.type === 'pointer' && expr.value instanceof TObject && expr.value.objectId) {
|
|
2161
|
-
return sql `${element} ${{ literal:
|
|
2158
|
+
return sql `${element} ${{ literal: op }} ${{ value: expr.value.objectId }}`;
|
|
2162
2159
|
}
|
|
2163
2160
|
else if (!dataType) {
|
|
2164
2161
|
if (expr.value instanceof Decimal || _.isNumber(expr.value)) {
|
|
2165
2162
|
return sql `(
|
|
2166
2163
|
jsonb_typeof(${element}) ${nullSafeEqual()} 'number'
|
|
2167
|
-
AND ${element}::NUMERIC ${{ literal:
|
|
2164
|
+
AND ${element}::NUMERIC ${{ literal: op }} ${{ value: expr.value instanceof Decimal ? expr.value.toNumber() : expr.value }}
|
|
2168
2165
|
) OR (
|
|
2169
2166
|
jsonb_typeof(${element} -> '$decimal') ${nullSafeEqual()} 'string'
|
|
2170
|
-
AND (${element} ->> '$decimal')::DECIMAL ${{ literal:
|
|
2167
|
+
AND (${element} ->> '$decimal')::DECIMAL ${{ literal: op }} ${{ value: expr.value instanceof Decimal ? expr.value.toString() : expr.value }}::DECIMAL
|
|
2171
2168
|
)`;
|
|
2172
2169
|
}
|
|
2173
2170
|
else if (_.isDate(expr.value)) {
|
|
2174
2171
|
return sql `(
|
|
2175
2172
|
jsonb_typeof(${element} -> '$date') ${nullSafeEqual()} 'string'
|
|
2176
|
-
AND ${element} ${{ literal:
|
|
2173
|
+
AND ${element} ${{ literal: op }} ${encodeValue(expr.value)}
|
|
2177
2174
|
)`;
|
|
2178
2175
|
}
|
|
2179
2176
|
else {
|
|
2180
|
-
return sql `${element} ${{ literal:
|
|
2177
|
+
return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
|
|
2181
2178
|
}
|
|
2182
2179
|
}
|
|
2183
2180
|
}
|
|
2181
|
+
break;
|
|
2184
2182
|
case '$in':
|
|
2185
2183
|
{
|
|
2186
2184
|
if (!_.isArray(expr.value))
|
|
@@ -2216,6 +2214,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2216
2214
|
return sql `${element} IN (${_.map(values, x => encodeValue(x))})`;
|
|
2217
2215
|
}
|
|
2218
2216
|
}
|
|
2217
|
+
break;
|
|
2219
2218
|
case '$nin':
|
|
2220
2219
|
{
|
|
2221
2220
|
if (!_.isArray(expr.value))
|
|
@@ -2251,76 +2250,34 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2251
2250
|
return sql `${element} NOT IN (${_.map(values, x => encodeValue(x))})`;
|
|
2252
2251
|
}
|
|
2253
2252
|
}
|
|
2253
|
+
break;
|
|
2254
2254
|
case '$subset':
|
|
2255
|
-
{
|
|
2256
|
-
if (!_.isArray(expr.value))
|
|
2257
|
-
break;
|
|
2258
|
-
if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
|
|
2259
|
-
return sql `${element} <@ ${{ value: _encodeValue(expr.value) }}`;
|
|
2260
|
-
}
|
|
2261
|
-
if (relation) {
|
|
2262
|
-
if (!_.every(expr.value, x => x instanceof TObject && x.objectId))
|
|
2263
|
-
break;
|
|
2264
|
-
return sql `ARRAY(${relation.mapElem((v) => sql `${v} ->> '_id'`)}) <@ ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
|
|
2265
|
-
}
|
|
2266
|
-
if (!dataType) {
|
|
2267
|
-
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} <@ ${_encodeJsonValue(_encodeValue(expr.value))}`;
|
|
2268
|
-
}
|
|
2269
|
-
}
|
|
2270
2255
|
case '$superset':
|
|
2271
|
-
{
|
|
2272
|
-
if (!_.isArray(expr.value))
|
|
2273
|
-
break;
|
|
2274
|
-
if (_.isEmpty(expr.value))
|
|
2275
|
-
return sql `true`;
|
|
2276
|
-
if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
|
|
2277
|
-
return sql `${element} @> ${{ value: _encodeValue(expr.value) }}`;
|
|
2278
|
-
}
|
|
2279
|
-
if (relation) {
|
|
2280
|
-
if (!_.every(expr.value, x => x instanceof TObject && x.objectId))
|
|
2281
|
-
break;
|
|
2282
|
-
return sql `ARRAY(${relation.mapElem((v) => sql `${v} ->> '_id'`)}) @> ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
|
|
2283
|
-
}
|
|
2284
|
-
if (!dataType) {
|
|
2285
|
-
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} @> ${_encodeJsonValue(_encodeValue(expr.value))}`;
|
|
2286
|
-
}
|
|
2287
|
-
}
|
|
2288
|
-
case '$disjoint':
|
|
2289
|
-
{
|
|
2290
|
-
if (!_.isArray(expr.value))
|
|
2291
|
-
break;
|
|
2292
|
-
if (_.isEmpty(expr.value))
|
|
2293
|
-
return sql `true`;
|
|
2294
|
-
if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
|
|
2295
|
-
return sql `NOT ${element} && ${{ value: _encodeValue(expr.value) }}`;
|
|
2296
|
-
}
|
|
2297
|
-
if (relation) {
|
|
2298
|
-
if (!_.every(expr.value, x => x instanceof TObject && x.objectId))
|
|
2299
|
-
break;
|
|
2300
|
-
return sql `NOT ARRAY(${relation.mapElem((v) => sql `${v} ->> '_id'`)}) && ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
|
|
2301
|
-
}
|
|
2302
|
-
if (!dataType) {
|
|
2303
|
-
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND NOT ${element} && ${_encodeJsonValue(_encodeValue(expr.value))}`;
|
|
2304
|
-
}
|
|
2305
|
-
}
|
|
2306
2256
|
case '$intersect':
|
|
2307
2257
|
{
|
|
2258
|
+
const op = {
|
|
2259
|
+
'$subset': '<@',
|
|
2260
|
+
'$superset': '@>',
|
|
2261
|
+
'$intersect': '&&',
|
|
2262
|
+
}[expr.type];
|
|
2308
2263
|
if (!_.isArray(expr.value))
|
|
2309
2264
|
break;
|
|
2310
2265
|
if (_.isEmpty(expr.value))
|
|
2311
|
-
return sql `
|
|
2266
|
+
return sql `true`;
|
|
2312
2267
|
if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
|
|
2313
|
-
return sql `${element}
|
|
2268
|
+
return sql `${element} ${{ literal: op }} ${{ value: _encodeValue(expr.value) }}`;
|
|
2314
2269
|
}
|
|
2315
|
-
if (relation) {
|
|
2270
|
+
if (relation && parent.className) {
|
|
2316
2271
|
if (!_.every(expr.value, x => x instanceof TObject && x.objectId))
|
|
2317
2272
|
break;
|
|
2318
|
-
|
|
2273
|
+
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2274
|
+
return sql `ARRAY(SELECT ${{ identifier: '_id' }} FROM (${populate})) ${{ literal: op }} ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
|
|
2319
2275
|
}
|
|
2320
2276
|
if (!dataType) {
|
|
2321
|
-
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element}
|
|
2277
|
+
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} ${{ literal: op }} ${_encodeJsonValue(_encodeValue(expr.value))}`;
|
|
2322
2278
|
}
|
|
2323
2279
|
}
|
|
2280
|
+
break;
|
|
2324
2281
|
case '$not':
|
|
2325
2282
|
{
|
|
2326
2283
|
if (!(expr.value instanceof FieldSelectorExpression))
|
|
@@ -2350,6 +2307,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2350
2307
|
}
|
|
2351
2308
|
}
|
|
2352
2309
|
}
|
|
2310
|
+
break;
|
|
2353
2311
|
case '$starts':
|
|
2354
2312
|
{
|
|
2355
2313
|
if (!_.isString(expr.value))
|
|
@@ -2361,6 +2319,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2361
2319
|
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'string' AND (${element} #>> '{}') LIKE ${{ value: `${expr.value.replace(/([\\_%])/g, '\\$1')}%` }}`;
|
|
2362
2320
|
}
|
|
2363
2321
|
}
|
|
2322
|
+
break;
|
|
2364
2323
|
case '$ends':
|
|
2365
2324
|
{
|
|
2366
2325
|
if (!_.isString(expr.value))
|
|
@@ -2372,6 +2331,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2372
2331
|
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'string' AND (${element} #>> '{}') LIKE ${{ value: `%${expr.value.replace(/([\\_%])/g, '\\$1')}` }}`;
|
|
2373
2332
|
}
|
|
2374
2333
|
}
|
|
2334
|
+
break;
|
|
2375
2335
|
case '$size':
|
|
2376
2336
|
{
|
|
2377
2337
|
if (!_.isNumber(expr.value) || !_.isSafeInteger(expr.value))
|
|
@@ -2392,6 +2352,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2392
2352
|
)`;
|
|
2393
2353
|
}
|
|
2394
2354
|
}
|
|
2355
|
+
break;
|
|
2395
2356
|
case '$empty':
|
|
2396
2357
|
{
|
|
2397
2358
|
if (!_.isBoolean(expr.value))
|
|
@@ -2412,11 +2373,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2412
2373
|
)`;
|
|
2413
2374
|
}
|
|
2414
2375
|
}
|
|
2376
|
+
break;
|
|
2415
2377
|
case '$every':
|
|
2416
2378
|
{
|
|
2417
2379
|
if (!(expr.value instanceof QuerySelector))
|
|
2418
2380
|
break;
|
|
2419
|
-
if (relation
|
|
2381
|
+
if (relation && parent.className) {
|
|
2420
2382
|
const tempName = `_populate_expr_$${compiler.nextIdx()}`;
|
|
2421
2383
|
const filter = compiler._encodeFilter({
|
|
2422
2384
|
name: tempName,
|
|
@@ -2425,11 +2387,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2425
2387
|
}, expr.value);
|
|
2426
2388
|
if (!filter)
|
|
2427
2389
|
break;
|
|
2390
|
+
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2428
2391
|
return sql `NOT EXISTS(
|
|
2429
|
-
SELECT * FROM (${
|
|
2430
|
-
className: parent.className,
|
|
2431
|
-
name: parent.name,
|
|
2432
|
-
}, relation.populate, `$${field}`, false)}) AS ${{ identifier: tempName }}
|
|
2392
|
+
SELECT * FROM (${populate}) AS ${{ identifier: tempName }}
|
|
2433
2393
|
WHERE NOT (${filter})
|
|
2434
2394
|
)`;
|
|
2435
2395
|
}
|
|
@@ -2450,11 +2410,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2450
2410
|
)`;
|
|
2451
2411
|
}
|
|
2452
2412
|
}
|
|
2413
|
+
break;
|
|
2453
2414
|
case '$some':
|
|
2454
2415
|
{
|
|
2455
2416
|
if (!(expr.value instanceof QuerySelector))
|
|
2456
2417
|
break;
|
|
2457
|
-
if (relation
|
|
2418
|
+
if (relation && parent.className) {
|
|
2458
2419
|
const tempName = `_populate_expr_$${compiler.nextIdx()}`;
|
|
2459
2420
|
const filter = compiler._encodeFilter({
|
|
2460
2421
|
name: tempName,
|
|
@@ -2463,11 +2424,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2463
2424
|
}, expr.value);
|
|
2464
2425
|
if (!filter)
|
|
2465
2426
|
break;
|
|
2427
|
+
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2466
2428
|
return sql `EXISTS(
|
|
2467
|
-
SELECT * FROM (${
|
|
2468
|
-
className: parent.className,
|
|
2469
|
-
name: parent.name,
|
|
2470
|
-
}, relation.populate, `$${field}`, false)}) AS ${{ identifier: tempName }}
|
|
2429
|
+
SELECT * FROM (${populate}) AS ${{ identifier: tempName }}
|
|
2471
2430
|
WHERE ${filter}
|
|
2472
2431
|
)`;
|
|
2473
2432
|
}
|
|
@@ -2488,6 +2447,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2488
2447
|
)`;
|
|
2489
2448
|
}
|
|
2490
2449
|
}
|
|
2450
|
+
break;
|
|
2491
2451
|
}
|
|
2492
2452
|
throw Error('Invalid expression');
|
|
2493
2453
|
};
|