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
|
@@ -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,34 @@ 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 populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2278
|
+
return sql `ARRAY(SELECT ${{ identifier: '_id' }} FROM (${populate})) ${{ literal: op }} ARRAY[${_.map(expr.value, (x) => sql `${{ value: x.objectId }}`)}]`;
|
|
2323
2279
|
}
|
|
2324
2280
|
if (!dataType) {
|
|
2325
|
-
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element}
|
|
2281
|
+
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'array' AND ${element} ${{ literal: op }} ${_encodeJsonValue(index._encodeValue(expr.value))}`;
|
|
2326
2282
|
}
|
|
2327
2283
|
}
|
|
2284
|
+
break;
|
|
2328
2285
|
case '$not':
|
|
2329
2286
|
{
|
|
2330
2287
|
if (!(expr.value instanceof index$1.FieldSelectorExpression))
|
|
@@ -2354,6 +2311,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2354
2311
|
}
|
|
2355
2312
|
}
|
|
2356
2313
|
}
|
|
2314
|
+
break;
|
|
2357
2315
|
case '$starts':
|
|
2358
2316
|
{
|
|
2359
2317
|
if (!_.isString(expr.value))
|
|
@@ -2365,6 +2323,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2365
2323
|
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'string' AND (${element} #>> '{}') LIKE ${{ value: `${expr.value.replace(/([\\_%])/g, '\\$1')}%` }}`;
|
|
2366
2324
|
}
|
|
2367
2325
|
}
|
|
2326
|
+
break;
|
|
2368
2327
|
case '$ends':
|
|
2369
2328
|
{
|
|
2370
2329
|
if (!_.isString(expr.value))
|
|
@@ -2376,6 +2335,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2376
2335
|
return sql `jsonb_typeof(${element}) ${nullSafeEqual()} 'string' AND (${element} #>> '{}') LIKE ${{ value: `%${expr.value.replace(/([\\_%])/g, '\\$1')}` }}`;
|
|
2377
2336
|
}
|
|
2378
2337
|
}
|
|
2338
|
+
break;
|
|
2379
2339
|
case '$size':
|
|
2380
2340
|
{
|
|
2381
2341
|
if (!_.isNumber(expr.value) || !_.isSafeInteger(expr.value))
|
|
@@ -2396,6 +2356,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2396
2356
|
)`;
|
|
2397
2357
|
}
|
|
2398
2358
|
}
|
|
2359
|
+
break;
|
|
2399
2360
|
case '$empty':
|
|
2400
2361
|
{
|
|
2401
2362
|
if (!_.isBoolean(expr.value))
|
|
@@ -2416,11 +2377,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2416
2377
|
)`;
|
|
2417
2378
|
}
|
|
2418
2379
|
}
|
|
2380
|
+
break;
|
|
2419
2381
|
case '$every':
|
|
2420
2382
|
{
|
|
2421
2383
|
if (!(expr.value instanceof index$1.QuerySelector))
|
|
2422
2384
|
break;
|
|
2423
|
-
if (relation
|
|
2385
|
+
if (relation && parent.className) {
|
|
2424
2386
|
const tempName = `_populate_expr_$${compiler.nextIdx()}`;
|
|
2425
2387
|
const filter = compiler._encodeFilter({
|
|
2426
2388
|
name: tempName,
|
|
@@ -2429,11 +2391,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2429
2391
|
}, expr.value);
|
|
2430
2392
|
if (!filter)
|
|
2431
2393
|
break;
|
|
2394
|
+
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2432
2395
|
return sql `NOT EXISTS(
|
|
2433
|
-
SELECT * FROM (${
|
|
2434
|
-
className: parent.className,
|
|
2435
|
-
name: parent.name,
|
|
2436
|
-
}, relation.populate, `$${field}`, false)}) AS ${{ identifier: tempName }}
|
|
2396
|
+
SELECT * FROM (${populate}) AS ${{ identifier: tempName }}
|
|
2437
2397
|
WHERE NOT (${filter})
|
|
2438
2398
|
)`;
|
|
2439
2399
|
}
|
|
@@ -2454,11 +2414,12 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2454
2414
|
)`;
|
|
2455
2415
|
}
|
|
2456
2416
|
}
|
|
2417
|
+
break;
|
|
2457
2418
|
case '$some':
|
|
2458
2419
|
{
|
|
2459
2420
|
if (!(expr.value instanceof index$1.QuerySelector))
|
|
2460
2421
|
break;
|
|
2461
|
-
if (relation
|
|
2422
|
+
if (relation && parent.className) {
|
|
2462
2423
|
const tempName = `_populate_expr_$${compiler.nextIdx()}`;
|
|
2463
2424
|
const filter = compiler._encodeFilter({
|
|
2464
2425
|
name: tempName,
|
|
@@ -2467,11 +2428,9 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2467
2428
|
}, expr.value);
|
|
2468
2429
|
if (!filter)
|
|
2469
2430
|
break;
|
|
2431
|
+
const populate = _selectRelationPopulate(compiler, { className: parent.className, name: parent.name }, relation.populate, `$${field}`, false);
|
|
2470
2432
|
return sql `EXISTS(
|
|
2471
|
-
SELECT * FROM (${
|
|
2472
|
-
className: parent.className,
|
|
2473
|
-
name: parent.name,
|
|
2474
|
-
}, relation.populate, `$${field}`, false)}) AS ${{ identifier: tempName }}
|
|
2433
|
+
SELECT * FROM (${populate}) AS ${{ identifier: tempName }}
|
|
2475
2434
|
WHERE ${filter}
|
|
2476
2435
|
)`;
|
|
2477
2436
|
}
|
|
@@ -2492,6 +2451,7 @@ const encodeFieldExpression = (compiler, parent, field, expr) => {
|
|
|
2492
2451
|
)`;
|
|
2493
2452
|
}
|
|
2494
2453
|
}
|
|
2454
|
+
break;
|
|
2495
2455
|
}
|
|
2496
2456
|
throw Error('Invalid expression');
|
|
2497
2457
|
};
|