proto.io 0.0.168 → 0.0.170
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 +45 -81
- package/dist/adapters/storage/progres.js.map +1 -1
- package/dist/adapters/storage/progres.mjs +45 -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
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { T as TSchema, P as ProtoService } from '../../internals/index-
|
|
2
|
-
import { F as FileStorageBase, a as FileStorageOptions } from '../../internals/index-
|
|
1
|
+
import { T as TSchema, P as ProtoService } from '../../internals/index-BB2vDnq0.js';
|
|
2
|
+
import { F as FileStorageBase, a as FileStorageOptions } from '../../internals/index-B5u7VXjz.js';
|
|
3
3
|
import '@o2ter/utils-js';
|
|
4
4
|
import 'jsonwebtoken';
|
|
5
5
|
import '@o2ter/server-js';
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var _ = require('lodash');
|
|
6
6
|
var index = require('../../internals/index-BqFdBhFc.js');
|
|
7
|
-
var index$1 = require('../../internals/index-
|
|
7
|
+
var index$1 = require('../../internals/index-CzfsyXvb.js');
|
|
8
8
|
var utilsJs = require('@o2ter/utils-js');
|
|
9
9
|
require('util');
|
|
10
10
|
require('zlib');
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import { F as FileStorageBase } from '../../internals/index-be1VYBY2.mjs';
|
|
3
|
-
import { Q as QuerySelector } from '../../internals/index-
|
|
3
|
+
import { Q as QuerySelector } from '../../internals/index-B1wqSio6.mjs';
|
|
4
4
|
import { bufferToBase64, base64ToBuffer } from '@o2ter/utils-js';
|
|
5
5
|
import 'util';
|
|
6
6
|
import 'zlib';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as ProtoService } from '../../internals/index-
|
|
2
|
-
import { F as FileStorageBase, a as FileStorageOptions } from '../../internals/index-
|
|
1
|
+
import { P as ProtoService } from '../../internals/index-BB2vDnq0.js';
|
|
2
|
+
import { F as FileStorageBase, a as FileStorageOptions } from '../../internals/index-B5u7VXjz.js';
|
|
3
3
|
import '@o2ter/utils-js';
|
|
4
4
|
import 'jsonwebtoken';
|
|
5
5
|
import '@o2ter/server-js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _google_cloud_storage from '@google-cloud/storage';
|
|
2
2
|
import { Storage } from '@google-cloud/storage';
|
|
3
|
-
import { P as ProtoService } from '../../internals/index-
|
|
4
|
-
import { F as FileStorageBase, a as FileStorageOptions } from '../../internals/index-
|
|
3
|
+
import { P as ProtoService } from '../../internals/index-BB2vDnq0.js';
|
|
4
|
+
import { F as FileStorageBase, a as FileStorageOptions } from '../../internals/index-B5u7VXjz.js';
|
|
5
5
|
import '@o2ter/utils-js';
|
|
6
6
|
import 'jsonwebtoken';
|
|
7
7
|
import '@o2ter/server-js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Pool, PoolClient, PoolConfig } from 'pg';
|
|
2
|
-
import { _ as _TValue, o as EventData, T as TSchema, Q as QuerySelector, p as DecodedQuery, F as FindOptions, R as RelationOptions, q as DecodedSortOption, I as InsertOptions, r as TValue, t as FindOneOptions, u as TUpdateOp, v as FieldSelectorExpression, w as QueryExpression, x as TStorage, y as TransactionOptions, h as TObject, z as TQueryRandomOptions, A as TPubSub } from '../../internals/index-
|
|
2
|
+
import { _ as _TValue, o as EventData, T as TSchema, Q as QuerySelector, p as DecodedQuery, F as FindOptions, R as RelationOptions, q as DecodedSortOption, I as InsertOptions, r as TValue, t as FindOneOptions, u as TUpdateOp, v as FieldSelectorExpression, w as QueryExpression, x as TStorage, y as TransactionOptions, h as TObject, z as TQueryRandomOptions, A as TPubSub } from '../../internals/index-BB2vDnq0.js';
|
|
3
3
|
import * as _o2ter_utils_js from '@o2ter/utils-js';
|
|
4
4
|
import { asyncStream } from '@o2ter/utils-js';
|
|
5
5
|
import 'jsonwebtoken';
|
|
@@ -9,9 +9,9 @@ var QueryStream = require('pg-query-stream');
|
|
|
9
9
|
var utilsJs = require('@o2ter/utils-js');
|
|
10
10
|
var Decimal = require('decimal.js');
|
|
11
11
|
var utils = require('pg/lib/utils');
|
|
12
|
-
var index$1 = require('../../internals/index-
|
|
12
|
+
var index$1 = require('../../internals/index-CzfsyXvb.js');
|
|
13
13
|
require('@o2ter/crypto-js');
|
|
14
|
-
var random$1 = require('../../internals/random-
|
|
14
|
+
var random$1 = require('../../internals/random-Dytum6Nh.js');
|
|
15
15
|
var _private = require('../../internals/private-CSB1Ep4g.js');
|
|
16
16
|
|
|
17
17
|
//
|
|
@@ -889,9 +889,6 @@ const fetchElement = (compiler, parent, field) => {
|
|
|
889
889
|
relation: {
|
|
890
890
|
target: dataType.target,
|
|
891
891
|
populate,
|
|
892
|
-
mapElem: (callback) => sql `SELECT
|
|
893
|
-
${callback(sql `${json ? sql `VALUE` : sql `UNNEST`}`)}
|
|
894
|
-
FROM ${json ? sql `jsonb_array_elements(${element})` : sql `UNNEST(${element})`}`,
|
|
895
892
|
},
|
|
896
893
|
};
|
|
897
894
|
}
|
|
@@ -2132,12 +2129,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2132
2129
|
case '$lt':
|
|
2133
2130
|
case '$lte':
|
|
2134
2131
|
{
|
|
2135
|
-
const
|
|
2132
|
+
const op = {
|
|
2136
2133
|
'$gt': '>',
|
|
2137
2134
|
'$gte': '>=',
|
|
2138
2135
|
'$lt': '<',
|
|
2139
2136
|
'$lte': '<=',
|
|
2140
|
-
};
|
|
2137
|
+
}[expr.type];
|
|
2141
2138
|
if (_.isRegExp(expr.value) || expr.value instanceof index$1.QuerySelector || expr.value instanceof index$1.FieldSelectorExpression)
|
|
2142
2139
|
break;
|
|
2143
2140
|
if (dataType && index.isPrimitive(dataType)) {
|
|
@@ -2145,46 +2142,47 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2145
2142
|
case 'boolean':
|
|
2146
2143
|
if (!_.isBoolean(expr.value))
|
|
2147
2144
|
break;
|
|
2148
|
-
return sql `${element} ${{ literal:
|
|
2145
|
+
return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
|
|
2149
2146
|
case 'number':
|
|
2150
2147
|
case 'decimal':
|
|
2151
2148
|
if (!(expr.value instanceof Decimal) && !_.isNumber(expr.value))
|
|
2152
2149
|
break;
|
|
2153
|
-
return sql `${element} ${{ literal:
|
|
2150
|
+
return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
|
|
2154
2151
|
case 'string':
|
|
2155
2152
|
if (!_.isString(expr.value))
|
|
2156
2153
|
break;
|
|
2157
|
-
return sql `${element} ${{ literal:
|
|
2154
|
+
return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
|
|
2158
2155
|
case 'date':
|
|
2159
2156
|
if (!_.isDate(expr.value))
|
|
2160
2157
|
break;
|
|
2161
|
-
return sql `${element} ${{ literal:
|
|
2158
|
+
return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
|
|
2162
2159
|
}
|
|
2163
2160
|
}
|
|
2164
2161
|
else if (!_.isString(dataType) && dataType?.type === 'pointer' && expr.value instanceof index.TObject && expr.value.objectId) {
|
|
2165
|
-
return sql `${element} ${{ literal:
|
|
2162
|
+
return sql `${element} ${{ literal: op }} ${{ value: expr.value.objectId }}`;
|
|
2166
2163
|
}
|
|
2167
2164
|
else if (!dataType) {
|
|
2168
2165
|
if (expr.value instanceof Decimal || _.isNumber(expr.value)) {
|
|
2169
2166
|
return sql `(
|
|
2170
2167
|
jsonb_typeof(${element}) ${nullSafeEqual()} 'number'
|
|
2171
|
-
AND ${element}::NUMERIC ${{ literal:
|
|
2168
|
+
AND ${element}::NUMERIC ${{ literal: op }} ${{ value: expr.value instanceof Decimal ? expr.value.toNumber() : expr.value }}
|
|
2172
2169
|
) OR (
|
|
2173
2170
|
jsonb_typeof(${element} -> '$decimal') ${nullSafeEqual()} 'string'
|
|
2174
|
-
AND (${element} ->> '$decimal')::DECIMAL ${{ literal:
|
|
2171
|
+
AND (${element} ->> '$decimal')::DECIMAL ${{ literal: op }} ${{ value: expr.value instanceof Decimal ? expr.value.toString() : expr.value }}::DECIMAL
|
|
2175
2172
|
)`;
|
|
2176
2173
|
}
|
|
2177
2174
|
else if (_.isDate(expr.value)) {
|
|
2178
2175
|
return sql `(
|
|
2179
2176
|
jsonb_typeof(${element} -> '$date') ${nullSafeEqual()} 'string'
|
|
2180
|
-
AND ${element} ${{ literal:
|
|
2177
|
+
AND ${element} ${{ literal: op }} ${encodeValue(expr.value)}
|
|
2181
2178
|
)`;
|
|
2182
2179
|
}
|
|
2183
2180
|
else {
|
|
2184
|
-
return sql `${element} ${{ literal:
|
|
2181
|
+
return sql `${element} ${{ literal: op }} ${encodeValue(expr.value)}`;
|
|
2185
2182
|
}
|
|
2186
2183
|
}
|
|
2187
2184
|
}
|
|
2185
|
+
break;
|
|
2188
2186
|
case '$in':
|
|
2189
2187
|
{
|
|
2190
2188
|
if (!_.isArray(expr.value))
|
|
@@ -2220,6 +2218,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2220
2218
|
return sql `${element} IN (${_.map(values, x => encodeValue(x))})`;
|
|
2221
2219
|
}
|
|
2222
2220
|
}
|
|
2221
|
+
break;
|
|
2223
2222
|
case '$nin':
|
|
2224
2223
|
{
|
|
2225
2224
|
if (!_.isArray(expr.value))
|
|
@@ -2255,76 +2254,38 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2255
2254
|
return sql `${element} NOT IN (${_.map(values, x => encodeValue(x))})`;
|
|
2256
2255
|
}
|
|
2257
2256
|
}
|
|
2257
|
+
break;
|
|
2258
2258
|
case '$subset':
|
|
2259
|
-
{
|
|
2260
|
-
if (!_.isArray(expr.value))
|
|
2261
|
-
break;
|
|
2262
|
-
if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
|
|
2263
|
-
return sql `${element} <@ ${{ value: index._encodeValue(expr.value) }}`;
|
|
2264
|
-
}
|
|
2265
|
-
if (relation) {
|
|
2266
|
-
if (!_.every(expr.value, x => x instanceof index.TObject && x.objectId))
|
|
2267
|
-
break;
|
|
2268
|
-
return sql `ARRAY(${relation.mapElem((v) => sql `${v} ->> '_id'`)}) <@ ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
|
|
2269
|
-
}
|
|
2270
|
-
if (!dataType) {
|
|
2271
|
-
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} <@ ${_encodeJsonValue(index._encodeValue(expr.value))}`;
|
|
2272
|
-
}
|
|
2273
|
-
}
|
|
2274
2259
|
case '$superset':
|
|
2275
|
-
{
|
|
2276
|
-
if (!_.isArray(expr.value))
|
|
2277
|
-
break;
|
|
2278
|
-
if (_.isEmpty(expr.value))
|
|
2279
|
-
return sql `true`;
|
|
2280
|
-
if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
|
|
2281
|
-
return sql `${element} @> ${{ value: index._encodeValue(expr.value) }}`;
|
|
2282
|
-
}
|
|
2283
|
-
if (relation) {
|
|
2284
|
-
if (!_.every(expr.value, x => x instanceof index.TObject && x.objectId))
|
|
2285
|
-
break;
|
|
2286
|
-
return sql `ARRAY(${relation.mapElem((v) => sql `${v} ->> '_id'`)}) @> ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
|
|
2287
|
-
}
|
|
2288
|
-
if (!dataType) {
|
|
2289
|
-
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} @> ${_encodeJsonValue(index._encodeValue(expr.value))}`;
|
|
2290
|
-
}
|
|
2291
|
-
}
|
|
2292
|
-
case '$disjoint':
|
|
2293
|
-
{
|
|
2294
|
-
if (!_.isArray(expr.value))
|
|
2295
|
-
break;
|
|
2296
|
-
if (_.isEmpty(expr.value))
|
|
2297
|
-
return sql `true`;
|
|
2298
|
-
if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
|
|
2299
|
-
return sql `NOT ${element} && ${{ value: index._encodeValue(expr.value) }}`;
|
|
2300
|
-
}
|
|
2301
|
-
if (relation) {
|
|
2302
|
-
if (!_.every(expr.value, x => x instanceof index.TObject && x.objectId))
|
|
2303
|
-
break;
|
|
2304
|
-
return sql `NOT ARRAY(${relation.mapElem((v) => sql `${v} ->> '_id'`)}) && ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
|
|
2305
|
-
}
|
|
2306
|
-
if (!dataType) {
|
|
2307
|
-
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND NOT ${element} && ${_encodeJsonValue(index._encodeValue(expr.value))}`;
|
|
2308
|
-
}
|
|
2309
|
-
}
|
|
2310
2260
|
case '$intersect':
|
|
2311
2261
|
{
|
|
2262
|
+
const op = {
|
|
2263
|
+
'$subset': '<@',
|
|
2264
|
+
'$superset': '@>',
|
|
2265
|
+
'$intersect': '&&',
|
|
2266
|
+
}[expr.type];
|
|
2312
2267
|
if (!_.isArray(expr.value))
|
|
2313
2268
|
break;
|
|
2314
2269
|
if (_.isEmpty(expr.value))
|
|
2315
|
-
return sql `
|
|
2270
|
+
return sql `true`;
|
|
2316
2271
|
if (dataType === 'array' || (!_.isString(dataType) && dataType?.type === 'array')) {
|
|
2317
|
-
return sql `${element}
|
|
2272
|
+
return sql `${element} ${{ literal: op }} ${{ value: index._encodeValue(expr.value) }}`;
|
|
2318
2273
|
}
|
|
2319
|
-
if (relation) {
|
|
2274
|
+
if (relation && parent.className) {
|
|
2320
2275
|
if (!_.every(expr.value, x => x instanceof index.TObject && x.objectId))
|
|
2321
2276
|
break;
|
|
2322
|
-
|
|
2277
|
+
const tempName = `_populate_expr_$${compiler.nextIdx()}`;
|
|
2278
|
+
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2279
|
+
return sql `ARRAY(
|
|
2280
|
+
SELECT ${{ identifier: '_id' }}
|
|
2281
|
+
FROM (${populate}) AS ${{ identifier: tempName }}
|
|
2282
|
+
) ${{ literal: op }} ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
|
|
2323
2283
|
}
|
|
2324
2284
|
if (!dataType) {
|
|
2325
|
-
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element}
|
|
2285
|
+
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} ${{ literal: op }} ${_encodeJsonValue(index._encodeValue(expr.value))}`;
|
|
2326
2286
|
}
|
|
2327
2287
|
}
|
|
2288
|
+
break;
|
|
2328
2289
|
case '$not':
|
|
2329
2290
|
{
|
|
2330
2291
|
if (!(expr.value instanceof index$1.FieldSelectorExpression))
|
|
@@ -2354,6 +2315,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2354
2315
|
}
|
|
2355
2316
|
}
|
|
2356
2317
|
}
|
|
2318
|
+
break;
|
|
2357
2319
|
case '$starts':
|
|
2358
2320
|
{
|
|
2359
2321
|
if (!_.isString(expr.value))
|
|
@@ -2365,6 +2327,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2365
2327
|
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'string' AND (${element} #>> '{}') LIKE ${{ value: `${expr.value.replace(/([\\_%])/g, '\\$1')}%` }}`;
|
|
2366
2328
|
}
|
|
2367
2329
|
}
|
|
2330
|
+
break;
|
|
2368
2331
|
case '$ends':
|
|
2369
2332
|
{
|
|
2370
2333
|
if (!_.isString(expr.value))
|
|
@@ -2376,6 +2339,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2376
2339
|
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'string' AND (${element} #>> '{}') LIKE ${{ value: `%${expr.value.replace(/([\\_%])/g, '\\$1')}` }}`;
|
|
2377
2340
|
}
|
|
2378
2341
|
}
|
|
2342
|
+
break;
|
|
2379
2343
|
case '$size':
|
|
2380
2344
|
{
|
|
2381
2345
|
if (!_.isNumber(expr.value) || !_.isSafeInteger(expr.value))
|
|
@@ -2396,6 +2360,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2396
2360
|
)`;
|
|
2397
2361
|
}
|
|
2398
2362
|
}
|
|
2363
|
+
break;
|
|
2399
2364
|
case '$empty':
|
|
2400
2365
|
{
|
|
2401
2366
|
if (!_.isBoolean(expr.value))
|
|
@@ -2416,11 +2381,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2416
2381
|
)`;
|
|
2417
2382
|
}
|
|
2418
2383
|
}
|
|
2384
|
+
break;
|
|
2419
2385
|
case '$every':
|
|
2420
2386
|
{
|
|
2421
2387
|
if (!(expr.value instanceof index$1.QuerySelector))
|
|
2422
2388
|
break;
|
|
2423
|
-
if (relation
|
|
2389
|
+
if (relation && parent.className) {
|
|
2424
2390
|
const tempName = `_populate_expr_$${compiler.nextIdx()}`;
|
|
2425
2391
|
const filter = compiler._encodeFilter({
|
|
2426
2392
|
name: tempName,
|
|
@@ -2429,11 +2395,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2429
2395
|
}, expr.value);
|
|
2430
2396
|
if (!filter)
|
|
2431
2397
|
break;
|
|
2398
|
+
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2432
2399
|
return sql `NOT EXISTS(
|
|
2433
|
-
SELECT * FROM (${
|
|
2434
|
-
className: parent.className,
|
|
2435
|
-
name: parent.name,
|
|
2436
|
-
}, relation.populate, `$${field}`, false)}) AS ${{ identifier: tempName }}
|
|
2400
|
+
SELECT * FROM (${populate}) AS ${{ identifier: tempName }}
|
|
2437
2401
|
WHERE NOT (${filter})
|
|
2438
2402
|
)`;
|
|
2439
2403
|
}
|
|
@@ -2454,11 +2418,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2454
2418
|
)`;
|
|
2455
2419
|
}
|
|
2456
2420
|
}
|
|
2421
|
+
break;
|
|
2457
2422
|
case '$some':
|
|
2458
2423
|
{
|
|
2459
2424
|
if (!(expr.value instanceof index$1.QuerySelector))
|
|
2460
2425
|
break;
|
|
2461
|
-
if (relation
|
|
2426
|
+
if (relation && parent.className) {
|
|
2462
2427
|
const tempName = `_populate_expr_$${compiler.nextIdx()}`;
|
|
2463
2428
|
const filter = compiler._encodeFilter({
|
|
2464
2429
|
name: tempName,
|
|
@@ -2467,11 +2432,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2467
2432
|
}, expr.value);
|
|
2468
2433
|
if (!filter)
|
|
2469
2434
|
break;
|
|
2435
|
+
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2470
2436
|
return sql `EXISTS(
|
|
2471
|
-
SELECT * FROM (${
|
|
2472
|
-
className: parent.className,
|
|
2473
|
-
name: parent.name,
|
|
2474
|
-
}, relation.populate, `$${field}`, false)}) AS ${{ identifier: tempName }}
|
|
2437
|
+
SELECT * FROM (${populate}) AS ${{ identifier: tempName }}
|
|
2475
2438
|
WHERE ${filter}
|
|
2476
2439
|
)`;
|
|
2477
2440
|
}
|
|
@@ -2492,6 +2455,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2492
2455
|
)`;
|
|
2493
2456
|
}
|
|
2494
2457
|
}
|
|
2458
|
+
break;
|
|
2495
2459
|
}
|
|
2496
2460
|
throw Error('Invalid expression');
|
|
2497
2461
|
};
|