nicot 1.1.38 → 1.2.1
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/README.md +66 -12
- package/dist/index.cjs +650 -270
- package/dist/index.cjs.map +4 -4
- package/dist/index.mjs +579 -220
- package/dist/index.mjs.map +4 -4
- package/dist/src/bases/base-restful-controller.d.ts +1 -1
- package/dist/src/crud-base.d.ts +1 -0
- package/dist/src/decorators/access.d.ts +1 -0
- package/dist/src/decorators/get-mutator.d.ts +17 -0
- package/dist/src/decorators/index.d.ts +1 -0
- package/dist/src/decorators/pipes.d.ts +6 -4
- package/dist/src/decorators/property.d.ts +3 -3
- package/dist/src/decorators/query.d.ts +26 -6
- package/dist/src/restful.d.ts +33 -27
- package/dist/src/utility/memorize.d.ts +1 -0
- package/dist/src/utility/metadata.d.ts +7 -5
- package/dist/src/utility/mutate-pipe.d.ts +8 -0
- package/dist/src/utility/omit-from-class.d.ts +3 -0
- package/dist/src/utility/omit-type-exclude.d.ts +1 -0
- package/dist/src/utility/parse-bool.d.ts +0 -7
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -40,7 +40,6 @@ var index_exports = {};
|
|
|
40
40
|
__export(index_exports, {
|
|
41
41
|
BlankCursorPaginationReturnMessageDto: () => BlankCursorPaginationReturnMessageDto,
|
|
42
42
|
BoolColumn: () => BoolColumn,
|
|
43
|
-
CreatePipe: () => CreatePipe,
|
|
44
43
|
CrudBase: () => CrudBase,
|
|
45
44
|
CrudService: () => CrudService,
|
|
46
45
|
CursorPaginationDto: () => CursorPaginationDto,
|
|
@@ -49,7 +48,14 @@ __export(index_exports, {
|
|
|
49
48
|
EnumColumn: () => EnumColumn,
|
|
50
49
|
FloatColumn: () => FloatColumn,
|
|
51
50
|
GenericCursorPaginationReturnMessageDto: () => GenericCursorPaginationReturnMessageDto,
|
|
52
|
-
|
|
51
|
+
GetMutator: () => GetMutator,
|
|
52
|
+
GetMutatorBool: () => GetMutatorBool,
|
|
53
|
+
GetMutatorFloat: () => GetMutatorFloat,
|
|
54
|
+
GetMutatorFloatSeparated: () => GetMutatorFloatSeparated,
|
|
55
|
+
GetMutatorInt: () => GetMutatorInt,
|
|
56
|
+
GetMutatorIntSeparated: () => GetMutatorIntSeparated,
|
|
57
|
+
GetMutatorJson: () => GetMutatorJson,
|
|
58
|
+
GetMutatorStringSeparated: () => GetMutatorStringSeparated,
|
|
53
59
|
IdBase: () => IdBase,
|
|
54
60
|
ImportDataBaseDto: () => ImportDataBaseDto,
|
|
55
61
|
ImportDataDto: () => ImportDataDto,
|
|
@@ -60,10 +66,15 @@ __export(index_exports, {
|
|
|
60
66
|
JsonColumn: () => JsonColumn,
|
|
61
67
|
NotChangeable: () => NotChangeable,
|
|
62
68
|
NotColumn: () => NotColumn,
|
|
69
|
+
NotCreatable: () => NotCreatable,
|
|
63
70
|
NotInResult: () => NotInResult,
|
|
64
71
|
NotQueryable: () => NotQueryable,
|
|
65
72
|
NotWritable: () => NotWritable,
|
|
73
|
+
OmitPipe: () => OmitPipe,
|
|
74
|
+
OptionalDataPipe: () => OptionalDataPipe,
|
|
66
75
|
PageSettingsDto: () => PageSettingsDto,
|
|
76
|
+
PickPipe: () => PickPipe,
|
|
77
|
+
QueryAnd: () => QueryAnd,
|
|
67
78
|
QueryColumn: () => QueryColumn,
|
|
68
79
|
QueryCondition: () => QueryCondition,
|
|
69
80
|
QueryEqual: () => QueryEqual,
|
|
@@ -71,16 +82,24 @@ __export(index_exports, {
|
|
|
71
82
|
QueryFullText: () => QueryFullText,
|
|
72
83
|
QueryGreater: () => QueryGreater,
|
|
73
84
|
QueryGreaterEqual: () => QueryGreaterEqual,
|
|
85
|
+
QueryIn: () => QueryIn,
|
|
86
|
+
QueryJsonbHas: () => QueryJsonbHas,
|
|
74
87
|
QueryLess: () => QueryLess,
|
|
75
88
|
QueryLessEqual: () => QueryLessEqual,
|
|
76
89
|
QueryLike: () => QueryLike,
|
|
90
|
+
QueryManual: () => QueryManual,
|
|
77
91
|
QueryMatchBoolean: () => QueryMatchBoolean,
|
|
78
92
|
QueryMatchBooleanMySQL: () => QueryMatchBooleanMySQL,
|
|
79
93
|
QueryNotEqual: () => QueryNotEqual,
|
|
94
|
+
QueryNotIn: () => QueryNotIn,
|
|
80
95
|
QueryOperator: () => QueryOperator,
|
|
96
|
+
QueryOr: () => QueryOr,
|
|
81
97
|
QuerySearch: () => QuerySearch,
|
|
98
|
+
QueryWrap: () => QueryWrap,
|
|
99
|
+
QueryWrapInfo: () => QueryWrapInfo,
|
|
82
100
|
Relation: () => Relation,
|
|
83
101
|
RelationComputed: () => RelationComputed,
|
|
102
|
+
RequireGetMutator: () => RequireGetMutator,
|
|
84
103
|
RestfulFactory: () => RestfulFactory,
|
|
85
104
|
SimpleJsonColumn: () => SimpleJsonColumn,
|
|
86
105
|
StringColumn: () => StringColumn,
|
|
@@ -88,7 +107,6 @@ __export(index_exports, {
|
|
|
88
107
|
StringJsonColumn: () => StringJsonColumn,
|
|
89
108
|
TextColumn: () => TextColumn,
|
|
90
109
|
TimeBase: () => TimeBase,
|
|
91
|
-
UpdatePipe: () => UpdatePipe,
|
|
92
110
|
UuidColumn: () => UuidColumn,
|
|
93
111
|
applyQueryMatchBoolean: () => applyQueryMatchBoolean,
|
|
94
112
|
applyQueryMatchBooleanMySQL: () => applyQueryMatchBooleanMySQL,
|
|
@@ -96,8 +114,12 @@ __export(index_exports, {
|
|
|
96
114
|
applyQueryPropertyLike: () => applyQueryPropertyLike,
|
|
97
115
|
applyQueryPropertySearch: () => applyQueryPropertySearch,
|
|
98
116
|
applyQueryPropertyZeroNullable: () => applyQueryPropertyZeroNullable,
|
|
117
|
+
createGetMutator: () => createGetMutator,
|
|
118
|
+
createQueryArrayify: () => createQueryArrayify,
|
|
99
119
|
createQueryCondition: () => createQueryCondition,
|
|
100
|
-
createQueryOperator: () => createQueryOperator
|
|
120
|
+
createQueryOperator: () => createQueryOperator,
|
|
121
|
+
createQueryOperatorArrayify: () => createQueryOperatorArrayify,
|
|
122
|
+
createQueryWrap: () => createQueryWrap
|
|
101
123
|
});
|
|
102
124
|
module.exports = __toCommonJS(index_exports);
|
|
103
125
|
__reExport(index_exports, require("nesties"), module.exports);
|
|
@@ -144,7 +166,6 @@ var import_swagger3 = require("@nestjs/swagger");
|
|
|
144
166
|
var import_nesties6 = require("nesties");
|
|
145
167
|
|
|
146
168
|
// src/decorators/access.ts
|
|
147
|
-
var import_class_transformer2 = require("class-transformer");
|
|
148
169
|
var import_class_validator2 = require("class-validator");
|
|
149
170
|
|
|
150
171
|
// src/utility/metadata.ts
|
|
@@ -171,13 +192,14 @@ function getNotInResultFields(obj, keepEntityVersioningDates = false) {
|
|
|
171
192
|
// src/decorators/access.ts
|
|
172
193
|
var import_nesties2 = require("nesties");
|
|
173
194
|
var NotWritable = () => (0, import_nesties2.MergePropertyDecorators)([
|
|
174
|
-
(0, import_class_transformer2.Expose)({ groups: ["r"] }),
|
|
175
195
|
(0, import_class_validator2.IsOptional)(),
|
|
176
|
-
Metadata.set("notWritable", true, "notWritableFields")
|
|
177
|
-
|
|
196
|
+
Metadata.set("notWritable", true, "notWritableFields")
|
|
197
|
+
]);
|
|
198
|
+
var NotCreatable = () => (0, import_nesties2.MergePropertyDecorators)([
|
|
199
|
+
(0, import_class_validator2.IsOptional)(),
|
|
200
|
+
Metadata.set("notCreatable", true, "notCreatableFields")
|
|
178
201
|
]);
|
|
179
202
|
var NotChangeable = () => (0, import_nesties2.MergePropertyDecorators)([
|
|
180
|
-
(0, import_class_transformer2.Expose)({ groups: ["r", "c"] }),
|
|
181
203
|
Metadata.set("notChangeable", true, "notChangeableFields")
|
|
182
204
|
]);
|
|
183
205
|
var NotQueryable = () => Metadata.set("notQueryable", true, "notQueryableFields");
|
|
@@ -188,7 +210,7 @@ var import_swagger2 = require("@nestjs/swagger");
|
|
|
188
210
|
var import_nesties3 = require("nesties");
|
|
189
211
|
var import_typeorm = require("typeorm");
|
|
190
212
|
var import_class_validator3 = require("class-validator");
|
|
191
|
-
var
|
|
213
|
+
var import_class_transformer2 = require("class-transformer");
|
|
192
214
|
|
|
193
215
|
// src/utility/bigint.ts
|
|
194
216
|
var BigintTransformer = class {
|
|
@@ -304,21 +326,45 @@ var parseBool = (value) => {
|
|
|
304
326
|
}
|
|
305
327
|
return void 0;
|
|
306
328
|
};
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
329
|
+
|
|
330
|
+
// src/decorators/get-mutator.ts
|
|
331
|
+
var RequireGetMutator = () => Metadata.set("requireGetMutator", true, "requireGetMutatorFields");
|
|
332
|
+
var GetMutator = (mutator, options = {}) => Metadata.set("getMutator", { mutator, ...options }, "getMutatorFields");
|
|
333
|
+
var createGetMutator = (mutator, defaultOptions = {}) => (options = {}) => GetMutator(mutator, {
|
|
334
|
+
...defaultOptions,
|
|
335
|
+
...options,
|
|
336
|
+
apiPropertyExtras: {
|
|
337
|
+
...defaultOptions.apiPropertyExtras || {},
|
|
338
|
+
...options.apiPropertyExtras || {}
|
|
311
339
|
}
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
340
|
+
});
|
|
341
|
+
var GetMutatorBool = createGetMutator(parseBool, {
|
|
342
|
+
enum: ["0", "1"],
|
|
343
|
+
example: "1"
|
|
344
|
+
});
|
|
345
|
+
var GetMutatorInt = createGetMutator((s) => parseInt(s, 10));
|
|
346
|
+
var GetMutatorFloat = createGetMutator((s) => parseFloat(s));
|
|
347
|
+
var GetMutatorStringSeparated = (separator = ",", options = {}) => GetMutator((s) => s.split(separator), {
|
|
348
|
+
example: `value1${separator}value2${separator}value3`,
|
|
349
|
+
...options
|
|
350
|
+
});
|
|
351
|
+
var GetMutatorIntSeparated = (separator = ",", options = {}) => GetMutator(
|
|
352
|
+
(s) => s.split(separator).map((item) => parseInt(item.trim(), 10)),
|
|
353
|
+
{
|
|
354
|
+
example: `1${separator}2${separator}3`,
|
|
355
|
+
...options
|
|
317
356
|
}
|
|
318
|
-
|
|
319
|
-
|
|
357
|
+
);
|
|
358
|
+
var GetMutatorFloatSeparated = (separator = ",", options = {}) => GetMutator(
|
|
359
|
+
(s) => s.split(separator).map((item) => parseFloat(item.trim())),
|
|
360
|
+
{
|
|
361
|
+
example: `1.5${separator}2.5${separator}3.5`,
|
|
362
|
+
...options
|
|
320
363
|
}
|
|
321
|
-
|
|
364
|
+
);
|
|
365
|
+
var GetMutatorJson = createGetMutator((s) => JSON.parse(s), {
|
|
366
|
+
example: `{"key1":"value1","key2":2,"key3":[1,2,3]}`
|
|
367
|
+
});
|
|
322
368
|
|
|
323
369
|
// src/decorators/property.ts
|
|
324
370
|
var NotRequiredButHasDefaultDec = () => Metadata.set(
|
|
@@ -476,7 +522,7 @@ var DateColumn = (options = {}) => {
|
|
|
476
522
|
columnDecoratorOptions(options)
|
|
477
523
|
),
|
|
478
524
|
(0, import_class_validator3.IsDate)(),
|
|
479
|
-
(0,
|
|
525
|
+
(0, import_class_transformer2.Transform)(
|
|
480
526
|
(v) => {
|
|
481
527
|
const value = v.value;
|
|
482
528
|
if (value == null || value instanceof Date) return value;
|
|
@@ -513,19 +559,19 @@ var EnumColumn = (targetEnum, options = {}) => {
|
|
|
513
559
|
};
|
|
514
560
|
var BoolColumn = (options = {}) => (0, import_nesties3.MergePropertyDecorators)([
|
|
515
561
|
(0, import_typeorm.Index)(),
|
|
516
|
-
(0,
|
|
562
|
+
(0, import_class_transformer2.Transform)((v) => {
|
|
517
563
|
return parseBool(v.value);
|
|
518
564
|
}),
|
|
519
565
|
(0, import_typeorm.Column)("boolean", columnDecoratorOptions(options)),
|
|
520
566
|
validatorDecorator(options),
|
|
521
567
|
swaggerDecorator(options, { type: Boolean }),
|
|
522
|
-
|
|
568
|
+
GetMutatorBool()
|
|
523
569
|
]);
|
|
524
570
|
var createJsonColumnDef = (columnType = "jsonb", typeTransformerClass = TypeTransformer) => (definition, options = {}) => {
|
|
525
571
|
const cl = (0, import_nesties4.getClassFromClassOrArray)(definition);
|
|
526
572
|
return (0, import_nesties3.MergePropertyDecorators)([
|
|
527
|
-
|
|
528
|
-
(0,
|
|
573
|
+
RequireGetMutator(),
|
|
574
|
+
(0, import_class_transformer2.Type)(() => cl),
|
|
529
575
|
(0, import_class_validator3.ValidateNested)(),
|
|
530
576
|
(0, import_typeorm.Column)(options.columnType || columnType, {
|
|
531
577
|
...columnDecoratorOptions(options),
|
|
@@ -542,7 +588,7 @@ var StringJsonColumn = createJsonColumnDef(
|
|
|
542
588
|
TypeTransformerString
|
|
543
589
|
);
|
|
544
590
|
var NotColumn = (options = {}, specials = {}) => (0, import_nesties3.MergePropertyDecorators)([
|
|
545
|
-
(0,
|
|
591
|
+
(0, import_class_transformer2.Exclude)(),
|
|
546
592
|
swaggerDecorator({
|
|
547
593
|
required: false,
|
|
548
594
|
...options
|
|
@@ -572,89 +618,48 @@ var RelationComputed = (type) => (obj, propertyKey) => {
|
|
|
572
618
|
|
|
573
619
|
// src/decorators/pipes.ts
|
|
574
620
|
var import_common = require("@nestjs/common");
|
|
575
|
-
var
|
|
576
|
-
transform: true,
|
|
577
|
-
transformOptions: { groups: ["c"], enableImplicitConversion: true }
|
|
578
|
-
});
|
|
579
|
-
var GetPipe = () => new import_common.ValidationPipe({
|
|
621
|
+
var OptionalDataPipe = () => new import_common.ValidationPipe({
|
|
580
622
|
transform: true,
|
|
581
|
-
transformOptions: {
|
|
623
|
+
transformOptions: { enableImplicitConversion: true },
|
|
582
624
|
skipMissingProperties: true,
|
|
583
625
|
skipNullProperties: true,
|
|
584
626
|
skipUndefinedProperties: true
|
|
585
627
|
});
|
|
586
|
-
var
|
|
587
|
-
transform
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
skipNullProperties: true,
|
|
591
|
-
skipUndefinedProperties: true
|
|
592
|
-
});
|
|
593
|
-
|
|
594
|
-
// src/utility/query.ts
|
|
595
|
-
function createQueryCondition(cond) {
|
|
596
|
-
return (obj, qb, entityName, ...fields) => {
|
|
597
|
-
for (const field of fields) {
|
|
598
|
-
if (obj[field] == null) {
|
|
599
|
-
continue;
|
|
600
|
-
}
|
|
601
|
-
const ret = cond(obj, qb, entityName, field);
|
|
602
|
-
if (typeof ret === "string") {
|
|
603
|
-
qb.andWhere(ret);
|
|
604
|
-
} else if (typeof ret === "object" && typeof ret["query"] === "string") {
|
|
605
|
-
const _ret = ret;
|
|
606
|
-
qb.andWhere(_ret.query, _ret.params);
|
|
607
|
-
}
|
|
608
|
-
}
|
|
609
|
-
return qb;
|
|
610
|
-
};
|
|
611
|
-
}
|
|
612
|
-
var applyQueryProperty = createQueryCondition(
|
|
613
|
-
(obj, qb, entityName, field) => qb.andWhere(`${entityName}.${field} = :${field}`, { [field]: obj[field] })
|
|
614
|
-
);
|
|
615
|
-
var applyQueryPropertyLike = createQueryCondition(
|
|
616
|
-
(obj, qb, entityName, field) => qb.andWhere(`${entityName}.${field} like (:${field} || '%')`, {
|
|
617
|
-
[field]: obj[field]
|
|
618
|
-
})
|
|
619
|
-
);
|
|
620
|
-
var applyQueryPropertySearch = createQueryCondition(
|
|
621
|
-
(obj, qb, entityName, field) => qb.andWhere(`${entityName}.${field} like ('%' || :${field} || '%')`, {
|
|
622
|
-
[field]: obj[field]
|
|
623
|
-
})
|
|
624
|
-
);
|
|
625
|
-
var applyQueryPropertyZeroNullable = createQueryCondition(
|
|
626
|
-
(obj, qb, entityName, field) => {
|
|
627
|
-
if ([0, "0"].indexOf(obj[field]) !== -1) {
|
|
628
|
-
qb.andWhere(`${entityName}.${field} IS NULL`);
|
|
629
|
-
} else {
|
|
630
|
-
qb.andWhere(`${entityName}.${field} = :${field}`, {
|
|
631
|
-
[field]: obj[field]
|
|
632
|
-
});
|
|
633
|
-
}
|
|
634
|
-
}
|
|
635
|
-
);
|
|
636
|
-
var applyQueryMatchBoolean = createQueryCondition(
|
|
637
|
-
(obj, qb, entityName, field) => {
|
|
638
|
-
const value = parseBool(obj[field]);
|
|
639
|
-
if (value === true) {
|
|
640
|
-
qb.andWhere(`${entityName}.${field} = TRUE`);
|
|
628
|
+
var PickPipe = (fields) => ({
|
|
629
|
+
transform(obj) {
|
|
630
|
+
if (obj === null || typeof obj !== "object") {
|
|
631
|
+
return obj;
|
|
641
632
|
}
|
|
642
|
-
|
|
643
|
-
|
|
633
|
+
const proto = Object.getPrototypeOf(obj);
|
|
634
|
+
const clone = Object.create(proto);
|
|
635
|
+
const fieldSet = new Set(fields);
|
|
636
|
+
for (const key of fieldSet) {
|
|
637
|
+
const desc = Object.getOwnPropertyDescriptor(obj, key);
|
|
638
|
+
if (desc) {
|
|
639
|
+
Object.defineProperty(clone, key, desc);
|
|
640
|
+
}
|
|
644
641
|
}
|
|
642
|
+
return clone;
|
|
645
643
|
}
|
|
646
|
-
);
|
|
647
|
-
var
|
|
648
|
-
(obj
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
qb.andWhere(`${entityName}.${field} = 1`);
|
|
644
|
+
});
|
|
645
|
+
var OmitPipe = (fields) => ({
|
|
646
|
+
transform(obj) {
|
|
647
|
+
if (obj === null || typeof obj !== "object") {
|
|
648
|
+
return obj;
|
|
652
649
|
}
|
|
653
|
-
|
|
654
|
-
|
|
650
|
+
const proto = Object.getPrototypeOf(obj);
|
|
651
|
+
const clone = Object.create(proto);
|
|
652
|
+
const omitSet = new Set(fields);
|
|
653
|
+
for (const key of Reflect.ownKeys(obj)) {
|
|
654
|
+
if (omitSet.has(key)) continue;
|
|
655
|
+
const desc = Object.getOwnPropertyDescriptor(obj, key);
|
|
656
|
+
if (desc) {
|
|
657
|
+
Object.defineProperty(clone, key, desc);
|
|
658
|
+
}
|
|
655
659
|
}
|
|
660
|
+
return clone;
|
|
656
661
|
}
|
|
657
|
-
);
|
|
662
|
+
});
|
|
658
663
|
|
|
659
664
|
// src/decorators/query.ts
|
|
660
665
|
var import_nesties5 = require("nesties");
|
|
@@ -689,31 +694,118 @@ var getSubject = (qb, alias) => {
|
|
|
689
694
|
};
|
|
690
695
|
|
|
691
696
|
// src/decorators/query.ts
|
|
697
|
+
var import_typeorm2 = require("typeorm");
|
|
692
698
|
var QueryCondition = (cond) => Metadata.set(
|
|
693
699
|
"queryCondition",
|
|
694
700
|
cond,
|
|
695
701
|
"queryConditionFields"
|
|
696
702
|
);
|
|
697
|
-
var
|
|
698
|
-
|
|
699
|
-
var
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
703
|
+
var QueryManual = () => QueryCondition((obj, qb, entityName, key) => {
|
|
704
|
+
});
|
|
705
|
+
var QueryWrapInfo = class {
|
|
706
|
+
constructor(obj, key, field) {
|
|
707
|
+
this.obj = obj;
|
|
708
|
+
this.key = key;
|
|
709
|
+
this.field = field;
|
|
710
|
+
this._value = obj[key];
|
|
711
|
+
}
|
|
712
|
+
get value() {
|
|
713
|
+
return this._value;
|
|
714
|
+
}
|
|
715
|
+
mutateValue(next) {
|
|
716
|
+
this._value = next;
|
|
717
|
+
}
|
|
718
|
+
};
|
|
719
|
+
var queryWrapCounters = /* @__PURE__ */ new WeakMap();
|
|
720
|
+
var getQueryVarName = (obj, key) => {
|
|
721
|
+
const queryCounters = queryWrapCounters.get(obj) || {};
|
|
722
|
+
let useField = `_qw_` + key;
|
|
723
|
+
if (queryCounters[key] == null) {
|
|
724
|
+
queryCounters[key] = 0;
|
|
725
|
+
} else {
|
|
726
|
+
useField += `__${queryCounters[key].toString(36)}`;
|
|
727
|
+
++queryCounters[key];
|
|
728
|
+
}
|
|
729
|
+
queryWrapCounters.set(obj, queryCounters);
|
|
730
|
+
return useField;
|
|
731
|
+
};
|
|
732
|
+
var QueryWrap = (wrapper, field) => QueryCondition((obj, qb, entityName, key) => {
|
|
704
733
|
if (obj[key] == null) return;
|
|
705
734
|
const fieldName = field || key;
|
|
706
|
-
const
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
735
|
+
const varField = getQueryVarName(obj, key);
|
|
736
|
+
const entityExpr = `${entityName}.${fieldName}`;
|
|
737
|
+
const varExpr = `:${varField}`;
|
|
738
|
+
const info = new QueryWrapInfo(obj, key, fieldName);
|
|
739
|
+
const expr = wrapper(entityExpr, varExpr, info);
|
|
740
|
+
if (expr) {
|
|
741
|
+
qb.andWhere(expr, {
|
|
742
|
+
[varField]: info.value
|
|
743
|
+
});
|
|
744
|
+
}
|
|
710
745
|
});
|
|
746
|
+
var createQueryWrap = (wrapper) => (field) => QueryWrap(wrapper, field);
|
|
747
|
+
var QueryLike = createQueryWrap(
|
|
748
|
+
(entityExpr, varExpr) => `${entityExpr} LIKE (${varExpr} || '%')`
|
|
749
|
+
);
|
|
750
|
+
var QuerySearch = createQueryWrap(
|
|
751
|
+
(entityExpr, varExpr) => `${entityExpr} LIKE ('%' || ${varExpr} || '%')`
|
|
752
|
+
);
|
|
753
|
+
var QueryEqualZeroNullable = createQueryWrap(
|
|
754
|
+
(entityExpr, varExpr, info) => [0, "0"].indexOf(info.value) !== -1 ? `${entityExpr} IS NULL` : `${entityExpr} = ${varExpr}`
|
|
755
|
+
);
|
|
756
|
+
var QueryMatchBoolean = createQueryWrap(
|
|
757
|
+
(entityExpr, varExpr, info) => {
|
|
758
|
+
const value = parseBool(info.value);
|
|
759
|
+
if (value === true) {
|
|
760
|
+
return `${entityExpr} = TRUE`;
|
|
761
|
+
}
|
|
762
|
+
if (value === false) {
|
|
763
|
+
return `${entityExpr} = FALSE`;
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
);
|
|
767
|
+
var QueryMatchBooleanMySQL = createQueryWrap(
|
|
768
|
+
(entityExpr, varExpr, info) => {
|
|
769
|
+
const value = parseBool(info.value);
|
|
770
|
+
if (value === true) {
|
|
771
|
+
return `${entityExpr} = 1`;
|
|
772
|
+
}
|
|
773
|
+
if (value === false) {
|
|
774
|
+
return `${entityExpr} = 0`;
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
);
|
|
778
|
+
var QueryOperator = (operator, field) => QueryWrap(
|
|
779
|
+
(entityExpr, varExpr) => `${entityExpr} ${operator} ${varExpr}`,
|
|
780
|
+
field
|
|
781
|
+
);
|
|
711
782
|
var createQueryOperator = (operator) => (field) => QueryOperator(operator, field);
|
|
783
|
+
var QueryEqual = createQueryOperator("=");
|
|
712
784
|
var QueryGreater = createQueryOperator(">");
|
|
713
785
|
var QueryGreaterEqual = createQueryOperator(">=");
|
|
714
786
|
var QueryLess = createQueryOperator("<");
|
|
715
787
|
var QueryLessEqual = createQueryOperator("<=");
|
|
716
788
|
var QueryNotEqual = createQueryOperator("!=");
|
|
789
|
+
var QueryJsonbHas = createQueryOperator("?");
|
|
790
|
+
var createQueryArrayify = (newWrapper, singleFallbackWrapper) => createQueryWrap((entityExpr, varExpr, info) => {
|
|
791
|
+
const value = info.value;
|
|
792
|
+
const items = Array.isArray(value) ? value : typeof value === "string" ? value.split(",") : [value];
|
|
793
|
+
if (items.length === 1 && singleFallbackWrapper) {
|
|
794
|
+
const singleRes = singleFallbackWrapper(entityExpr, varExpr, info);
|
|
795
|
+
if (singleRes) {
|
|
796
|
+
return singleRes;
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
info.mutateValue(items);
|
|
800
|
+
const newVarExpr = `(:...${varExpr.slice(1)})`;
|
|
801
|
+
return newWrapper(entityExpr, newVarExpr, info);
|
|
802
|
+
});
|
|
803
|
+
var createQueryOperatorArrayify = (operator, singleFallback) => createQueryArrayify(
|
|
804
|
+
(entityExpr, varExpr) => `${entityExpr} ${operator} ${varExpr}`,
|
|
805
|
+
typeof singleFallback === "string" ? singleFallback.length ? (entityExpr, varExpr) => `${entityExpr} ${singleFallback} ${varExpr}` : void 0 : singleFallback
|
|
806
|
+
);
|
|
807
|
+
var QueryIn = createQueryOperatorArrayify("IN", "=");
|
|
808
|
+
var QueryNotIn = createQueryOperatorArrayify("NOT IN", "!=");
|
|
717
809
|
var QueryFullText = (options = {}) => {
|
|
718
810
|
const configurationName = options.parser ? `nicot_parser_${options.parser}` : options.configuration || "english";
|
|
719
811
|
const tsQueryFunction = options.tsQueryFunction || "websearch_to_tsquery";
|
|
@@ -721,7 +813,7 @@ var QueryFullText = (options = {}) => {
|
|
|
721
813
|
QueryCondition((obj, qb, entityName, key) => {
|
|
722
814
|
if (obj[key] == null) return;
|
|
723
815
|
const fieldName = key;
|
|
724
|
-
const typeormField = key;
|
|
816
|
+
const typeormField = getQueryVarName(obj, key);
|
|
725
817
|
const tsVectorStatement = `to_tsvector('${configurationName}', "${entityName}"."${fieldName}")`;
|
|
726
818
|
const tsQueryStatement = `${tsQueryFunction}('${configurationName}', :${typeormField})`;
|
|
727
819
|
qb.andWhere(`${tsVectorStatement} @@ ${tsQueryStatement}`, {
|
|
@@ -747,6 +839,36 @@ var QueryFullText = (options = {}) => {
|
|
|
747
839
|
)
|
|
748
840
|
]);
|
|
749
841
|
};
|
|
842
|
+
var QueryAnd = (...decs) => {
|
|
843
|
+
const conditions = decs.map(
|
|
844
|
+
(dec) => reflector.getMetadataFromDecorator(dec, "queryCondition")
|
|
845
|
+
);
|
|
846
|
+
return QueryCondition(
|
|
847
|
+
(obj, qb, entityName, key) => conditions.forEach((cond) => cond(obj, qb, entityName, key))
|
|
848
|
+
);
|
|
849
|
+
};
|
|
850
|
+
var QueryOr = (...decs) => {
|
|
851
|
+
const conditions = decs.map(
|
|
852
|
+
(dec) => reflector.getMetadataFromDecorator(dec, "queryCondition")
|
|
853
|
+
);
|
|
854
|
+
return QueryCondition((obj, qb, entityName, key) => {
|
|
855
|
+
if (!conditions.length) {
|
|
856
|
+
return;
|
|
857
|
+
}
|
|
858
|
+
qb.andWhere(
|
|
859
|
+
new import_typeorm2.Brackets((orQb) => {
|
|
860
|
+
const innerBrackets = conditions.map(
|
|
861
|
+
(cond) => new import_typeorm2.Brackets((andQb) => {
|
|
862
|
+
cond(obj, andQb, entityName, key);
|
|
863
|
+
})
|
|
864
|
+
);
|
|
865
|
+
const [first, ...rest] = innerBrackets;
|
|
866
|
+
orQb.where(first);
|
|
867
|
+
rest.forEach((bracket) => orQb.orWhere(bracket));
|
|
868
|
+
})
|
|
869
|
+
);
|
|
870
|
+
});
|
|
871
|
+
};
|
|
750
872
|
|
|
751
873
|
// src/dto/cursor-pagination.ts
|
|
752
874
|
var CursorPaginationDto = class {
|
|
@@ -819,10 +941,10 @@ function CursorPaginationReturnMessageDto(type) {
|
|
|
819
941
|
}
|
|
820
942
|
|
|
821
943
|
// src/crud-base.ts
|
|
822
|
-
var
|
|
944
|
+
var import_typeorm7 = require("typeorm");
|
|
823
945
|
|
|
824
946
|
// src/bases/time-base.ts
|
|
825
|
-
var
|
|
947
|
+
var import_typeorm3 = require("typeorm");
|
|
826
948
|
|
|
827
949
|
// src/bases/page-settings.ts
|
|
828
950
|
var import_class_validator5 = require("class-validator");
|
|
@@ -899,26 +1021,26 @@ var TimeBase = class extends PageSettingsDto {
|
|
|
899
1021
|
}
|
|
900
1022
|
};
|
|
901
1023
|
__decorateClass([
|
|
902
|
-
(0,
|
|
1024
|
+
(0, import_typeorm3.CreateDateColumn)({ select: false }),
|
|
903
1025
|
NotColumn(),
|
|
904
1026
|
NotInResult({ entityVersioningDate: true }),
|
|
905
1027
|
Reflect.metadata("design:type", Date)
|
|
906
1028
|
], TimeBase.prototype, "createTime", 2);
|
|
907
1029
|
__decorateClass([
|
|
908
|
-
(0,
|
|
1030
|
+
(0, import_typeorm3.UpdateDateColumn)({ select: false }),
|
|
909
1031
|
NotColumn(),
|
|
910
1032
|
NotInResult({ entityVersioningDate: true }),
|
|
911
1033
|
Reflect.metadata("design:type", Date)
|
|
912
1034
|
], TimeBase.prototype, "updateTime", 2);
|
|
913
1035
|
__decorateClass([
|
|
914
|
-
(0,
|
|
1036
|
+
(0, import_typeorm3.DeleteDateColumn)({ select: false }),
|
|
915
1037
|
NotColumn(),
|
|
916
1038
|
NotInResult({ entityVersioningDate: true }),
|
|
917
1039
|
Reflect.metadata("design:type", Date)
|
|
918
1040
|
], TimeBase.prototype, "deleteTime", 2);
|
|
919
1041
|
|
|
920
1042
|
// src/bases/id-base.ts
|
|
921
|
-
var
|
|
1043
|
+
var import_typeorm4 = require("typeorm");
|
|
922
1044
|
var import_class_validator6 = require("class-validator");
|
|
923
1045
|
var import_nesties7 = require("nesties");
|
|
924
1046
|
function IdBase(idOptions = {}) {
|
|
@@ -938,7 +1060,7 @@ function IdBase(idOptions = {}) {
|
|
|
938
1060
|
columnExtras: { nullable: false, primary: true }
|
|
939
1061
|
}),
|
|
940
1062
|
Reflect.metadata("design:type", Number),
|
|
941
|
-
(0,
|
|
1063
|
+
(0, import_typeorm4.Generated)("increment"),
|
|
942
1064
|
QueryEqual()
|
|
943
1065
|
]);
|
|
944
1066
|
dec(cl.prototype, "id");
|
|
@@ -979,10 +1101,10 @@ var import_lodash3 = __toESM(require("lodash"));
|
|
|
979
1101
|
var import_nesties8 = require("nesties");
|
|
980
1102
|
|
|
981
1103
|
// src/utility/get-typeorm-relations.ts
|
|
982
|
-
var
|
|
1104
|
+
var import_typeorm5 = require("typeorm");
|
|
983
1105
|
var import_lodash = __toESM(require("lodash"));
|
|
984
1106
|
function getTypeormRelations(cl) {
|
|
985
|
-
const relations = (0,
|
|
1107
|
+
const relations = (0, import_typeorm5.getMetadataArgsStorage)().relations.filter(
|
|
986
1108
|
(r) => r.target === cl
|
|
987
1109
|
);
|
|
988
1110
|
const typeormRelations = relations.map((relation) => {
|
|
@@ -1029,7 +1151,7 @@ function getTypeormRelations(cl) {
|
|
|
1029
1151
|
}
|
|
1030
1152
|
|
|
1031
1153
|
// src/utility/cursor-pagination-utils.ts
|
|
1032
|
-
var
|
|
1154
|
+
var import_typeorm6 = require("typeorm");
|
|
1033
1155
|
var import_lodash2 = __toESM(require("lodash"));
|
|
1034
1156
|
var import_superjson = __toESM(require("superjson"));
|
|
1035
1157
|
|
|
@@ -1248,8 +1370,8 @@ async function getPaginatedResult(qb, entityClass, entityAliasName, take, cursor
|
|
|
1248
1370
|
).filter((s) => !s.includes("__never__"));
|
|
1249
1371
|
if (expressionMatrix.length) {
|
|
1250
1372
|
qb.andWhere(
|
|
1251
|
-
new
|
|
1252
|
-
const levelToBrackets = (level) => new
|
|
1373
|
+
new import_typeorm6.Brackets((sqb) => {
|
|
1374
|
+
const levelToBrackets = (level) => new import_typeorm6.Brackets((qb2) => {
|
|
1253
1375
|
level.forEach((expr, i) => {
|
|
1254
1376
|
if (i === 0) {
|
|
1255
1377
|
qb2.where(expr);
|
|
@@ -1366,6 +1488,9 @@ var CrudBase = class {
|
|
|
1366
1488
|
cl,
|
|
1367
1489
|
this.crudOptions.keepEntityVersioningDates
|
|
1368
1490
|
);
|
|
1491
|
+
if (cl === this.entityClass && this.crudOptions.outputFieldsToOmit) {
|
|
1492
|
+
fields.push(...this.crudOptions.outputFieldsToOmit);
|
|
1493
|
+
}
|
|
1369
1494
|
for (const field of fields) {
|
|
1370
1495
|
delete o[field];
|
|
1371
1496
|
}
|
|
@@ -1411,7 +1536,7 @@ var CrudBase = class {
|
|
|
1411
1536
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
1412
1537
|
// @ts-ignore
|
|
1413
1538
|
where: {
|
|
1414
|
-
id: (0,
|
|
1539
|
+
id: (0, import_typeorm7.In)(chunk)
|
|
1415
1540
|
},
|
|
1416
1541
|
select: this.crudOptions.createOrUpdate ? void 0 : ["id", "deleteTime"],
|
|
1417
1542
|
withDeleted: true
|
|
@@ -1854,8 +1979,8 @@ function CrudService(entityClass, crudOptions = {}) {
|
|
|
1854
1979
|
// src/restful.ts
|
|
1855
1980
|
var import_common3 = require("@nestjs/common");
|
|
1856
1981
|
var import_nesties10 = require("nesties");
|
|
1857
|
-
var
|
|
1858
|
-
var
|
|
1982
|
+
var import_swagger6 = require("@nestjs/swagger");
|
|
1983
|
+
var import_lodash5 = __toESM(require("lodash"));
|
|
1859
1984
|
var import_nesties11 = require("nesties");
|
|
1860
1985
|
|
|
1861
1986
|
// src/bases/base-restful-controller.ts
|
|
@@ -1871,175 +1996,249 @@ var BaseRestfulController = class {
|
|
|
1871
1996
|
constructor(serviceOrRepo, _options = {}) {
|
|
1872
1997
|
this._options = _options;
|
|
1873
1998
|
if (serviceOrRepo instanceof CrudBase) {
|
|
1874
|
-
this.
|
|
1999
|
+
this._service = serviceOrRepo;
|
|
1875
2000
|
} else {
|
|
1876
2001
|
const crudServiceClass = CrudService(this._options.entityClass, {
|
|
1877
2002
|
relations: this._options.relations
|
|
1878
2003
|
});
|
|
1879
|
-
this.
|
|
2004
|
+
this._service = new crudServiceClass(serviceOrRepo);
|
|
1880
2005
|
}
|
|
1881
2006
|
}
|
|
1882
2007
|
findOne(id) {
|
|
1883
|
-
return this.
|
|
2008
|
+
return this._service.findOne(id);
|
|
1884
2009
|
}
|
|
1885
2010
|
findAll(dto) {
|
|
1886
2011
|
if (this._options.paginateType === "cursor") {
|
|
1887
|
-
return this.
|
|
2012
|
+
return this._service.findAllCursorPaginated(dto);
|
|
1888
2013
|
}
|
|
1889
2014
|
if (this._options.paginateType === "offset") {
|
|
1890
|
-
return this.
|
|
2015
|
+
return this._service.findAll(dto);
|
|
1891
2016
|
}
|
|
1892
2017
|
dto["recordsPerPage"] ??= 99999;
|
|
1893
|
-
return this.
|
|
2018
|
+
return this._service.findAll(dto);
|
|
1894
2019
|
}
|
|
1895
2020
|
create(dto) {
|
|
1896
|
-
return this.
|
|
2021
|
+
return this._service.create(dto);
|
|
1897
2022
|
}
|
|
1898
2023
|
update(id, dto) {
|
|
1899
|
-
return this.
|
|
2024
|
+
return this._service.update(id, dto);
|
|
1900
2025
|
}
|
|
1901
2026
|
delete(id) {
|
|
1902
|
-
return this.
|
|
2027
|
+
return this._service.delete(id);
|
|
1903
2028
|
}
|
|
1904
2029
|
import(data) {
|
|
1905
|
-
return this.
|
|
2030
|
+
return this._service.importEntities(data.data);
|
|
1906
2031
|
}
|
|
1907
2032
|
};
|
|
1908
2033
|
|
|
1909
2034
|
// src/utility/omit-type-exclude.ts
|
|
1910
2035
|
var import_swagger5 = require("@nestjs/swagger");
|
|
1911
|
-
var
|
|
2036
|
+
var import_class_transformer3 = require("class-transformer");
|
|
1912
2037
|
var OmitTypeExclude = (cl, keys) => {
|
|
1913
2038
|
const omitted = (0, import_swagger5.OmitType)(cl, keys);
|
|
1914
2039
|
for (const key of keys) {
|
|
1915
|
-
(0,
|
|
2040
|
+
(0, import_class_transformer3.Exclude)()(omitted.prototype, key);
|
|
1916
2041
|
}
|
|
1917
2042
|
return omitted;
|
|
1918
2043
|
};
|
|
2044
|
+
var PickTypeExpose = (cl, keys) => {
|
|
2045
|
+
const picked = (0, import_swagger5.OmitType)(
|
|
2046
|
+
cl,
|
|
2047
|
+
Object.keys(cl.prototype).filter((k) => !keys.includes(k))
|
|
2048
|
+
);
|
|
2049
|
+
for (const key of keys) {
|
|
2050
|
+
(0, import_class_transformer3.Expose)()(picked.prototype, key);
|
|
2051
|
+
}
|
|
2052
|
+
return picked;
|
|
2053
|
+
};
|
|
1919
2054
|
|
|
1920
2055
|
// src/utility/patch-column-in-get.ts
|
|
1921
|
-
var import_swagger6 = require("@nestjs/swagger");
|
|
1922
2056
|
var import_nesties9 = require("nesties");
|
|
2057
|
+
var import_lodash4 = __toESM(require("lodash"));
|
|
2058
|
+
var import_constants = require("@nestjs/swagger/dist/constants");
|
|
1923
2059
|
var PatchColumnsInGet = (cl, originalCl = cl, fieldsToOmit = []) => {
|
|
1924
2060
|
const omit2 = new Set(fieldsToOmit);
|
|
1925
|
-
const
|
|
2061
|
+
const useCl = originalCl || cl;
|
|
2062
|
+
const mutateFields = getSpecificFields(useCl, "getMutator").filter(
|
|
1926
2063
|
(f) => !omit2.has(f)
|
|
1927
2064
|
);
|
|
1928
|
-
for (const field of
|
|
2065
|
+
for (const field of mutateFields) {
|
|
1929
2066
|
const originalApiProp = (0, import_nesties9.getApiProperty)(originalCl, field);
|
|
1930
|
-
(
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
2067
|
+
const info = reflector.get("getMutator", useCl, field);
|
|
2068
|
+
Reflect.defineMetadata(
|
|
2069
|
+
import_constants.DECORATORS.API_MODEL_PROPERTIES,
|
|
2070
|
+
{
|
|
2071
|
+
...originalApiProp,
|
|
2072
|
+
type: String,
|
|
2073
|
+
required: false,
|
|
2074
|
+
example: info.example ?? void 0,
|
|
2075
|
+
enum: info.enum ?? void 0,
|
|
2076
|
+
default: void 0,
|
|
2077
|
+
...info.apiPropertyExtras || {}
|
|
2078
|
+
},
|
|
2079
|
+
cl.prototype,
|
|
2080
|
+
field
|
|
2081
|
+
);
|
|
2082
|
+
}
|
|
2083
|
+
const queryableFieldsRemaining = import_lodash4.default.difference(
|
|
2084
|
+
getSpecificFields(useCl, "queryCondition"),
|
|
2085
|
+
mutateFields
|
|
2086
|
+
);
|
|
2087
|
+
for (const field of queryableFieldsRemaining) {
|
|
2088
|
+
const originalApiProp = (0, import_nesties9.getApiProperty)(originalCl, field);
|
|
2089
|
+
Reflect.defineMetadata(
|
|
2090
|
+
import_constants.DECORATORS.API_MODEL_PROPERTIES,
|
|
2091
|
+
{
|
|
2092
|
+
...originalApiProp,
|
|
2093
|
+
default: void 0
|
|
2094
|
+
// we remove every default value in get
|
|
2095
|
+
},
|
|
2096
|
+
cl.prototype,
|
|
2097
|
+
field
|
|
2098
|
+
);
|
|
1937
2099
|
}
|
|
1938
2100
|
return cl;
|
|
1939
2101
|
};
|
|
1940
2102
|
|
|
2103
|
+
// src/utility/memorize.ts
|
|
2104
|
+
var Memorize = () => {
|
|
2105
|
+
const cache = /* @__PURE__ */ new WeakMap();
|
|
2106
|
+
return function(_target, propertyKey, descriptor) {
|
|
2107
|
+
const getter = descriptor.get;
|
|
2108
|
+
descriptor.get = function() {
|
|
2109
|
+
if (cache.has(this)) return cache.get(this);
|
|
2110
|
+
const value = getter.call(this);
|
|
2111
|
+
cache.set(this, value);
|
|
2112
|
+
return value;
|
|
2113
|
+
};
|
|
2114
|
+
};
|
|
2115
|
+
};
|
|
2116
|
+
|
|
2117
|
+
// src/utility/mutate-pipe.ts
|
|
2118
|
+
var MutatorPipe = class {
|
|
2119
|
+
constructor(entityClass) {
|
|
2120
|
+
this.entityClass = entityClass;
|
|
2121
|
+
this.mutatorFields = getSpecificFields(this.entityClass, "getMutator");
|
|
2122
|
+
}
|
|
2123
|
+
transform(obj) {
|
|
2124
|
+
if (obj === null || typeof obj !== "object") {
|
|
2125
|
+
return obj;
|
|
2126
|
+
}
|
|
2127
|
+
const newObj = { ...obj };
|
|
2128
|
+
for (const field of this.mutatorFields) {
|
|
2129
|
+
const v = newObj[field];
|
|
2130
|
+
if (v == null) {
|
|
2131
|
+
continue;
|
|
2132
|
+
}
|
|
2133
|
+
const mutator = reflector.get("getMutator", this.entityClass, field);
|
|
2134
|
+
newObj[field] = mutator.mutator(v);
|
|
2135
|
+
}
|
|
2136
|
+
return newObj;
|
|
2137
|
+
}
|
|
2138
|
+
};
|
|
2139
|
+
|
|
1941
2140
|
// src/restful.ts
|
|
1942
2141
|
var getCurrentLevelRelations = (relations) => relations.filter((r) => !r.includes("."));
|
|
1943
2142
|
var getNextLevelRelations = (relations, enteringField) => relations.filter((r) => r.includes(".") && r.startsWith(`${enteringField}.`)).map((r) => r.split(".").slice(1).join("."));
|
|
1944
|
-
var
|
|
2143
|
+
var _RestfulFactory = class _RestfulFactory {
|
|
1945
2144
|
constructor(entityClass, options = {}, __resolveVisited = /* @__PURE__ */ new Map()) {
|
|
1946
2145
|
this.entityClass = entityClass;
|
|
1947
2146
|
this.options = options;
|
|
1948
2147
|
this.__resolveVisited = __resolveVisited;
|
|
1949
|
-
|
|
2148
|
+
if (options.relations) {
|
|
2149
|
+
filterRelations(entityClass, options.relations);
|
|
2150
|
+
}
|
|
2151
|
+
}
|
|
2152
|
+
getEntityClassName() {
|
|
2153
|
+
return this.options.entityClassName || this.entityClass.name;
|
|
2154
|
+
}
|
|
2155
|
+
get fieldsToOmit() {
|
|
2156
|
+
return import_lodash5.default.uniq([
|
|
1950
2157
|
...getSpecificFields(this.entityClass, "notColumn"),
|
|
1951
2158
|
...this.options.fieldsToOmit || [],
|
|
1952
2159
|
...getTypeormRelations(this.entityClass).map(
|
|
1953
2160
|
(r) => r.propertyName
|
|
1954
2161
|
)
|
|
1955
2162
|
]);
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
2163
|
+
}
|
|
2164
|
+
get fieldsInCreateToOmit() {
|
|
2165
|
+
return import_lodash5.default.uniq([
|
|
2166
|
+
...this.fieldsToOmit,
|
|
2167
|
+
...this.options.writeFieldsToOmit || [],
|
|
2168
|
+
...this.options.createFieldsToOmit || [],
|
|
2169
|
+
...getSpecificFields(this.entityClass, "notWritable"),
|
|
2170
|
+
...getSpecificFields(this.entityClass, "notCreatable")
|
|
2171
|
+
]);
|
|
2172
|
+
}
|
|
2173
|
+
get createDto() {
|
|
2174
|
+
return (0, import_nesties11.RenameClass)(
|
|
2175
|
+
OmitTypeExclude(this.entityClass, this.fieldsInCreateToOmit),
|
|
1965
2176
|
`Create${this.entityClass.name}Dto`
|
|
1966
2177
|
);
|
|
1967
|
-
|
|
1968
|
-
|
|
2178
|
+
}
|
|
2179
|
+
get fieldsInUpdateToOmit() {
|
|
2180
|
+
return import_lodash5.default.uniq([
|
|
1969
2181
|
...this.fieldsToOmit,
|
|
1970
|
-
...
|
|
2182
|
+
...this.options.writeFieldsToOmit || [],
|
|
2183
|
+
...this.options.updateFieldsToOmit || [],
|
|
2184
|
+
...getSpecificFields(this.entityClass, "notWritable"),
|
|
2185
|
+
...getSpecificFields(this.entityClass, "notChangeable")
|
|
1971
2186
|
]);
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1975
|
-
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1980
|
-
|
|
2187
|
+
}
|
|
2188
|
+
get updateDto() {
|
|
2189
|
+
return (0, import_nesties11.RenameClass)(
|
|
2190
|
+
(0, import_swagger6.PartialType)(OmitTypeExclude(this.entityClass, this.fieldsInUpdateToOmit)),
|
|
2191
|
+
`Update${this.entityClass.name}Dto`
|
|
2192
|
+
);
|
|
2193
|
+
}
|
|
2194
|
+
get importDto() {
|
|
2195
|
+
return ImportDataDto(this.createDto);
|
|
2196
|
+
}
|
|
2197
|
+
get fieldsInGetToOmit() {
|
|
2198
|
+
return import_lodash5.default.uniq([
|
|
2199
|
+
...this.fieldsToOmit,
|
|
2200
|
+
...getSpecificFields(this.entityClass, "notQueryable"),
|
|
2201
|
+
...import_lodash5.default.difference(
|
|
2202
|
+
getSpecificFields(this.entityClass, "requireGetMutator"),
|
|
2203
|
+
getSpecificFields(this.entityClass, "getMutator")
|
|
2204
|
+
)
|
|
2205
|
+
]);
|
|
2206
|
+
}
|
|
2207
|
+
get queryableFields() {
|
|
2208
|
+
return import_lodash5.default.difference(
|
|
2209
|
+
getSpecificFields(this.entityClass, "queryCondition"),
|
|
2210
|
+
this.fieldsInGetToOmit
|
|
2211
|
+
);
|
|
2212
|
+
}
|
|
2213
|
+
get findAllDto() {
|
|
2214
|
+
let cl = (0, import_swagger6.PartialType)(
|
|
2215
|
+
PatchColumnsInGet(
|
|
2216
|
+
OmitTypeExclude(
|
|
2217
|
+
this.entityClass instanceof PageSettingsDto ? this.entityClass : (0, import_swagger6.IntersectionType)(
|
|
2218
|
+
this.entityClass,
|
|
2219
|
+
PageSettingsDto
|
|
1981
2220
|
),
|
|
1982
|
-
this.entityClass,
|
|
1983
2221
|
this.fieldsInGetToOmit
|
|
1984
|
-
)
|
|
1985
|
-
|
|
1986
|
-
|
|
2222
|
+
),
|
|
2223
|
+
this.entityClass,
|
|
2224
|
+
this.fieldsInGetToOmit
|
|
2225
|
+
)
|
|
1987
2226
|
);
|
|
1988
|
-
|
|
1989
|
-
(
|
|
2227
|
+
if (this.options.skipNonQueryableFields) {
|
|
2228
|
+
cl = PickTypeExpose(cl, this.queryableFields);
|
|
2229
|
+
}
|
|
2230
|
+
return (0, import_nesties11.RenameClass)(cl, `Find${this.entityClass.name}Dto`);
|
|
2231
|
+
}
|
|
2232
|
+
get findAllCursorPaginatedDto() {
|
|
2233
|
+
return (0, import_nesties11.RenameClass)(
|
|
2234
|
+
(0, import_swagger6.IntersectionType)(
|
|
1990
2235
|
OmitTypeExclude(this.findAllDto, ["pageCount"]),
|
|
1991
2236
|
CursorPaginationDto
|
|
1992
2237
|
),
|
|
1993
2238
|
`Find${this.entityClass.name}CursorPaginatedDto`
|
|
1994
2239
|
);
|
|
1995
|
-
this.updateDto = (0, import_nesties11.RenameClass)(
|
|
1996
|
-
(0, import_swagger7.PartialType)(
|
|
1997
|
-
OmitTypeExclude(
|
|
1998
|
-
this.createDto,
|
|
1999
|
-
getSpecificFields(this.entityClass, "notChangeable")
|
|
2000
|
-
)
|
|
2001
|
-
),
|
|
2002
|
-
`Update${this.entityClass.name}Dto`
|
|
2003
|
-
);
|
|
2004
|
-
this.entityResultDto = this.resolveEntityResultDto();
|
|
2005
|
-
this.entityCreateResultDto = (0, import_nesties11.RenameClass)(
|
|
2006
|
-
(0, import_swagger7.OmitType)(this.entityResultDto, [
|
|
2007
|
-
...getTypeormRelations(this.entityClass).map(
|
|
2008
|
-
(r) => r.propertyName
|
|
2009
|
-
),
|
|
2010
|
-
...getSpecificFields(
|
|
2011
|
-
this.entityClass,
|
|
2012
|
-
"notColumn",
|
|
2013
|
-
(m) => !m.keepInCreate
|
|
2014
|
-
)
|
|
2015
|
-
]),
|
|
2016
|
-
`${this.getEntityClassName()}CreateResultDto`
|
|
2017
|
-
);
|
|
2018
|
-
this.entityReturnMessageDto = (0, import_nesties10.ReturnMessageDto)(this.entityResultDto);
|
|
2019
|
-
this.entityCreateReturnMessageDto = (0, import_nesties10.ReturnMessageDto)(
|
|
2020
|
-
this.entityCreateResultDto
|
|
2021
|
-
);
|
|
2022
|
-
this.entityArrayReturnMessageDto = (0, import_nesties10.PaginatedReturnMessageDto)(
|
|
2023
|
-
this.entityResultDto
|
|
2024
|
-
);
|
|
2025
|
-
this.entityCursorPaginationReturnMessageDto = CursorPaginationReturnMessageDto(this.entityResultDto);
|
|
2026
|
-
this.importReturnMessageDto = (0, import_nesties10.ReturnMessageDto)([
|
|
2027
|
-
ImportEntryDto(this.entityCreateResultDto)
|
|
2028
|
-
]);
|
|
2029
|
-
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
2030
|
-
this.idType = Reflect.getMetadata(
|
|
2031
|
-
"design:type",
|
|
2032
|
-
this.entityClass.prototype,
|
|
2033
|
-
"id"
|
|
2034
|
-
);
|
|
2035
|
-
if (options.relations) {
|
|
2036
|
-
filterRelations(entityClass, options.relations);
|
|
2037
|
-
}
|
|
2038
|
-
}
|
|
2039
|
-
getEntityClassName() {
|
|
2040
|
-
return this.options.entityClassName || this.entityClass.name;
|
|
2041
2240
|
}
|
|
2042
|
-
|
|
2241
|
+
get entityResultDto() {
|
|
2043
2242
|
const relations = getTypeormRelations(this.entityClass);
|
|
2044
2243
|
const currentLevelRelations = this.options.relations && new Set(
|
|
2045
2244
|
getCurrentLevelRelations(
|
|
@@ -2054,7 +2253,7 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2054
2253
|
...this.options.outputFieldsToOmit || [],
|
|
2055
2254
|
...this.options.relations ? relations.map((r) => r.propertyName).filter((r) => !currentLevelRelations.has(r)) : []
|
|
2056
2255
|
]);
|
|
2057
|
-
const resultDto = (0,
|
|
2256
|
+
const resultDto = (0, import_swagger6.OmitType)(this.entityClass, [...outputFieldsToOmit]);
|
|
2058
2257
|
for (const relation of relations) {
|
|
2059
2258
|
if (outputFieldsToOmit.has(relation.propertyName)) continue;
|
|
2060
2259
|
if (nonTransformableTypes.has(relation.propertyClass)) continue;
|
|
@@ -2063,7 +2262,7 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2063
2262
|
this.entityClass,
|
|
2064
2263
|
relation.propertyName
|
|
2065
2264
|
);
|
|
2066
|
-
(0,
|
|
2265
|
+
(0, import_swagger6.ApiProperty)({
|
|
2067
2266
|
...oldApiProperty,
|
|
2068
2267
|
required: false,
|
|
2069
2268
|
type: () => relation.isArray ? [useClass[0]] : useClass[0]
|
|
@@ -2079,7 +2278,7 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2079
2278
|
const relationFactory = new _RestfulFactory(
|
|
2080
2279
|
relation.propertyClass,
|
|
2081
2280
|
{
|
|
2082
|
-
entityClassName: `${this.getEntityClassName()}${this.options.relations ? (0,
|
|
2281
|
+
entityClassName: `${this.getEntityClassName()}${this.options.relations ? (0, import_lodash5.upperFirst)(relation.propertyName) : relation.propertyClass.name}`,
|
|
2083
2282
|
relations: this.options.relations && getNextLevelRelations(
|
|
2084
2283
|
this.options.relations.map(extractRelationName),
|
|
2085
2284
|
relation.propertyName
|
|
@@ -2103,7 +2302,7 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2103
2302
|
).filter((f) => !outputFieldsToOmit.has(f));
|
|
2104
2303
|
for (const field of notRequiredButHasDefaultFields) {
|
|
2105
2304
|
const oldApiProperty = (0, import_nesties10.getApiProperty)(resultDto, field);
|
|
2106
|
-
(0,
|
|
2305
|
+
(0, import_swagger6.ApiProperty)({
|
|
2107
2306
|
...oldApiProperty,
|
|
2108
2307
|
required: true
|
|
2109
2308
|
})(resultDto.prototype, field);
|
|
@@ -2118,6 +2317,40 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2118
2317
|
}
|
|
2119
2318
|
return res;
|
|
2120
2319
|
}
|
|
2320
|
+
get entityCreateResultDto() {
|
|
2321
|
+
return (0, import_nesties11.RenameClass)(
|
|
2322
|
+
(0, import_swagger6.OmitType)(this.entityResultDto, [
|
|
2323
|
+
...getTypeormRelations(this.entityClass).map(
|
|
2324
|
+
(r) => r.propertyName
|
|
2325
|
+
),
|
|
2326
|
+
...getSpecificFields(
|
|
2327
|
+
this.entityClass,
|
|
2328
|
+
"notColumn",
|
|
2329
|
+
(m) => !m.keepInCreate
|
|
2330
|
+
)
|
|
2331
|
+
]),
|
|
2332
|
+
`${this.getEntityClassName()}CreateResultDto`
|
|
2333
|
+
);
|
|
2334
|
+
}
|
|
2335
|
+
get entityReturnMessageDto() {
|
|
2336
|
+
return (0, import_nesties10.ReturnMessageDto)(this.entityResultDto);
|
|
2337
|
+
}
|
|
2338
|
+
get entityCreateReturnMessageDto() {
|
|
2339
|
+
return (0, import_nesties10.ReturnMessageDto)(this.entityCreateResultDto);
|
|
2340
|
+
}
|
|
2341
|
+
get entityArrayReturnMessageDto() {
|
|
2342
|
+
return (0, import_nesties10.PaginatedReturnMessageDto)(this.entityResultDto);
|
|
2343
|
+
}
|
|
2344
|
+
get entityCursorPaginationReturnMessageDto() {
|
|
2345
|
+
return CursorPaginationReturnMessageDto(this.entityResultDto);
|
|
2346
|
+
}
|
|
2347
|
+
get importReturnMessageDto() {
|
|
2348
|
+
return (0, import_nesties10.ReturnMessageDto)([ImportEntryDto(this.entityCreateResultDto)]);
|
|
2349
|
+
}
|
|
2350
|
+
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
2351
|
+
get idType() {
|
|
2352
|
+
return Reflect.getMetadata("design:type", this.entityClass.prototype, "id");
|
|
2353
|
+
}
|
|
2121
2354
|
usePrefix(methodDec, path) {
|
|
2122
2355
|
if (path) {
|
|
2123
2356
|
if (this.options.prefix) {
|
|
@@ -2137,31 +2370,31 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2137
2370
|
return (0, import_nesties10.MergeMethodDecorators)([
|
|
2138
2371
|
this.usePrefix(import_common3.Post),
|
|
2139
2372
|
(0, import_common3.HttpCode)(200),
|
|
2140
|
-
(0,
|
|
2373
|
+
(0, import_swagger6.ApiOperation)({
|
|
2141
2374
|
summary: `Create a new ${this.getEntityClassName()}`,
|
|
2142
2375
|
...extras
|
|
2143
2376
|
}),
|
|
2144
|
-
(0,
|
|
2145
|
-
(0,
|
|
2146
|
-
(0,
|
|
2377
|
+
(0, import_swagger6.ApiBody)({ type: this.createDto }),
|
|
2378
|
+
(0, import_swagger6.ApiOkResponse)({ type: this.entityCreateReturnMessageDto }),
|
|
2379
|
+
(0, import_swagger6.ApiBadRequestResponse)({
|
|
2147
2380
|
type: import_nesties10.BlankReturnMessageDto,
|
|
2148
2381
|
description: `The ${this.getEntityClassName()} is not valid`
|
|
2149
2382
|
})
|
|
2150
2383
|
]);
|
|
2151
2384
|
}
|
|
2152
2385
|
createParam() {
|
|
2153
|
-
return (0, import_common3.Body)(
|
|
2386
|
+
return (0, import_common3.Body)((0, import_nesties10.DataPipe)(), OmitPipe(this.fieldsInCreateToOmit));
|
|
2154
2387
|
}
|
|
2155
2388
|
findOne(extras = {}) {
|
|
2156
2389
|
return (0, import_nesties10.MergeMethodDecorators)([
|
|
2157
2390
|
this.usePrefix(import_common3.Get, ":id"),
|
|
2158
|
-
(0,
|
|
2391
|
+
(0, import_swagger6.ApiOperation)({
|
|
2159
2392
|
summary: `Find a ${this.getEntityClassName()} by id`,
|
|
2160
2393
|
...extras
|
|
2161
2394
|
}),
|
|
2162
|
-
(0,
|
|
2163
|
-
(0,
|
|
2164
|
-
(0,
|
|
2395
|
+
(0, import_swagger6.ApiParam)({ name: "id", type: this.idType, required: true }),
|
|
2396
|
+
(0, import_swagger6.ApiOkResponse)({ type: this.entityReturnMessageDto }),
|
|
2397
|
+
(0, import_swagger6.ApiNotFoundResponse)({
|
|
2165
2398
|
type: import_nesties10.BlankReturnMessageDto,
|
|
2166
2399
|
description: `The ${this.getEntityClassName()} with the given id was not found`
|
|
2167
2400
|
})
|
|
@@ -2177,78 +2410,82 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2177
2410
|
findAll(extras = {}) {
|
|
2178
2411
|
return (0, import_nesties10.MergeMethodDecorators)([
|
|
2179
2412
|
this.usePrefix(import_common3.Get),
|
|
2180
|
-
(0,
|
|
2413
|
+
(0, import_swagger6.ApiOperation)({
|
|
2181
2414
|
summary: `Find all ${this.getEntityClassName()}`,
|
|
2182
2415
|
...extras
|
|
2183
2416
|
}),
|
|
2184
|
-
(0,
|
|
2417
|
+
(0, import_swagger6.ApiOkResponse)({ type: this.entityArrayReturnMessageDto })
|
|
2185
2418
|
]);
|
|
2186
2419
|
}
|
|
2187
2420
|
findAllCursorPaginated(extras = {}) {
|
|
2188
2421
|
return (0, import_nesties10.MergeMethodDecorators)([
|
|
2189
2422
|
this.usePrefix(import_common3.Get),
|
|
2190
|
-
(0,
|
|
2423
|
+
(0, import_swagger6.ApiOperation)({
|
|
2191
2424
|
summary: `Find all ${this.getEntityClassName()}`,
|
|
2192
2425
|
...extras
|
|
2193
2426
|
}),
|
|
2194
|
-
(0,
|
|
2427
|
+
(0, import_swagger6.ApiOkResponse)({ type: this.entityCursorPaginationReturnMessageDto })
|
|
2195
2428
|
]);
|
|
2196
2429
|
}
|
|
2197
|
-
|
|
2198
|
-
const
|
|
2199
|
-
return
|
|
2430
|
+
getMutatorColumns() {
|
|
2431
|
+
const mutatorColumns = getSpecificFields(this.entityClass, "getMutator");
|
|
2432
|
+
return import_lodash5.default.difference(mutatorColumns, this.fieldsInGetToOmit);
|
|
2200
2433
|
}
|
|
2201
2434
|
findAllParam() {
|
|
2202
|
-
const
|
|
2203
|
-
|
|
2204
|
-
|
|
2435
|
+
const mutatorColumns = this.getMutatorColumns();
|
|
2436
|
+
const restPipes = [OptionalDataPipe(), OmitPipe(this.fieldsInGetToOmit)];
|
|
2437
|
+
if (this.options.skipNonQueryableFields) {
|
|
2438
|
+
restPipes.push(PickPipe(this.queryableFields));
|
|
2439
|
+
}
|
|
2440
|
+
if (mutatorColumns.length) {
|
|
2441
|
+
return (0, import_common3.Query)(new MutatorPipe(this.entityClass), ...restPipes);
|
|
2205
2442
|
} else {
|
|
2206
|
-
return (0, import_common3.Query)(
|
|
2443
|
+
return (0, import_common3.Query)(...restPipes);
|
|
2207
2444
|
}
|
|
2208
2445
|
}
|
|
2209
2446
|
update(extras = {}) {
|
|
2210
2447
|
return (0, import_nesties10.MergeMethodDecorators)([
|
|
2211
2448
|
this.usePrefix(import_common3.Patch, ":id"),
|
|
2212
2449
|
(0, import_common3.HttpCode)(200),
|
|
2213
|
-
(0,
|
|
2450
|
+
(0, import_swagger6.ApiOperation)({
|
|
2214
2451
|
summary: `Update a ${this.getEntityClassName()} by id`,
|
|
2215
2452
|
...extras
|
|
2216
2453
|
}),
|
|
2217
|
-
(0,
|
|
2218
|
-
(0,
|
|
2219
|
-
(0,
|
|
2220
|
-
(0,
|
|
2454
|
+
(0, import_swagger6.ApiParam)({ name: "id", type: this.idType, required: true }),
|
|
2455
|
+
(0, import_swagger6.ApiBody)({ type: this.updateDto }),
|
|
2456
|
+
(0, import_swagger6.ApiOkResponse)({ type: import_nesties10.BlankReturnMessageDto }),
|
|
2457
|
+
(0, import_swagger6.ApiNotFoundResponse)({
|
|
2221
2458
|
type: import_nesties10.BlankReturnMessageDto,
|
|
2222
2459
|
description: `The ${this.getEntityClassName()} with the given id was not found`
|
|
2223
2460
|
}),
|
|
2224
|
-
(0,
|
|
2461
|
+
(0, import_swagger6.ApiBadRequestResponse)({
|
|
2225
2462
|
type: import_nesties10.BlankReturnMessageDto,
|
|
2226
2463
|
description: `The ${this.getEntityClassName()} is not valid`
|
|
2227
2464
|
}),
|
|
2228
|
-
(0,
|
|
2465
|
+
(0, import_swagger6.ApiInternalServerErrorResponse)({
|
|
2229
2466
|
type: import_nesties10.BlankReturnMessageDto,
|
|
2230
2467
|
description: "Internal error"
|
|
2231
2468
|
})
|
|
2232
2469
|
]);
|
|
2233
2470
|
}
|
|
2234
2471
|
updateParam() {
|
|
2235
|
-
return (0, import_common3.Body)(
|
|
2472
|
+
return (0, import_common3.Body)(OptionalDataPipe(), OmitPipe(this.fieldsInUpdateToOmit));
|
|
2236
2473
|
}
|
|
2237
2474
|
delete(extras = {}) {
|
|
2238
2475
|
return (0, import_nesties10.MergeMethodDecorators)([
|
|
2239
2476
|
this.usePrefix(import_common3.Delete, ":id"),
|
|
2240
2477
|
(0, import_common3.HttpCode)(200),
|
|
2241
|
-
(0,
|
|
2478
|
+
(0, import_swagger6.ApiOperation)({
|
|
2242
2479
|
summary: `Delete a ${this.getEntityClassName()} by id`,
|
|
2243
2480
|
...extras
|
|
2244
2481
|
}),
|
|
2245
|
-
(0,
|
|
2246
|
-
(0,
|
|
2247
|
-
(0,
|
|
2482
|
+
(0, import_swagger6.ApiParam)({ name: "id", type: this.idType, required: true }),
|
|
2483
|
+
(0, import_swagger6.ApiOkResponse)({ type: import_nesties10.BlankReturnMessageDto }),
|
|
2484
|
+
(0, import_swagger6.ApiNotFoundResponse)({
|
|
2248
2485
|
type: import_nesties10.BlankReturnMessageDto,
|
|
2249
2486
|
description: `The ${this.getEntityClassName()} with the given id was not found`
|
|
2250
2487
|
}),
|
|
2251
|
-
(0,
|
|
2488
|
+
(0, import_swagger6.ApiInternalServerErrorResponse)({
|
|
2252
2489
|
type: import_nesties10.BlankReturnMessageDto,
|
|
2253
2490
|
description: "Internal error"
|
|
2254
2491
|
})
|
|
@@ -2258,13 +2495,13 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2258
2495
|
return (0, import_nesties10.MergeMethodDecorators)([
|
|
2259
2496
|
(0, import_common3.Post)("import"),
|
|
2260
2497
|
(0, import_common3.HttpCode)(200),
|
|
2261
|
-
(0,
|
|
2498
|
+
(0, import_swagger6.ApiOperation)({
|
|
2262
2499
|
summary: `Import ${this.getEntityClassName()}`,
|
|
2263
2500
|
...extras
|
|
2264
2501
|
}),
|
|
2265
|
-
(0,
|
|
2266
|
-
(0,
|
|
2267
|
-
(0,
|
|
2502
|
+
(0, import_swagger6.ApiBody)({ type: this.importDto }),
|
|
2503
|
+
(0, import_swagger6.ApiOkResponse)({ type: this.importReturnMessageDto }),
|
|
2504
|
+
(0, import_swagger6.ApiInternalServerErrorResponse)({
|
|
2268
2505
|
type: import_nesties10.BlankReturnMessageDto,
|
|
2269
2506
|
description: "Internal error"
|
|
2270
2507
|
})
|
|
@@ -2298,7 +2535,7 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2298
2535
|
},
|
|
2299
2536
|
findAll: {
|
|
2300
2537
|
paramTypes: [
|
|
2301
|
-
routeOptions.paginateType === "cursor" ? this.findAllCursorPaginatedDto : routeOptions.paginateType === "none" ? (0,
|
|
2538
|
+
routeOptions.paginateType === "cursor" ? this.findAllCursorPaginatedDto : routeOptions.paginateType === "none" ? (0, import_swagger6.OmitType)(this.findAllDto, [
|
|
2302
2539
|
"pageCount",
|
|
2303
2540
|
"recordsPerPage"
|
|
2304
2541
|
]) : this.findAllDto
|
|
@@ -2386,15 +2623,135 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2386
2623
|
crudService(options = {}) {
|
|
2387
2624
|
return CrudService(this.entityClass, {
|
|
2388
2625
|
relations: this.options.relations,
|
|
2626
|
+
outputFieldsToOmit: this.options.outputFieldsToOmit,
|
|
2389
2627
|
...options
|
|
2390
2628
|
});
|
|
2391
2629
|
}
|
|
2392
2630
|
};
|
|
2631
|
+
__decorateClass([
|
|
2632
|
+
Memorize()
|
|
2633
|
+
], _RestfulFactory.prototype, "fieldsToOmit", 1);
|
|
2634
|
+
__decorateClass([
|
|
2635
|
+
Memorize()
|
|
2636
|
+
], _RestfulFactory.prototype, "fieldsInCreateToOmit", 1);
|
|
2637
|
+
__decorateClass([
|
|
2638
|
+
Memorize()
|
|
2639
|
+
], _RestfulFactory.prototype, "createDto", 1);
|
|
2640
|
+
__decorateClass([
|
|
2641
|
+
Memorize()
|
|
2642
|
+
], _RestfulFactory.prototype, "fieldsInUpdateToOmit", 1);
|
|
2643
|
+
__decorateClass([
|
|
2644
|
+
Memorize()
|
|
2645
|
+
], _RestfulFactory.prototype, "updateDto", 1);
|
|
2646
|
+
__decorateClass([
|
|
2647
|
+
Memorize()
|
|
2648
|
+
], _RestfulFactory.prototype, "importDto", 1);
|
|
2649
|
+
__decorateClass([
|
|
2650
|
+
Memorize()
|
|
2651
|
+
], _RestfulFactory.prototype, "fieldsInGetToOmit", 1);
|
|
2652
|
+
__decorateClass([
|
|
2653
|
+
Memorize()
|
|
2654
|
+
], _RestfulFactory.prototype, "queryableFields", 1);
|
|
2655
|
+
__decorateClass([
|
|
2656
|
+
Memorize()
|
|
2657
|
+
], _RestfulFactory.prototype, "findAllDto", 1);
|
|
2658
|
+
__decorateClass([
|
|
2659
|
+
Memorize()
|
|
2660
|
+
], _RestfulFactory.prototype, "findAllCursorPaginatedDto", 1);
|
|
2661
|
+
__decorateClass([
|
|
2662
|
+
Memorize()
|
|
2663
|
+
], _RestfulFactory.prototype, "entityResultDto", 1);
|
|
2664
|
+
__decorateClass([
|
|
2665
|
+
Memorize()
|
|
2666
|
+
], _RestfulFactory.prototype, "entityCreateResultDto", 1);
|
|
2667
|
+
__decorateClass([
|
|
2668
|
+
Memorize()
|
|
2669
|
+
], _RestfulFactory.prototype, "entityReturnMessageDto", 1);
|
|
2670
|
+
__decorateClass([
|
|
2671
|
+
Memorize()
|
|
2672
|
+
], _RestfulFactory.prototype, "entityCreateReturnMessageDto", 1);
|
|
2673
|
+
__decorateClass([
|
|
2674
|
+
Memorize()
|
|
2675
|
+
], _RestfulFactory.prototype, "entityArrayReturnMessageDto", 1);
|
|
2676
|
+
__decorateClass([
|
|
2677
|
+
Memorize()
|
|
2678
|
+
], _RestfulFactory.prototype, "entityCursorPaginationReturnMessageDto", 1);
|
|
2679
|
+
__decorateClass([
|
|
2680
|
+
Memorize()
|
|
2681
|
+
], _RestfulFactory.prototype, "importReturnMessageDto", 1);
|
|
2682
|
+
__decorateClass([
|
|
2683
|
+
Memorize()
|
|
2684
|
+
], _RestfulFactory.prototype, "idType", 1);
|
|
2685
|
+
var RestfulFactory = _RestfulFactory;
|
|
2686
|
+
|
|
2687
|
+
// src/utility/query.ts
|
|
2688
|
+
function createQueryCondition(cond) {
|
|
2689
|
+
return (obj, qb, entityName, ...fields) => {
|
|
2690
|
+
for (const field of fields) {
|
|
2691
|
+
if (obj[field] == null) {
|
|
2692
|
+
continue;
|
|
2693
|
+
}
|
|
2694
|
+
const ret = cond(obj, qb, entityName, field);
|
|
2695
|
+
if (typeof ret === "string") {
|
|
2696
|
+
qb.andWhere(ret);
|
|
2697
|
+
} else if (typeof ret === "object" && typeof ret["query"] === "string") {
|
|
2698
|
+
const _ret = ret;
|
|
2699
|
+
qb.andWhere(_ret.query, _ret.params);
|
|
2700
|
+
}
|
|
2701
|
+
}
|
|
2702
|
+
return qb;
|
|
2703
|
+
};
|
|
2704
|
+
}
|
|
2705
|
+
var applyQueryProperty = createQueryCondition(
|
|
2706
|
+
(obj, qb, entityName, field) => qb.andWhere(`${entityName}.${field} = :${field}`, { [field]: obj[field] })
|
|
2707
|
+
);
|
|
2708
|
+
var applyQueryPropertyLike = createQueryCondition(
|
|
2709
|
+
(obj, qb, entityName, field) => qb.andWhere(`${entityName}.${field} like (:${field} || '%')`, {
|
|
2710
|
+
[field]: obj[field]
|
|
2711
|
+
})
|
|
2712
|
+
);
|
|
2713
|
+
var applyQueryPropertySearch = createQueryCondition(
|
|
2714
|
+
(obj, qb, entityName, field) => qb.andWhere(`${entityName}.${field} like ('%' || :${field} || '%')`, {
|
|
2715
|
+
[field]: obj[field]
|
|
2716
|
+
})
|
|
2717
|
+
);
|
|
2718
|
+
var applyQueryPropertyZeroNullable = createQueryCondition(
|
|
2719
|
+
(obj, qb, entityName, field) => {
|
|
2720
|
+
if ([0, "0"].indexOf(obj[field]) !== -1) {
|
|
2721
|
+
qb.andWhere(`${entityName}.${field} IS NULL`);
|
|
2722
|
+
} else {
|
|
2723
|
+
qb.andWhere(`${entityName}.${field} = :${field}`, {
|
|
2724
|
+
[field]: obj[field]
|
|
2725
|
+
});
|
|
2726
|
+
}
|
|
2727
|
+
}
|
|
2728
|
+
);
|
|
2729
|
+
var applyQueryMatchBoolean = createQueryCondition(
|
|
2730
|
+
(obj, qb, entityName, field) => {
|
|
2731
|
+
const value = parseBool(obj[field]);
|
|
2732
|
+
if (value === true) {
|
|
2733
|
+
qb.andWhere(`${entityName}.${field} = TRUE`);
|
|
2734
|
+
}
|
|
2735
|
+
if (value === false) {
|
|
2736
|
+
qb.andWhere(`${entityName}.${field} = FALSE`);
|
|
2737
|
+
}
|
|
2738
|
+
}
|
|
2739
|
+
);
|
|
2740
|
+
var applyQueryMatchBooleanMySQL = createQueryCondition(
|
|
2741
|
+
(obj, qb, entityName, field) => {
|
|
2742
|
+
const value = parseBool(obj[field]);
|
|
2743
|
+
if (value === true) {
|
|
2744
|
+
qb.andWhere(`${entityName}.${field} = 1`);
|
|
2745
|
+
}
|
|
2746
|
+
if (value === false) {
|
|
2747
|
+
qb.andWhere(`${entityName}.${field} = 0`);
|
|
2748
|
+
}
|
|
2749
|
+
}
|
|
2750
|
+
);
|
|
2393
2751
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2394
2752
|
0 && (module.exports = {
|
|
2395
2753
|
BlankCursorPaginationReturnMessageDto,
|
|
2396
2754
|
BoolColumn,
|
|
2397
|
-
CreatePipe,
|
|
2398
2755
|
CrudBase,
|
|
2399
2756
|
CrudService,
|
|
2400
2757
|
CursorPaginationDto,
|
|
@@ -2403,7 +2760,14 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2403
2760
|
EnumColumn,
|
|
2404
2761
|
FloatColumn,
|
|
2405
2762
|
GenericCursorPaginationReturnMessageDto,
|
|
2406
|
-
|
|
2763
|
+
GetMutator,
|
|
2764
|
+
GetMutatorBool,
|
|
2765
|
+
GetMutatorFloat,
|
|
2766
|
+
GetMutatorFloatSeparated,
|
|
2767
|
+
GetMutatorInt,
|
|
2768
|
+
GetMutatorIntSeparated,
|
|
2769
|
+
GetMutatorJson,
|
|
2770
|
+
GetMutatorStringSeparated,
|
|
2407
2771
|
IdBase,
|
|
2408
2772
|
ImportDataBaseDto,
|
|
2409
2773
|
ImportDataDto,
|
|
@@ -2414,10 +2778,15 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2414
2778
|
JsonColumn,
|
|
2415
2779
|
NotChangeable,
|
|
2416
2780
|
NotColumn,
|
|
2781
|
+
NotCreatable,
|
|
2417
2782
|
NotInResult,
|
|
2418
2783
|
NotQueryable,
|
|
2419
2784
|
NotWritable,
|
|
2785
|
+
OmitPipe,
|
|
2786
|
+
OptionalDataPipe,
|
|
2420
2787
|
PageSettingsDto,
|
|
2788
|
+
PickPipe,
|
|
2789
|
+
QueryAnd,
|
|
2421
2790
|
QueryColumn,
|
|
2422
2791
|
QueryCondition,
|
|
2423
2792
|
QueryEqual,
|
|
@@ -2425,16 +2794,24 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2425
2794
|
QueryFullText,
|
|
2426
2795
|
QueryGreater,
|
|
2427
2796
|
QueryGreaterEqual,
|
|
2797
|
+
QueryIn,
|
|
2798
|
+
QueryJsonbHas,
|
|
2428
2799
|
QueryLess,
|
|
2429
2800
|
QueryLessEqual,
|
|
2430
2801
|
QueryLike,
|
|
2802
|
+
QueryManual,
|
|
2431
2803
|
QueryMatchBoolean,
|
|
2432
2804
|
QueryMatchBooleanMySQL,
|
|
2433
2805
|
QueryNotEqual,
|
|
2806
|
+
QueryNotIn,
|
|
2434
2807
|
QueryOperator,
|
|
2808
|
+
QueryOr,
|
|
2435
2809
|
QuerySearch,
|
|
2810
|
+
QueryWrap,
|
|
2811
|
+
QueryWrapInfo,
|
|
2436
2812
|
Relation,
|
|
2437
2813
|
RelationComputed,
|
|
2814
|
+
RequireGetMutator,
|
|
2438
2815
|
RestfulFactory,
|
|
2439
2816
|
SimpleJsonColumn,
|
|
2440
2817
|
StringColumn,
|
|
@@ -2442,7 +2819,6 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2442
2819
|
StringJsonColumn,
|
|
2443
2820
|
TextColumn,
|
|
2444
2821
|
TimeBase,
|
|
2445
|
-
UpdatePipe,
|
|
2446
2822
|
UuidColumn,
|
|
2447
2823
|
applyQueryMatchBoolean,
|
|
2448
2824
|
applyQueryMatchBooleanMySQL,
|
|
@@ -2450,8 +2826,12 @@ var RestfulFactory = class _RestfulFactory {
|
|
|
2450
2826
|
applyQueryPropertyLike,
|
|
2451
2827
|
applyQueryPropertySearch,
|
|
2452
2828
|
applyQueryPropertyZeroNullable,
|
|
2829
|
+
createGetMutator,
|
|
2830
|
+
createQueryArrayify,
|
|
2453
2831
|
createQueryCondition,
|
|
2454
2832
|
createQueryOperator,
|
|
2833
|
+
createQueryOperatorArrayify,
|
|
2834
|
+
createQueryWrap,
|
|
2455
2835
|
...require("nesties")
|
|
2456
2836
|
});
|
|
2457
2837
|
//# sourceMappingURL=index.cjs.map
|