nicot 1.1.32 → 1.1.34
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/index.cjs +250 -110
- package/dist/index.cjs.map +4 -4
- package/dist/index.mjs +189 -51
- package/dist/index.mjs.map +4 -4
- package/dist/src/decorators/property.d.ts +27 -4
- package/dist/src/decorators/query.d.ts +1 -0
- package/dist/src/restful.d.ts +2 -0
- package/dist/src/utility/index.d.ts +0 -1
- package/dist/src/utility/metadata.d.ts +1 -0
- package/dist/src/utility/parse-bool.d.ts +8 -0
- package/dist/src/utility/patch-column-in-get.d.ts +2 -0
- package/dist/src/utility/query.d.ts +1 -0
- package/dist/src/utility/type-transformer.d.ts +4 -0
- package/package.json +2 -2
- package/dist/src/utility/rename-class.d.ts +0 -1
package/dist/index.mjs
CHANGED
|
@@ -118,6 +118,7 @@ import {
|
|
|
118
118
|
IsOptional as IsOptional2,
|
|
119
119
|
IsString,
|
|
120
120
|
IsUUID,
|
|
121
|
+
Max,
|
|
121
122
|
MaxLength,
|
|
122
123
|
Min,
|
|
123
124
|
ValidateNested as ValidateNested2
|
|
@@ -212,6 +213,47 @@ var TypeTransformer = class {
|
|
|
212
213
|
return entValue;
|
|
213
214
|
}
|
|
214
215
|
};
|
|
216
|
+
var TypeTransformerString = class extends TypeTransformer {
|
|
217
|
+
from(dbValue) {
|
|
218
|
+
if (dbValue == null) {
|
|
219
|
+
return dbValue;
|
|
220
|
+
}
|
|
221
|
+
return super.from(JSON.parse(dbValue));
|
|
222
|
+
}
|
|
223
|
+
to(entValue) {
|
|
224
|
+
if (entValue == null) {
|
|
225
|
+
return entValue;
|
|
226
|
+
}
|
|
227
|
+
return JSON.stringify(super.to(entValue));
|
|
228
|
+
}
|
|
229
|
+
};
|
|
230
|
+
|
|
231
|
+
// src/utility/parse-bool.ts
|
|
232
|
+
var parseBool = (value) => {
|
|
233
|
+
const trueValues = ["true", "1", "yes", "on", true, 1];
|
|
234
|
+
const falseValues = ["false", "0", "no", "off", false, 0];
|
|
235
|
+
if (trueValues.indexOf(value) !== -1) return true;
|
|
236
|
+
if (falseValues.indexOf(value) !== -1) return false;
|
|
237
|
+
if (!!value) {
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
return void 0;
|
|
241
|
+
};
|
|
242
|
+
var parseBoolObject = (obj, boolFields) => {
|
|
243
|
+
const newObj = { ...obj };
|
|
244
|
+
for (const field of boolFields) {
|
|
245
|
+
newObj[field] = parseBool(newObj[field]);
|
|
246
|
+
}
|
|
247
|
+
return newObj;
|
|
248
|
+
};
|
|
249
|
+
var ParseBoolObjectPipe = class {
|
|
250
|
+
constructor(boolFields) {
|
|
251
|
+
this.boolFields = boolFields;
|
|
252
|
+
}
|
|
253
|
+
transform(obj) {
|
|
254
|
+
return parseBoolObject(obj, this.boolFields);
|
|
255
|
+
}
|
|
256
|
+
};
|
|
215
257
|
|
|
216
258
|
// src/decorators/property.ts
|
|
217
259
|
function swaggerDecorator(options, injected = {}) {
|
|
@@ -241,13 +283,24 @@ function columnDecoratorOptions(options) {
|
|
|
241
283
|
}
|
|
242
284
|
var StringColumn = (length, options = {}) => {
|
|
243
285
|
return MergePropertyDecorators2([
|
|
244
|
-
Column("varchar", {
|
|
286
|
+
Column(options.columnType || "varchar", {
|
|
287
|
+
length,
|
|
288
|
+
...columnDecoratorOptions(options)
|
|
289
|
+
}),
|
|
245
290
|
IsString(),
|
|
246
291
|
MaxLength(length),
|
|
247
292
|
validatorDecorator(options),
|
|
248
293
|
swaggerDecorator(options, { type: String, maxLength: length })
|
|
249
294
|
]);
|
|
250
295
|
};
|
|
296
|
+
var TextColumn = (options = {}) => {
|
|
297
|
+
return MergePropertyDecorators2([
|
|
298
|
+
Column(options.columnType || "text", columnDecoratorOptions(options)),
|
|
299
|
+
IsString(),
|
|
300
|
+
validatorDecorator(options),
|
|
301
|
+
swaggerDecorator(options, { type: String })
|
|
302
|
+
]);
|
|
303
|
+
};
|
|
251
304
|
var UuidColumn = (options = {}) => {
|
|
252
305
|
return MergePropertyDecorators2([
|
|
253
306
|
Column("uuid", {
|
|
@@ -266,8 +319,28 @@ var UuidColumn = (options = {}) => {
|
|
|
266
319
|
})
|
|
267
320
|
]);
|
|
268
321
|
};
|
|
322
|
+
var intMaxList = {
|
|
323
|
+
tinyint: 127,
|
|
324
|
+
smallint: 32767,
|
|
325
|
+
mediumint: 8388607,
|
|
326
|
+
int: 2147483647,
|
|
327
|
+
bigint: Number.MAX_SAFE_INTEGER
|
|
328
|
+
};
|
|
269
329
|
var IntColumn = (type, options = {}) => {
|
|
270
|
-
|
|
330
|
+
let max = intMaxList[type] || Number.MAX_SAFE_INTEGER;
|
|
331
|
+
if (max !== Number.MAX_SAFE_INTEGER && options.unsigned) {
|
|
332
|
+
max = max * 2 + 1;
|
|
333
|
+
}
|
|
334
|
+
let min = options.unsigned ? 0 : -max - 1;
|
|
335
|
+
if (options.range) {
|
|
336
|
+
if (typeof options.range.min === "number" && options.range.min > min) {
|
|
337
|
+
min = options.range.min;
|
|
338
|
+
}
|
|
339
|
+
if (typeof options.range.max === "number" && options.range.max < max) {
|
|
340
|
+
max = options.range.max;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return MergePropertyDecorators2([
|
|
271
344
|
Column(type, {
|
|
272
345
|
default: options.default,
|
|
273
346
|
unsigned: options.unsigned,
|
|
@@ -275,39 +348,53 @@ var IntColumn = (type, options = {}) => {
|
|
|
275
348
|
...columnDecoratorOptions(options)
|
|
276
349
|
}),
|
|
277
350
|
IsInt(),
|
|
351
|
+
...min > Number.MIN_SAFE_INTEGER ? [Min(min)] : [],
|
|
352
|
+
...max < Number.MAX_SAFE_INTEGER ? [Max(max)] : [],
|
|
278
353
|
validatorDecorator(options),
|
|
279
354
|
swaggerDecorator(options, {
|
|
280
355
|
type: Number,
|
|
281
|
-
minimum:
|
|
356
|
+
minimum: min > Number.MIN_SAFE_INTEGER ? min : void 0,
|
|
357
|
+
maximum: max < Number.MAX_SAFE_INTEGER ? max : void 0
|
|
282
358
|
})
|
|
283
|
-
];
|
|
284
|
-
if (options.unsigned) {
|
|
285
|
-
decs.push(Min(0));
|
|
286
|
-
}
|
|
287
|
-
return MergePropertyDecorators2(decs);
|
|
359
|
+
]);
|
|
288
360
|
};
|
|
289
361
|
var FloatColumn = (type, options = {}) => {
|
|
290
|
-
|
|
362
|
+
let min = options.unsigned ? 0 : Number.MIN_SAFE_INTEGER;
|
|
363
|
+
let max = Number.MAX_SAFE_INTEGER;
|
|
364
|
+
if (options.columnExtras?.precision != null && options.columnExtras?.scale != null) {
|
|
365
|
+
const precision = options.columnExtras.precision;
|
|
366
|
+
const scale = options.columnExtras.scale;
|
|
367
|
+
const intDigits = precision - scale;
|
|
368
|
+
if (intDigits > 0) {
|
|
369
|
+
const maxIntPart = Math.pow(10, intDigits) - 1;
|
|
370
|
+
const maxDecimalPart = scale > 0 ? (Math.pow(10, scale) - 1) / Math.pow(10, scale) : 0;
|
|
371
|
+
max = maxIntPart + maxDecimalPart;
|
|
372
|
+
min = options.unsigned ? 0 : -max;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
return MergePropertyDecorators2([
|
|
291
376
|
Column(type, {
|
|
292
377
|
default: options.default,
|
|
293
378
|
unsigned: options.unsigned,
|
|
294
379
|
...columnDecoratorOptions(options)
|
|
295
380
|
}),
|
|
296
381
|
IsNumber(),
|
|
382
|
+
...min > Number.MIN_SAFE_INTEGER ? [Min(min)] : [],
|
|
383
|
+
...max < Number.MAX_SAFE_INTEGER ? [Max(max)] : [],
|
|
297
384
|
validatorDecorator(options),
|
|
298
385
|
swaggerDecorator(options, {
|
|
299
386
|
type: Number,
|
|
300
|
-
minimum:
|
|
387
|
+
minimum: min > Number.MIN_SAFE_INTEGER ? min : void 0,
|
|
388
|
+
maximum: max < Number.MAX_SAFE_INTEGER ? max : void 0
|
|
301
389
|
})
|
|
302
|
-
];
|
|
303
|
-
if (options.unsigned) {
|
|
304
|
-
decs.push(Min(0));
|
|
305
|
-
}
|
|
306
|
-
return MergePropertyDecorators2(decs);
|
|
390
|
+
]);
|
|
307
391
|
};
|
|
308
392
|
var DateColumn = (options = {}) => {
|
|
309
393
|
return MergePropertyDecorators2([
|
|
310
|
-
Column(
|
|
394
|
+
Column(
|
|
395
|
+
options.columnType || "timestamp",
|
|
396
|
+
columnDecoratorOptions(options)
|
|
397
|
+
),
|
|
311
398
|
IsDate(),
|
|
312
399
|
Transform(
|
|
313
400
|
(v) => {
|
|
@@ -347,30 +434,33 @@ var EnumColumn = (targetEnum, options = {}) => {
|
|
|
347
434
|
var BoolColumn = (options = {}) => MergePropertyDecorators2([
|
|
348
435
|
Index(),
|
|
349
436
|
Transform((v) => {
|
|
350
|
-
|
|
351
|
-
const falseValues = ["false", "0", "no", "off", false, 0];
|
|
352
|
-
if (trueValues.indexOf(v.value) !== -1) return true;
|
|
353
|
-
if (falseValues.indexOf(v.value) !== -1) return false;
|
|
354
|
-
return void 0;
|
|
437
|
+
return parseBool(v.value);
|
|
355
438
|
}),
|
|
356
439
|
Column("boolean", columnDecoratorOptions(options)),
|
|
357
440
|
validatorDecorator(options),
|
|
358
|
-
swaggerDecorator(options, { type: Boolean })
|
|
441
|
+
swaggerDecorator(options, { type: Boolean }),
|
|
442
|
+
Metadata.set("boolColumn", true, "boolColumnFields")
|
|
359
443
|
]);
|
|
360
|
-
var
|
|
444
|
+
var createJsonColumnDef = (columnType = "jsonb", typeTransformerClass = TypeTransformer) => (definition, options = {}) => {
|
|
361
445
|
const cl = getClassFromClassOrArray2(definition);
|
|
362
446
|
return MergePropertyDecorators2([
|
|
363
447
|
NotQueryable(),
|
|
364
448
|
Type2(() => cl),
|
|
365
449
|
ValidateNested2(),
|
|
366
|
-
Column(
|
|
450
|
+
Column(options.columnType || columnType, {
|
|
367
451
|
...columnDecoratorOptions(options),
|
|
368
|
-
transformer: new
|
|
452
|
+
transformer: new typeTransformerClass(definition)
|
|
369
453
|
}),
|
|
370
454
|
validatorDecorator(options),
|
|
371
455
|
swaggerDecorator(options, { type: definition })
|
|
372
456
|
]);
|
|
373
457
|
};
|
|
458
|
+
var JsonColumn = createJsonColumnDef();
|
|
459
|
+
var SimpleJsonColumn = createJsonColumnDef("json");
|
|
460
|
+
var StringJsonColumn = createJsonColumnDef(
|
|
461
|
+
"text",
|
|
462
|
+
TypeTransformerString
|
|
463
|
+
);
|
|
374
464
|
var NotColumn = (options = {}, specials = {}) => MergePropertyDecorators2([
|
|
375
465
|
Exclude(),
|
|
376
466
|
swaggerDecorator({
|
|
@@ -465,21 +555,26 @@ var applyQueryPropertyZeroNullable = createQueryCondition(
|
|
|
465
555
|
);
|
|
466
556
|
var applyQueryMatchBoolean = createQueryCondition(
|
|
467
557
|
(obj, qb, entityName, field) => {
|
|
468
|
-
const value = obj[field];
|
|
469
|
-
if (value === true
|
|
558
|
+
const value = parseBool(obj[field]);
|
|
559
|
+
if (value === true) {
|
|
470
560
|
qb.andWhere(`${entityName}.${field} = TRUE`);
|
|
471
561
|
}
|
|
472
|
-
if (value === false
|
|
562
|
+
if (value === false) {
|
|
473
563
|
qb.andWhere(`${entityName}.${field} = FALSE`);
|
|
474
564
|
}
|
|
475
565
|
}
|
|
476
566
|
);
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
}
|
|
567
|
+
var applyQueryMatchBooleanMySQL = createQueryCondition(
|
|
568
|
+
(obj, qb, entityName, field) => {
|
|
569
|
+
const value = parseBool(obj[field]);
|
|
570
|
+
if (value === true) {
|
|
571
|
+
qb.andWhere(`${entityName}.${field} = 1`);
|
|
572
|
+
}
|
|
573
|
+
if (value === false) {
|
|
574
|
+
qb.andWhere(`${entityName}.${field} = 0`);
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
);
|
|
483
578
|
|
|
484
579
|
// src/decorators/query.ts
|
|
485
580
|
import { MergePropertyDecorators as MergePropertyDecorators3 } from "nesties";
|
|
@@ -524,6 +619,7 @@ var QueryLike = () => QueryCondition(applyQueryPropertyLike);
|
|
|
524
619
|
var QuerySearch = () => QueryCondition(applyQueryPropertySearch);
|
|
525
620
|
var QueryEqualZeroNullable = () => QueryCondition(applyQueryPropertyZeroNullable);
|
|
526
621
|
var QueryMatchBoolean = () => QueryCondition(applyQueryMatchBoolean);
|
|
622
|
+
var QueryMatchBooleanMySQL = () => QueryCondition(applyQueryMatchBooleanMySQL);
|
|
527
623
|
var QueryOperator = (operator, field) => QueryCondition((obj, qb, entityName, key) => {
|
|
528
624
|
if (obj[key] == null) return;
|
|
529
625
|
const fieldName = field || key;
|
|
@@ -748,7 +844,7 @@ __decorateClass([
|
|
|
748
844
|
], TimeBase.prototype, "deleteTime", 2);
|
|
749
845
|
|
|
750
846
|
// src/bases/id-base.ts
|
|
751
|
-
import { Generated
|
|
847
|
+
import { Generated } from "typeorm";
|
|
752
848
|
import { IsNotEmpty as IsNotEmpty2 } from "class-validator";
|
|
753
849
|
import { MergePropertyDecorators as MergePropertyDecorators4 } from "nesties";
|
|
754
850
|
function IdBase(idOptions = {}) {
|
|
@@ -768,7 +864,7 @@ function IdBase(idOptions = {}) {
|
|
|
768
864
|
columnExtras: { nullable: false, primary: true }
|
|
769
865
|
}),
|
|
770
866
|
Reflect.metadata("design:type", Number),
|
|
771
|
-
|
|
867
|
+
Generated("increment"),
|
|
772
868
|
QueryEqual()
|
|
773
869
|
]);
|
|
774
870
|
dec(cl.prototype, "id");
|
|
@@ -1701,7 +1797,8 @@ import {
|
|
|
1701
1797
|
BlankReturnMessageDto as BlankReturnMessageDto3,
|
|
1702
1798
|
MergeMethodDecorators,
|
|
1703
1799
|
PaginatedReturnMessageDto as PaginatedReturnMessageDto2,
|
|
1704
|
-
ReturnMessageDto as ReturnMessageDto2
|
|
1800
|
+
ReturnMessageDto as ReturnMessageDto2,
|
|
1801
|
+
getApiProperty as getApiProperty2
|
|
1705
1802
|
} from "nesties";
|
|
1706
1803
|
import {
|
|
1707
1804
|
ApiBadRequestResponse,
|
|
@@ -1711,13 +1808,13 @@ import {
|
|
|
1711
1808
|
ApiOkResponse,
|
|
1712
1809
|
ApiOperation,
|
|
1713
1810
|
ApiParam,
|
|
1714
|
-
ApiProperty as
|
|
1811
|
+
ApiProperty as ApiProperty6,
|
|
1715
1812
|
IntersectionType,
|
|
1716
1813
|
OmitType as OmitType2,
|
|
1717
1814
|
PartialType
|
|
1718
1815
|
} from "@nestjs/swagger";
|
|
1719
1816
|
import _4, { upperFirst } from "lodash";
|
|
1720
|
-
import {
|
|
1817
|
+
import { RenameClass } from "nesties";
|
|
1721
1818
|
|
|
1722
1819
|
// src/bases/base-restful-controller.ts
|
|
1723
1820
|
var RestfulMethods = [
|
|
@@ -1778,6 +1875,27 @@ var OmitTypeExclude = (cl, keys) => {
|
|
|
1778
1875
|
return omitted;
|
|
1779
1876
|
};
|
|
1780
1877
|
|
|
1878
|
+
// src/utility/patch-column-in-get.ts
|
|
1879
|
+
import { ApiProperty as ApiProperty5 } from "@nestjs/swagger";
|
|
1880
|
+
import { getApiProperty } from "nesties";
|
|
1881
|
+
var PatchColumnsInGet = (cl, originalCl = cl, fieldsToOmit = []) => {
|
|
1882
|
+
const omit2 = new Set(fieldsToOmit);
|
|
1883
|
+
const boolFields = getSpecificFields(originalCl || cl, "boolColumn").filter(
|
|
1884
|
+
(f) => !omit2.has(f)
|
|
1885
|
+
);
|
|
1886
|
+
for (const field of boolFields) {
|
|
1887
|
+
const originalApiProp = getApiProperty(originalCl, field);
|
|
1888
|
+
ApiProperty5({
|
|
1889
|
+
...originalApiProp,
|
|
1890
|
+
type: String,
|
|
1891
|
+
required: false,
|
|
1892
|
+
enum: ["0", "1"],
|
|
1893
|
+
default: originalApiProp?.default === true ? "1" : originalApiProp?.default === false ? "0" : void 0
|
|
1894
|
+
})(cl.prototype, field);
|
|
1895
|
+
}
|
|
1896
|
+
return cl;
|
|
1897
|
+
};
|
|
1898
|
+
|
|
1781
1899
|
// src/restful.ts
|
|
1782
1900
|
var getCurrentLevelRelations = (relations) => relations.filter((r) => !r.includes("."));
|
|
1783
1901
|
var getNextLevelRelations = (relations, enteringField) => relations.filter((r) => r.includes(".") && r.startsWith(`${enteringField}.`)).map((r) => r.split(".").slice(1).join("."));
|
|
@@ -1805,14 +1923,22 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
1805
1923
|
`Create${this.entityClass.name}Dto`
|
|
1806
1924
|
);
|
|
1807
1925
|
this.importDto = ImportDataDto(this.createDto);
|
|
1926
|
+
this.fieldsInGetToOmit = _4.uniq([
|
|
1927
|
+
...this.fieldsToOmit,
|
|
1928
|
+
...getSpecificFields(this.entityClass, "notQueryable")
|
|
1929
|
+
]);
|
|
1808
1930
|
this.findAllDto = RenameClass(
|
|
1809
1931
|
PartialType(
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
this.
|
|
1813
|
-
|
|
1932
|
+
PatchColumnsInGet(
|
|
1933
|
+
OmitTypeExclude(
|
|
1934
|
+
this.entityClass instanceof PageSettingsDto ? this.entityClass : IntersectionType(
|
|
1935
|
+
this.entityClass,
|
|
1936
|
+
PageSettingsDto
|
|
1937
|
+
),
|
|
1938
|
+
this.fieldsInGetToOmit
|
|
1814
1939
|
),
|
|
1815
|
-
|
|
1940
|
+
this.entityClass,
|
|
1941
|
+
this.fieldsInGetToOmit
|
|
1816
1942
|
)
|
|
1817
1943
|
),
|
|
1818
1944
|
`Find${this.entityClass.name}Dto`
|
|
@@ -1891,12 +2017,11 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
1891
2017
|
if (outputFieldsToOmit.has(relation.propertyName)) continue;
|
|
1892
2018
|
if (nonTransformableTypes.has(relation.propertyClass)) continue;
|
|
1893
2019
|
const replace = (useClass) => {
|
|
1894
|
-
const oldApiProperty =
|
|
1895
|
-
|
|
1896
|
-
this.entityClass.prototype,
|
|
2020
|
+
const oldApiProperty = getApiProperty2(
|
|
2021
|
+
this.entityClass,
|
|
1897
2022
|
relation.propertyName
|
|
1898
|
-
)
|
|
1899
|
-
|
|
2023
|
+
);
|
|
2024
|
+
ApiProperty6({
|
|
1900
2025
|
...oldApiProperty,
|
|
1901
2026
|
required: false,
|
|
1902
2027
|
type: () => relation.isArray ? [useClass[0]] : useClass[0]
|
|
@@ -2016,8 +2141,17 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2016
2141
|
ApiOkResponse({ type: this.entityCursorPaginationReturnMessageDto })
|
|
2017
2142
|
]);
|
|
2018
2143
|
}
|
|
2144
|
+
getBoolColumns() {
|
|
2145
|
+
const boolColumns = getSpecificFields(this.entityClass, "boolColumn");
|
|
2146
|
+
return _4.difference(boolColumns, this.fieldsInGetToOmit);
|
|
2147
|
+
}
|
|
2019
2148
|
findAllParam() {
|
|
2020
|
-
|
|
2149
|
+
const boolColumns = this.getBoolColumns();
|
|
2150
|
+
if (boolColumns.length) {
|
|
2151
|
+
return Query(new ParseBoolObjectPipe(boolColumns), GetPipe());
|
|
2152
|
+
} else {
|
|
2153
|
+
return Query(GetPipe());
|
|
2154
|
+
}
|
|
2021
2155
|
}
|
|
2022
2156
|
update(extras = {}) {
|
|
2023
2157
|
return MergeMethodDecorators([
|
|
@@ -2241,19 +2375,23 @@ export {
|
|
|
2241
2375
|
QueryLessEqual,
|
|
2242
2376
|
QueryLike,
|
|
2243
2377
|
QueryMatchBoolean,
|
|
2378
|
+
QueryMatchBooleanMySQL,
|
|
2244
2379
|
QueryNotEqual,
|
|
2245
2380
|
QueryOperator,
|
|
2246
2381
|
QuerySearch,
|
|
2247
2382
|
Relation,
|
|
2248
2383
|
RelationComputed,
|
|
2249
|
-
RenameClass,
|
|
2250
2384
|
RestfulFactory,
|
|
2385
|
+
SimpleJsonColumn,
|
|
2251
2386
|
StringColumn,
|
|
2252
2387
|
StringIdBase,
|
|
2388
|
+
StringJsonColumn,
|
|
2389
|
+
TextColumn,
|
|
2253
2390
|
TimeBase,
|
|
2254
2391
|
UpdatePipe,
|
|
2255
2392
|
UuidColumn,
|
|
2256
2393
|
applyQueryMatchBoolean,
|
|
2394
|
+
applyQueryMatchBooleanMySQL,
|
|
2257
2395
|
applyQueryProperty,
|
|
2258
2396
|
applyQueryPropertyLike,
|
|
2259
2397
|
applyQueryPropertySearch,
|