@hedhog/pagination 0.0.2 → 0.0.3
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/decorator/pagination.decorator.d.ts.map +1 -1
- package/dist/decorator/pagination.decorator.js +3 -3
- package/dist/decorator/pagination.decorator.js.map +1 -1
- package/dist/pagination.service.d.ts +2 -0
- package/dist/pagination.service.d.ts.map +1 -1
- package/dist/pagination.service.js +21 -13
- package/dist/pagination.service.js.map +1 -1
- package/package.json +1 -1
- package/src/decorator/pagination.decorator.ts +3 -3
- package/src/pagination.service.ts +34 -16
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pagination.decorator.d.ts","sourceRoot":"","sources":["../../src/decorator/pagination.decorator.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"pagination.decorator.d.ts","sourceRoot":"","sources":["../../src/decorator/pagination.decorator.ts"],"names":[],"mappings":"AAYA,OAAO,EAAsB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAGhF,eAAO,MAAM,UAAU,kMAoEtB,CAAC"}
|
@@ -2,11 +2,11 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.Pagination = void 0;
|
4
4
|
const common_1 = require("@nestjs/common");
|
5
|
-
const pagination_constants_1 = require("../constants/pagination.constants");
|
6
|
-
const patination_enums_1 = require("../enums/patination.enums");
|
7
5
|
const class_transformer_1 = require("class-transformer");
|
8
|
-
const pagination_dto_1 = require("../dto/pagination.dto");
|
9
6
|
const class_validator_1 = require("class-validator");
|
7
|
+
const pagination_constants_1 = require("../constants/pagination.constants");
|
8
|
+
const pagination_dto_1 = require("../dto/pagination.dto");
|
9
|
+
const patination_enums_1 = require("../enums/patination.enums");
|
10
10
|
exports.Pagination = (0, common_1.createParamDecorator)((data, ctx) => {
|
11
11
|
const request = ctx.switchToHttp().getRequest();
|
12
12
|
const defaultOptions = {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pagination.decorator.js","sourceRoot":"","sources":["../../src/decorator/pagination.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAIwB;AACxB,
|
1
|
+
{"version":3,"file":"pagination.decorator.js","sourceRoot":"","sources":["../../src/decorator/pagination.decorator.ts"],"names":[],"mappings":";;;AAAA,2CAIwB;AACxB,yDAAiD;AACjD,qDAA+C;AAC/C,4EAG2C;AAC3C,0DAAsD;AACtD,gEAAgF;AAGnE,QAAA,UAAU,GAAG,IAAA,6BAAoB,EAC5C,CAAC,IAAqB,EAAE,GAAqB,EAAkB,EAAE;IAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;IAEhD,MAAM,cAAc,GAAmB;QACrC,IAAI,EAAE,mCAAY;QAClB,QAAQ,EAAE,wCAAiB;QAC3B,MAAM,EAAE,EAAE;QACV,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,qCAAkB,CAAC,GAAG;QACjC,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,MAAM,WAAW,iDACZ,cAAc,GACd,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,GACpB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CACzB,CAAC;IAEF,MAAM,EACJ,IAAI,GAAG,cAAc,CAAC,IAAI,EAC1B,QAAQ,GAAG,cAAc,CAAC,QAAQ,EAClC,MAAM,GAAG,cAAc,CAAC,MAAM,EAC9B,SAAS,GAAG,cAAc,CAAC,SAAS,EACpC,SAAS,GAAG,cAAc,CAAC,SAAS,EACpC,MAAM,GAAG,cAAc,CAAC,MAAM,GAC/B,GAAG,WAAW,CAAC;IAEhB,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,qCAAkB,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1E,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC;IAE7B,MAAM,SAAS,GAAG;QAChB,IAAI;QACJ,QAAQ;QACR,MAAM;QACN,SAAS;QACT,SAAS,EAAE,cAAc;QACzB,MAAM;KACP,CAAC;IAEF,MAAM,qBAAqB,GAAG,IAAA,gCAAY,EAAC,8BAAa,EAAE,SAAS,CAAC,CAAC;IAErE,MAAM,MAAM,GAAG,IAAA,8BAAY,EAAC,qBAAqB,CAAC,CAAC;IAEnD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,4BAAmB,CAC3B,2DAA2D;YACzD,MAAM;iBACH,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC3D,IAAI,CAAC,IAAI,CAAC,CAChB,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,kCAAe,CAAC,IAAI,CAAC;YAC1B,KAAK,kCAAe,CAAC,QAAQ;gBAC3B,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACnE,KAAK,kCAAe,CAAC,SAAS;gBAC5B,OAAO,cAAc,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;YAChD;gBACE,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CACF,CAAC"}
|
@@ -3,5 +3,7 @@ export declare class PaginationService {
|
|
3
3
|
private readonly logger;
|
4
4
|
paginate<T, M extends BaseModel>(model: M, paginationParams: PaginationParams, customQuery?: FindManyArgs<M>): Promise<PaginatedResult<T>>;
|
5
5
|
extractFieldNames(model: Record<string, any>): string[];
|
6
|
+
isInvalidField(sortField: string, model: BaseModel): boolean;
|
7
|
+
isInvalidFields(fields: string[], model: BaseModel): boolean;
|
6
8
|
}
|
7
9
|
//# sourceMappingURL=pagination.service.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pagination.service.d.ts","sourceRoot":"","sources":["../src/pagination.service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC,qBACa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAEvD,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,EACnC,KAAK,EAAE,CAAC,EACR,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"pagination.service.d.ts","sourceRoot":"","sources":["../src/pagination.service.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,eAAe,EACf,gBAAgB,EACjB,MAAM,0BAA0B,CAAC;AAElC,qBACa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsC;IAEvD,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,EACnC,KAAK,EAAE,CAAC,EACR,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAuG9B,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,EAAE;IAcvD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO;IAI5D,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO;CAG7D"}
|
@@ -32,23 +32,25 @@ let PaginationService = PaginationService_1 = class PaginationService {
|
|
32
32
|
let sortOrderCondition = {
|
33
33
|
id: paginationParams.sortOrder || patination_enums_1.PageOrderDirection.Asc,
|
34
34
|
};
|
35
|
-
if (search && sortField) {
|
36
|
-
const fieldNames = this.extractFieldNames(model);
|
37
|
-
if (!fieldNames.includes(sortField)) {
|
38
|
-
throw new common_1.BadRequestException(`Invalid field: ${sortField}. Valid columns are: ${fieldNames.join(', ')}`);
|
39
|
-
}
|
40
|
-
if (typeof sortField !== 'string') {
|
41
|
-
throw new common_1.BadRequestException('Field must be a string');
|
42
|
-
}
|
43
|
-
}
|
44
35
|
if (sortField) {
|
36
|
+
const invalid = this.isInvalidField(sortField, model);
|
37
|
+
if (invalid) {
|
38
|
+
this.logger.error(`Invalid field: ${sortField}`);
|
39
|
+
throw new common_1.BadRequestException(`Invalid field: ${sortField}. Valid columns are: ${this.extractFieldNames(model).join(', ')}`);
|
40
|
+
}
|
45
41
|
sortOrderCondition = { [sortField]: sortOrder };
|
46
42
|
}
|
43
|
+
if (search) {
|
44
|
+
if (typeof search !== 'string') {
|
45
|
+
this.logger.error('Search must be a string');
|
46
|
+
throw new common_1.BadRequestException('Search must be a string');
|
47
|
+
}
|
48
|
+
}
|
47
49
|
if (fields) {
|
48
|
-
const
|
49
|
-
|
50
|
-
|
51
|
-
throw new common_1.BadRequestException(`Invalid fields: ${
|
50
|
+
const invalidFields = this.isInvalidFields(fields, model);
|
51
|
+
if (invalidFields) {
|
52
|
+
this.logger.error(`Invalid fields: ${sortField}. Valid columns are: ${this.extractFieldNames(model).join(', ')}`);
|
53
|
+
throw new common_1.BadRequestException(`Invalid fields: ${sortField}. Valid columns are: ${this.extractFieldNames(model).join(', ')}`);
|
52
54
|
}
|
53
55
|
selectCondition = fields.reduce((acc, field) => {
|
54
56
|
acc[field] = true;
|
@@ -96,6 +98,12 @@ let PaginationService = PaginationService_1 = class PaginationService {
|
|
96
98
|
}
|
97
99
|
return fieldNames;
|
98
100
|
}
|
101
|
+
isInvalidField(sortField, model) {
|
102
|
+
return !model.fields[sortField];
|
103
|
+
}
|
104
|
+
isInvalidFields(fields, model) {
|
105
|
+
return !fields.every((field) => model.fields[field]);
|
106
|
+
}
|
99
107
|
};
|
100
108
|
exports.PaginationService = PaginationService;
|
101
109
|
exports.PaginationService = PaginationService = PaginationService_1 = __decorate([
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"pagination.service.js","sourceRoot":"","sources":["../src/pagination.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAyE;AACzE,2EAG0C;AAC1C,+DAA8D;AASvD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAAvB;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"pagination.service.js","sourceRoot":"","sources":["../src/pagination.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -3,15 +3,15 @@ import {
|
|
3
3
|
createParamDecorator,
|
4
4
|
ExecutionContext,
|
5
5
|
} from '@nestjs/common';
|
6
|
+
import { plainToClass } from 'class-transformer';
|
7
|
+
import { validateSync } from 'class-validator';
|
6
8
|
import {
|
7
9
|
DEFAULT_PAGE,
|
8
10
|
DEFAULT_PAGE_SIZE,
|
9
11
|
} from '../constants/pagination.constants';
|
12
|
+
import { PaginationDTO } from '../dto/pagination.dto';
|
10
13
|
import { PageOrderDirection, PaginationField } from '../enums/patination.enums';
|
11
14
|
import { PaginationType } from '../types/pagination.types';
|
12
|
-
import { plainToClass } from 'class-transformer';
|
13
|
-
import { PaginationDTO } from '../dto/pagination.dto';
|
14
|
-
import { validateSync } from 'class-validator';
|
15
15
|
|
16
16
|
export const Pagination = createParamDecorator(
|
17
17
|
(data: PaginationField, ctx: ExecutionContext): PaginationType => {
|
@@ -41,34 +41,44 @@ export class PaginationService {
|
|
41
41
|
id: paginationParams.sortOrder || PageOrderDirection.Asc,
|
42
42
|
};
|
43
43
|
|
44
|
-
if (
|
45
|
-
const
|
46
|
-
|
47
|
-
|
44
|
+
if (sortField) {
|
45
|
+
const invalid = this.isInvalidField(sortField, model);
|
46
|
+
if (invalid) {
|
47
|
+
this.logger.error(`Invalid field: ${sortField}`);
|
48
48
|
throw new BadRequestException(
|
49
|
-
`Invalid field: ${sortField}. Valid columns are: ${
|
49
|
+
`Invalid field: ${sortField}. Valid columns are: ${this.extractFieldNames(
|
50
|
+
model,
|
51
|
+
).join(', ')}`,
|
50
52
|
);
|
51
53
|
}
|
52
54
|
|
53
|
-
|
54
|
-
throw new BadRequestException('Field must be a string');
|
55
|
-
}
|
55
|
+
sortOrderCondition = { [sortField]: sortOrder };
|
56
56
|
}
|
57
57
|
|
58
|
-
if (
|
59
|
-
|
58
|
+
if (search) {
|
59
|
+
if (typeof search !== 'string') {
|
60
|
+
this.logger.error('Search must be a string');
|
61
|
+
throw new BadRequestException('Search must be a string');
|
62
|
+
}
|
60
63
|
}
|
61
64
|
|
62
65
|
if (fields) {
|
63
|
-
const
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
66
|
+
const invalidFields = this.isInvalidFields(fields, model);
|
67
|
+
|
68
|
+
if (invalidFields) {
|
69
|
+
this.logger.error(
|
70
|
+
`Invalid fields: ${sortField}. Valid columns are: ${this.extractFieldNames(
|
71
|
+
model,
|
72
|
+
).join(', ')}`,
|
73
|
+
);
|
74
|
+
|
68
75
|
throw new BadRequestException(
|
69
|
-
`Invalid fields: ${
|
76
|
+
`Invalid fields: ${sortField}. Valid columns are: ${this.extractFieldNames(
|
77
|
+
model,
|
78
|
+
).join(', ')}`,
|
70
79
|
);
|
71
80
|
}
|
81
|
+
|
72
82
|
selectCondition = fields.reduce((acc, field) => {
|
73
83
|
acc[field] = true;
|
74
84
|
return acc;
|
@@ -125,4 +135,12 @@ export class PaginationService {
|
|
125
135
|
|
126
136
|
return fieldNames;
|
127
137
|
}
|
138
|
+
|
139
|
+
isInvalidField(sortField: string, model: BaseModel): boolean {
|
140
|
+
return !model.fields[sortField];
|
141
|
+
}
|
142
|
+
|
143
|
+
isInvalidFields(fields: string[], model: BaseModel): boolean {
|
144
|
+
return !fields.every((field) => model.fields[field]);
|
145
|
+
}
|
128
146
|
}
|