nicot 1.0.25 → 1.0.27
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 +17 -10
- package/dist/src/bases/page-settings.d.ts +1 -0
- package/dist/src/bases/page-settings.js +8 -0
- package/dist/src/bases/page-settings.js.map +1 -1
- package/dist/src/bases/time-base.js.map +1 -1
- package/dist/src/decorators/index.d.ts +1 -0
- package/dist/src/decorators/index.js +1 -0
- package/dist/src/decorators/index.js.map +1 -1
- package/dist/src/decorators/query.d.ts +5 -0
- package/dist/src/decorators/query.js +14 -0
- package/dist/src/decorators/query.js.map +1 -0
- package/dist/src/dto/import-entry.js +1 -1
- package/dist/src/dto/import-entry.js.map +1 -1
- package/dist/src/utility/metadata.d.ts +9 -5
- package/dist/src/utility/metadata.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,46 +22,53 @@ Those decorators would all decorate the following, with the SAME settings.
|
|
|
22
22
|
@Entity()
|
|
23
23
|
export class User extends IdBase() {
|
|
24
24
|
@Index()
|
|
25
|
+
@QueryLike() // queries as 'where name LIKE :name%'
|
|
25
26
|
@StringColumn(5, {
|
|
26
27
|
required: true,
|
|
27
28
|
description: 'User name',
|
|
28
29
|
})
|
|
29
30
|
name: string;
|
|
30
31
|
|
|
32
|
+
@QueryEqual() // queries as 'where age = :age'
|
|
31
33
|
@IntColumn('int', { unsigned: true, description: 'User age', default: 20 })
|
|
32
34
|
age: number;
|
|
33
35
|
|
|
34
36
|
@EnumColumn(Gender, { description: 'User gender' })
|
|
35
37
|
gender: Gender;
|
|
36
|
-
|
|
38
|
+
|
|
37
39
|
@NotColumn()
|
|
38
40
|
somethingElse: any; // Would not come from client input, and would not go into OpenAPI document.
|
|
39
|
-
|
|
41
|
+
|
|
40
42
|
// possible optional override operations
|
|
41
|
-
|
|
43
|
+
|
|
42
44
|
override isValidInCreate() { // Custom before-create check.
|
|
43
45
|
if (!this.name.length) {
|
|
44
46
|
return 'Name cannot be empty!';
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
|
-
|
|
49
|
+
|
|
48
50
|
override isValidInUpdate() { // Custom before-update check.
|
|
49
51
|
if (this.name && !this.name.length) {
|
|
50
52
|
return 'Name cannot be empty!';
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
|
-
|
|
55
|
+
|
|
54
56
|
override async beforeCreate() {
|
|
55
57
|
this.name = this.name.toLowerCase(); // Do something before create.
|
|
56
58
|
}
|
|
57
|
-
|
|
59
|
+
|
|
58
60
|
override async afterCreate() {
|
|
59
61
|
this.name = this.name.toUpperCase(); // Do something after create before sending to user.
|
|
60
62
|
}
|
|
61
|
-
|
|
62
|
-
override async beforeGet() {
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
|
|
64
|
+
override async beforeGet() {
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
override async afterGet() {
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
override async beforeUpdate() {
|
|
71
|
+
}
|
|
65
72
|
}
|
|
66
73
|
```
|
|
67
74
|
|
|
@@ -9,6 +9,7 @@ export interface PageSettingsFactory {
|
|
|
9
9
|
export interface QueryWise<T> {
|
|
10
10
|
applyQuery(qb: SelectQueryBuilder<T>, entityName: string): void;
|
|
11
11
|
}
|
|
12
|
+
export declare type QueryCond = <T extends PageSettingsDto>(obj: T, qb: SelectQueryBuilder<T>, entityName: string, key: keyof T & string) => any;
|
|
12
13
|
export declare class PageSettingsDto implements PageSettingsWise, PageSettingsFactory, QueryWise<PageSettingsDto> {
|
|
13
14
|
pageCount: number;
|
|
14
15
|
recordsPerPage: number;
|
|
@@ -13,6 +13,7 @@ exports.PageSettingsDto = void 0;
|
|
|
13
13
|
const decorators_1 = require("../decorators");
|
|
14
14
|
const class_validator_1 = require("class-validator");
|
|
15
15
|
const swagger_1 = require("@nestjs/swagger");
|
|
16
|
+
const metadata_1 = require("../utility/metadata");
|
|
16
17
|
class PageSettingsDto {
|
|
17
18
|
getActualPageSettings() {
|
|
18
19
|
return {
|
|
@@ -30,6 +31,13 @@ class PageSettingsDto {
|
|
|
30
31
|
return (this.getPageCount() - 1) * this.getRecordsPerPage();
|
|
31
32
|
}
|
|
32
33
|
applyQuery(qb, entityName) {
|
|
34
|
+
const queryFields = metadata_1.reflector.getArray('queryConditionFields', this);
|
|
35
|
+
for (const field of queryFields) {
|
|
36
|
+
const condition = metadata_1.reflector.get('queryCondition', this, field);
|
|
37
|
+
if (condition) {
|
|
38
|
+
condition(this, qb, entityName, field);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
33
41
|
qb.take(this.getRecordsPerPage()).skip(this.getStartingFrom());
|
|
34
42
|
}
|
|
35
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-settings.js","sourceRoot":"","sources":["../../../src/bases/page-settings.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4C;AAE5C,qDAAoD;AACpD,6CAA8C;
|
|
1
|
+
{"version":3,"file":"page-settings.js","sourceRoot":"","sources":["../../../src/bases/page-settings.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4C;AAE5C,qDAAoD;AACpD,6CAA8C;AAC9C,kDAAgD;AAsBhD,MAAa,eAAe;IAyB1B,qBAAqB;QACnB,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE;YAC9B,cAAc,EAAE,IAAI,CAAC,iBAAiB,EAAE;SACzC,CAAC;IACJ,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,eAAe;QACb,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC9D,CAAC;IAED,UAAU,CAAC,EAAuC,EAAE,UAAkB;QACpE,MAAM,WAAW,GAAG,oBAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;QACrE,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE;YAC/B,MAAM,SAAS,GAAG,oBAAS,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YAC/D,IAAI,SAAS,EAAE;gBACb,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,EAAE,KAA8B,CAAC,CAAC;aACjE;SACF;QACD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACjE,CAAC;CACF;AA1CC;IATC,IAAA,wBAAW,GAAE;IACb,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,gCAAgC;QAC7C,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;KACX,CAAC;;kDACgB;AAWlB;IATC,IAAA,wBAAW,GAAE;IACb,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAW,EAAC;QACX,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,CAAC;KACX,CAAC;;uDACqB;AAvBzB,0CAsDC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-base.js","sourceRoot":"","sources":["../../../src/bases/time-base.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"time-base.js","sourceRoot":"","sources":["../../../src/bases/time-base.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAKiB;AACjB,8CAA0C;AAC1C,mDAAkD;AAgBlD,MAAa,QACX,SAAQ,+BAAe;IAevB,eAAe;QACb,OAAO;IACT,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,YAAY,KAAmB,CAAC;IAEtC,gEAAgE;IAChE,KAAK,CAAC,WAAW,KAAmB,CAAC;IAErC,gEAAgE;IAChE,KAAK,CAAC,SAAS,KAAmB,CAAC;IAEnC,gEAAgE;IAChE,KAAK,CAAC,QAAQ,KAAmB,CAAC;IAElC,eAAe;QACb,OAAO;IACT,CAAC;IAED,gEAAgE;IAChE,KAAK,CAAC,YAAY,KAAmB,CAAC;CACvC;AAhCC;IAFC,IAAA,0BAAgB,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACnC,IAAA,sBAAS,GAAE;8BACA,IAAI;4CAAC;AAIjB;IAFC,IAAA,0BAAgB,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACnC,IAAA,sBAAS,GAAE;8BACA,IAAI;4CAAC;AAIjB;IAFC,IAAA,0BAAgB,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACnC,IAAA,sBAAS,GAAE;8BACA,IAAI;4CAAC;AAdnB,4BAsCC"}
|
|
@@ -19,4 +19,5 @@ __exportStar(require("./merge"), exports);
|
|
|
19
19
|
__exportStar(require("./property"), exports);
|
|
20
20
|
__exportStar(require("./restful"), exports);
|
|
21
21
|
__exportStar(require("./pipes"), exports);
|
|
22
|
+
__exportStar(require("./query"), exports);
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,0CAAwB;AACxB,6CAA2B;AAC3B,4CAA0B;AAC1B,0CAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/decorators/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,0CAAwB;AACxB,6CAA2B;AAC3B,4CAA0B;AAC1B,0CAAwB;AACxB,0CAAwB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { QueryCond } from '../bases';
|
|
2
|
+
export declare const QueryCondition: (cond: QueryCond) => import("typed-reflector").AllDecorators;
|
|
3
|
+
export declare const QueryEqual: () => import("typed-reflector").AllDecorators;
|
|
4
|
+
export declare const QueryLike: () => import("typed-reflector").AllDecorators;
|
|
5
|
+
export declare const QuerySearch: () => import("typed-reflector").AllDecorators;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QuerySearch = exports.QueryLike = exports.QueryEqual = exports.QueryCondition = void 0;
|
|
4
|
+
const metadata_1 = require("../utility/metadata");
|
|
5
|
+
const utility_1 = require("../utility");
|
|
6
|
+
const QueryCondition = (cond) => metadata_1.Metadata.set('queryCondition', cond, 'queryConditionFields');
|
|
7
|
+
exports.QueryCondition = QueryCondition;
|
|
8
|
+
const QueryEqual = () => (0, exports.QueryCondition)(utility_1.applyQueryProperty);
|
|
9
|
+
exports.QueryEqual = QueryEqual;
|
|
10
|
+
const QueryLike = () => (0, exports.QueryCondition)(utility_1.applyQueryPropertyLike);
|
|
11
|
+
exports.QueryLike = QueryLike;
|
|
12
|
+
const QuerySearch = () => (0, exports.QueryCondition)(utility_1.applyQueryPropertySearch);
|
|
13
|
+
exports.QuerySearch = QuerySearch;
|
|
14
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/decorators/query.ts"],"names":[],"mappings":";;;AACA,kDAA+C;AAC/C,wCAIoB;AAEb,MAAM,cAAc,GAAG,CAAC,IAAe,EAAE,EAAE,CAChD,mBAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;AADlD,QAAA,cAAc,kBACoC;AACxD,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,IAAA,sBAAc,EAAC,4BAAkB,CAAC,CAAC;AAAtD,QAAA,UAAU,cAA4C;AAC5D,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,IAAA,sBAAc,EAAC,gCAAsB,CAAC,CAAC;AAAzD,QAAA,SAAS,aAAgD;AAC/D,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,IAAA,sBAAc,EAAC,kCAAwB,CAAC,CAAC;AAA7D,QAAA,WAAW,eAAkD"}
|
|
@@ -38,7 +38,7 @@ function ImportDataDto(type) {
|
|
|
38
38
|
const dtoClass = (0, insert_field_1.InsertField)(ImportDataBaseDto, {
|
|
39
39
|
data: { type: [type], options: { description: 'Import data' } },
|
|
40
40
|
}, `${(0, insert_field_1.getClassFromClassOrArray)(type).name}ImportData`);
|
|
41
|
-
(0, class_transformer_1.Type)(() =>
|
|
41
|
+
(0, class_transformer_1.Type)(() => type)(dtoClass.prototype, 'data');
|
|
42
42
|
return dtoClass;
|
|
43
43
|
}
|
|
44
44
|
exports.ImportDataDto = ImportDataDto;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-entry.js","sourceRoot":"","sources":["../../../src/dto/import-entry.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAAyC;AACzC,qDAAiD;AACjD,0DAKiC;AAEjC,MAAa,kBAAkB;CAG9B;AADC;IADC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;kDAC7C;AAFjB,gDAGC;AAOD,SAAgB,cAAc,CAAyB,IAAO;IAC5D,OAAO,IAAA,0BAAW,EAChB,kBAAkB,EAClB;QACE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;KAC1D,EACD,GAAG,IAAA,uCAAwB,EAAC,IAAI,CAAC,CAAC,IAAI,aAAa,CACpD,CAAC;AACJ,CAAC;AARD,wCAQC;AAED,MAAa,iBAAiB;CAG7B;AADC;IADC,IAAA,gCAAc,GAAE;;+CACP;AAFZ,8CAGC;AAED,SAAgB,aAAa,CAAqB,IAAO;IACvD,MAAM,QAAQ,GAAG,IAAA,0BAAW,EAC1B,iBAAiB,EACjB;QACE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE;KAChE,EACD,GAAG,IAAA,uCAAwB,EAAC,IAAI,CAAC,CAAC,IAAI,YAAY,CACnD,CAAC;IACF,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"import-entry.js","sourceRoot":"","sources":["../../../src/dto/import-entry.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA8C;AAC9C,yDAAyC;AACzC,qDAAiD;AACjD,0DAKiC;AAEjC,MAAa,kBAAkB;CAG9B;AADC;IADC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;kDAC7C;AAFjB,gDAGC;AAOD,SAAgB,cAAc,CAAyB,IAAO;IAC5D,OAAO,IAAA,0BAAW,EAChB,kBAAkB,EAClB;QACE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;KAC1D,EACD,GAAG,IAAA,uCAAwB,EAAC,IAAI,CAAC,CAAC,IAAI,aAAa,CACpD,CAAC;AACJ,CAAC;AARD,wCAQC;AAED,MAAa,iBAAiB;CAG7B;AADC;IADC,IAAA,gCAAc,GAAE;;+CACP;AAFZ,8CAGC;AAED,SAAgB,aAAa,CAAqB,IAAO;IACvD,MAAM,QAAQ,GAAG,IAAA,0BAAW,EAC1B,iBAAiB,EACjB;QACE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE;KAChE,EACD,GAAG,IAAA,uCAAwB,EAAC,IAAI,CAAC,CAAC,IAAI,YAAY,CACnD,CAAC;IACF,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAVD,sCAUC"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { MetadataSetter, Reflector } from 'typed-reflector';
|
|
2
|
-
|
|
2
|
+
import { QueryCond } from '../bases';
|
|
3
|
+
interface SpecificFields {
|
|
3
4
|
notColumn: boolean;
|
|
4
5
|
notWritable: boolean;
|
|
5
6
|
notChangeable: boolean;
|
|
6
7
|
}
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
interface MetadataMap extends SpecificFields {
|
|
9
|
+
queryCondition: QueryCond;
|
|
10
|
+
}
|
|
11
|
+
declare type FieldsMap = {
|
|
12
|
+
[K in keyof MetadataMap as `${K}Fields`]: string;
|
|
9
13
|
};
|
|
10
|
-
export declare const Metadata: MetadataSetter<
|
|
11
|
-
export declare const reflector: Reflector<
|
|
14
|
+
export declare const Metadata: MetadataSetter<MetadataMap, FieldsMap>;
|
|
15
|
+
export declare const reflector: Reflector<MetadataMap, FieldsMap>;
|
|
12
16
|
export declare function getSpecificFields(obj: any, type: keyof SpecificFields): string[];
|
|
13
17
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/utility/metadata.ts"],"names":[],"mappings":";;;AAAA,qDAA4D;
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/utility/metadata.ts"],"names":[],"mappings":";;;AAAA,qDAA4D;AAmB/C,QAAA,QAAQ,GAAG,IAAI,gCAAc,EAAiC,CAAC;AAC/D,QAAA,SAAS,GAAG,IAAI,2BAAS,EAAiC,CAAC;AAExE,SAAgB,iBAAiB,CAAC,GAAQ,EAAE,IAA0B;IACpE,OAAO,iBAAS;SACb,QAAQ,CAAC,GAAG,IAAI,QAAQ,EAAE,GAAG,CAAC;SAC9B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACxD,CAAC;AAJD,8CAIC"}
|
package/package.json
CHANGED