@servicelabsco/nestjs-utility-services 1.1.103 → 1.1.104
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/config/source.hash.d.ts +1 -0
- package/dist/config/source.hash.js +1 -0
- package/dist/config/source.hash.js.map +1 -1
- package/dist/platformUtility/services/audit.service.d.ts +5 -2
- package/dist/platformUtility/services/audit.service.js +19 -12
- package/dist/platformUtility/services/audit.service.js.map +1 -1
- package/dist/platformUtility/services/mail.service.d.ts +6 -1
- package/dist/platformUtility/services/mail.service.js +22 -8
- package/dist/platformUtility/services/mail.service.js.map +1 -1
- package/package.json +1 -1
- package/dist/platformUtility/dtos/common.list.filter.dto.d.ts +0 -15
- package/dist/platformUtility/dtos/common.list.filter.dto.js +0 -83
- package/dist/platformUtility/dtos/common.list.filter.dto.js.map +0 -1
- package/dist/platformUtility/dtos/date.filter.dto.d.ts +0 -10
- package/dist/platformUtility/dtos/date.filter.dto.js +0 -57
- package/dist/platformUtility/dtos/date.filter.dto.js.map +0 -1
- package/dist/platformUtility/dtos/date.range.filter.dto.d.ts +0 -4
- package/dist/platformUtility/dtos/date.range.filter.dto.js +0 -29
- package/dist/platformUtility/dtos/date.range.filter.dto.js.map +0 -1
- package/dist/platformUtility/dtos/list.response.dto.d.ts +0 -14
- package/dist/platformUtility/dtos/list.response.dto.js +0 -7
- package/dist/platformUtility/dtos/list.response.dto.js.map +0 -1
- package/dist/platformUtility/dtos/list.response.format.dto.d.ts +0 -4
- package/dist/platformUtility/dtos/list.response.format.dto.js +0 -27
- package/dist/platformUtility/dtos/list.response.format.dto.js.map +0 -1
- package/dist/platformUtility/dtos/number.range.filter.dto.d.ts +0 -7
- package/dist/platformUtility/dtos/number.range.filter.dto.js +0 -45
- package/dist/platformUtility/dtos/number.range.filter.dto.js.map +0 -1
- package/dist/platformUtility/libraries/process.common.list.d.ts +0 -28
- package/dist/platformUtility/libraries/process.common.list.js +0 -90
- package/dist/platformUtility/libraries/process.common.list.js.map +0 -1
- package/dist/platformUtility/libraries/process.date.filter.d.ts +0 -14
- package/dist/platformUtility/libraries/process.date.filter.js +0 -61
- package/dist/platformUtility/libraries/process.date.filter.js.map +0 -1
@@ -10,6 +10,7 @@ const SOURCEHASH = {
|
|
10
10
|
userGroup: '3354bd3a69f63e9e40f120547fcfe772',
|
11
11
|
relationship: 'ca92f0ad887a73e9ffa448f5e4620c70',
|
12
12
|
mobileValidation: 'fa2bfeba4f8c0f5c4ec5bf9ca6c03771',
|
13
|
+
mailLog: 'a3da8b74348b592a71fe3667f5d92954',
|
13
14
|
};
|
14
15
|
module.exports = SOURCEHASH;
|
15
16
|
//# sourceMappingURL=source.hash.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"source.hash.js","sourceRoot":"","sources":["../../src/config/source.hash.ts"],"names":[],"mappings":";AAAA,MAAM,UAAU,GAAG;IACf,cAAc,EAAE,kCAAkC;IAClD,IAAI,EAAE,kCAAkC;IACxC,KAAK,EAAE,kCAAkC;IACzC,iBAAiB,EAAE,kCAAkC;IACrD,MAAM,EAAE,kCAAkC;IAC1C,MAAM,EAAE,kCAAkC;IAC1C,IAAI,EAAE,kCAAkC;IACxC,SAAS,EAAE,kCAAkC;IAC7C,YAAY,EAAE,kCAAkC;IAChD,gBAAgB,EAAE,kCAAkC;
|
1
|
+
{"version":3,"file":"source.hash.js","sourceRoot":"","sources":["../../src/config/source.hash.ts"],"names":[],"mappings":";AAAA,MAAM,UAAU,GAAG;IACf,cAAc,EAAE,kCAAkC;IAClD,IAAI,EAAE,kCAAkC;IACxC,KAAK,EAAE,kCAAkC;IACzC,iBAAiB,EAAE,kCAAkC;IACrD,MAAM,EAAE,kCAAkC;IAC1C,MAAM,EAAE,kCAAkC;IAC1C,IAAI,EAAE,kCAAkC;IACxC,SAAS,EAAE,kCAAkC;IAC7C,YAAY,EAAE,kCAAkC;IAChD,gBAAgB,EAAE,kCAAkC;IACpD,OAAO,EAAE,kCAAkC;CAC9C,CAAC;AAEF,iBAAS,UAAU,CAAC"}
|
@@ -1,14 +1,17 @@
|
|
1
1
|
import { DatabaseEventDto } from '../../common/dtos/database.event.dto';
|
2
|
+
import { PropertyService } from '../../system/services/property.service';
|
2
3
|
import { ModelEntity } from './../../system/entities/model.entity';
|
3
4
|
import { DynamoService } from './dynamo.service';
|
4
5
|
export declare class AuditService {
|
5
6
|
private readonly dynamoService;
|
7
|
+
private readonly propertyService;
|
6
8
|
private toIgnore;
|
9
|
+
private refreshTime;
|
7
10
|
private auditTable;
|
8
|
-
constructor(dynamoService: DynamoService);
|
11
|
+
constructor(dynamoService: DynamoService, propertyService: PropertyService);
|
9
12
|
setAuditRecord(event: DatabaseEventDto<any>): Promise<any[]>;
|
10
13
|
getAuditLogs(model: ModelEntity, id: number): Promise<any[]>;
|
11
14
|
getSourceAuditLogs(sourcehash: string, id: number): Promise<any[]>;
|
12
15
|
private getDataFromDynamo;
|
13
|
-
private
|
16
|
+
private getAuditTable;
|
14
17
|
}
|
@@ -11,22 +11,24 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
12
|
exports.AuditService = void 0;
|
13
13
|
const common_1 = require("@nestjs/common");
|
14
|
-
const
|
14
|
+
const date_fns_1 = require("date-fns");
|
15
15
|
const hash_1 = require("../../common/libraries/hash");
|
16
16
|
const platform_utility_1 = require("../../common/libraries/platform.utility");
|
17
|
+
const property_service_1 = require("../../system/services/property.service");
|
18
|
+
const process_audit_log_data_1 = require("../libraries/process.audit.log.data");
|
17
19
|
const operation_exception_1 = require("./../../common/exceptions/operation.exception");
|
18
20
|
const model_entity_1 = require("./../../system/entities/model.entity");
|
19
21
|
const dynamo_service_1 = require("./dynamo.service");
|
20
|
-
const process_audit_log_data_1 = require("../libraries/process.audit.log.data");
|
21
22
|
let AuditService = class AuditService {
|
22
|
-
constructor(dynamoService) {
|
23
|
+
constructor(dynamoService, propertyService) {
|
23
24
|
this.dynamoService = dynamoService;
|
25
|
+
this.propertyService = propertyService;
|
24
26
|
this.toIgnore = ['created_at', 'updated_at', 'created_by', 'updated_by', 'attributes'];
|
25
27
|
this.auditTable = null;
|
26
|
-
this.init();
|
27
28
|
}
|
28
29
|
async setAuditRecord(event) {
|
29
|
-
|
30
|
+
const auditTable = await this.getAuditTable();
|
31
|
+
if (!auditTable)
|
30
32
|
return;
|
31
33
|
const promises = [];
|
32
34
|
const source = hash_1.Hash.hashMD5(`${event.metadata.tableName}:${event.metadata.name}`);
|
@@ -44,7 +46,7 @@ let AuditService = class AuditService {
|
|
44
46
|
user: event.user?.id ?? 2,
|
45
47
|
ip: event.user?.req?.ip || null,
|
46
48
|
};
|
47
|
-
promises.push(this.dynamoService.setItem(
|
49
|
+
promises.push(this.dynamoService.setItem(auditTable, item));
|
48
50
|
});
|
49
51
|
return Promise.all(promises).then((res) => {
|
50
52
|
return res;
|
@@ -60,10 +62,11 @@ let AuditService = class AuditService {
|
|
60
62
|
return new process_audit_log_data_1.ProcessAuditLogData(entity).process(items);
|
61
63
|
}
|
62
64
|
async getDataFromDynamo(sourceHash, id) {
|
63
|
-
|
65
|
+
const auditTable = await this.getAuditTable();
|
66
|
+
if (!auditTable)
|
64
67
|
throw new operation_exception_1.OperationException('Audit table is not properly setup in configuration');
|
65
68
|
const params = {
|
66
|
-
TableName:
|
69
|
+
TableName: auditTable,
|
67
70
|
KeyConditionExpression: '#key = :identifier and #sort > :value',
|
68
71
|
ExpressionAttributeNames: {
|
69
72
|
'#key': 'identifier',
|
@@ -76,14 +79,18 @@ let AuditService = class AuditService {
|
|
76
79
|
};
|
77
80
|
return this.dynamoService.queryItem(params);
|
78
81
|
}
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
+
async getAuditTable() {
|
83
|
+
const now = new Date();
|
84
|
+
if (this.refreshTime && this.refreshTime > now)
|
85
|
+
return this.auditTable;
|
86
|
+
this.refreshTime = (0, date_fns_1.addMinutes)(now, 15);
|
87
|
+
this.auditTable = await this.propertyService.get('audit.table.name', false);
|
88
|
+
return this.auditTable;
|
82
89
|
}
|
83
90
|
};
|
84
91
|
AuditService = __decorate([
|
85
92
|
(0, common_1.Injectable)(),
|
86
|
-
__metadata("design:paramtypes", [dynamo_service_1.DynamoService])
|
93
|
+
__metadata("design:paramtypes", [dynamo_service_1.DynamoService, property_service_1.PropertyService])
|
87
94
|
], AuditService);
|
88
95
|
exports.AuditService = AuditService;
|
89
96
|
//# sourceMappingURL=audit.service.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"audit.service.js","sourceRoot":"","sources":["../../../src/platformUtility/services/audit.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,
|
1
|
+
{"version":3,"file":"audit.service.js","sourceRoot":"","sources":["../../../src/platformUtility/services/audit.service.ts"],"names":[],"mappings":"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"}
|
@@ -1,10 +1,15 @@
|
|
1
|
+
import { PropertyService } from '../../system/services/property.service';
|
1
2
|
import { MailLogEntity } from './../../system/entities/mail.log.entity';
|
2
3
|
import { MailOptionsDto } from './../dtos/mail.options.dto';
|
3
4
|
import { DynamoService } from './dynamo.service';
|
4
5
|
export declare class MailService {
|
5
6
|
private readonly dynamoService;
|
6
|
-
|
7
|
+
private readonly propertyService;
|
8
|
+
private refreshTime;
|
9
|
+
private entityTable;
|
10
|
+
constructor(dynamoService: DynamoService, propertyService: PropertyService);
|
7
11
|
send(options: MailOptionsDto, metadata?: any): Promise<MailLogEntity>;
|
8
12
|
private processMail;
|
9
13
|
private saveToDynamo;
|
14
|
+
private getEntityTable;
|
10
15
|
}
|
@@ -13,14 +13,18 @@ exports.MailService = void 0;
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
14
14
|
const class_transformer_1 = require("class-transformer");
|
15
15
|
const config = require("config");
|
16
|
+
const date_fns_1 = require("date-fns");
|
17
|
+
const property_service_1 = require("../../system/services/property.service");
|
16
18
|
const process_smtp_mail_1 = require("../libraries/process.smtp.mail");
|
17
19
|
const mail_log_entity_1 = require("./../../system/entities/mail.log.entity");
|
18
20
|
const dynamo_service_1 = require("./dynamo.service");
|
19
|
-
const
|
21
|
+
const SOURCEHASH = require("../../config/source.hash");
|
20
22
|
const mailConfig = config.get('mail');
|
21
23
|
let MailService = class MailService {
|
22
|
-
constructor(dynamoService) {
|
24
|
+
constructor(dynamoService, propertyService) {
|
23
25
|
this.dynamoService = dynamoService;
|
26
|
+
this.propertyService = propertyService;
|
27
|
+
this.entityTable = null;
|
24
28
|
}
|
25
29
|
async send(options, metadata) {
|
26
30
|
const identifier = await this.processMail(options);
|
@@ -33,19 +37,29 @@ let MailService = class MailService {
|
|
33
37
|
}
|
34
38
|
processMail(options) {
|
35
39
|
const gateway = mailConfig.gateway;
|
36
|
-
if (!gateway)
|
37
|
-
throw new operation_exception_1.OperationException(`Default mail gateway is not configured`);
|
38
40
|
if (gateway === 'smtp')
|
39
41
|
return new process_smtp_mail_1.ProcessSmtpMail(options).process();
|
42
|
+
global.console.log('No mail gateway defined in the system');
|
40
43
|
}
|
41
|
-
saveToDynamo(log, options, identifier) {
|
42
|
-
const
|
43
|
-
|
44
|
+
async saveToDynamo(log, options, identifier) {
|
45
|
+
const entityTable = await this.getEntityTable();
|
46
|
+
if (!entityTable)
|
47
|
+
return;
|
48
|
+
const dynamoItem = { entity_hash: SOURCEHASH.mailLog, entity_id: log.id, options, identifier };
|
49
|
+
return this.dynamoService.setItem(entityTable, dynamoItem);
|
50
|
+
}
|
51
|
+
async getEntityTable() {
|
52
|
+
const now = new Date();
|
53
|
+
if (this.refreshTime && this.refreshTime > now)
|
54
|
+
return this.entityTable;
|
55
|
+
this.refreshTime = (0, date_fns_1.addMinutes)(now, 15);
|
56
|
+
this.entityTable = await this.propertyService.get('audit.table.name', false);
|
57
|
+
return this.entityTable;
|
44
58
|
}
|
45
59
|
};
|
46
60
|
MailService = __decorate([
|
47
61
|
(0, common_1.Injectable)(),
|
48
|
-
__metadata("design:paramtypes", [dynamo_service_1.DynamoService])
|
62
|
+
__metadata("design:paramtypes", [dynamo_service_1.DynamoService, property_service_1.PropertyService])
|
49
63
|
], MailService);
|
50
64
|
exports.MailService = MailService;
|
51
65
|
//# sourceMappingURL=mail.service.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"mail.service.js","sourceRoot":"","sources":["../../../src/platformUtility/services/mail.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAiD;AACjD,iCAAiC;AACjC,sEAAiE;AACjE,6EAAwE;AAExE,qDAAiD;AACjD,
|
1
|
+
{"version":3,"file":"mail.service.js","sourceRoot":"","sources":["../../../src/platformUtility/services/mail.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAiD;AACjD,iCAAiC;AACjC,uCAAsC;AACtC,6EAAyE;AACzE,sEAAiE;AACjE,6EAAwE;AAExE,qDAAiD;AACjD,uDAAwD;AAExD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAQ/B,IAAM,WAAW,GAAjB,MAAM,WAAW;IAqBpB,YAA6B,aAA4B,EAAmB,eAAgC;QAA/E,kBAAa,GAAb,aAAa,CAAe;QAAmB,oBAAe,GAAf,eAAe,CAAiB;QAPpG,gBAAW,GAAG,IAAI,CAAC;IAOoF,CAAC;IAShH,KAAK,CAAC,IAAI,CAAC,OAAuB,EAAE,QAAc;QAC9C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;QAElC,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,IAAA,gCAAY,EAAC,+BAAa,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;QAElE,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAElD,OAAO,GAAG,CAAC;IACf,CAAC;IAUO,WAAW,CAAC,OAAuB;QACvC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QACnC,IAAI,OAAO,KAAK,MAAM;YAAE,OAAO,IAAI,mCAAe,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC;QAEtE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IAChE,CAAC;IAWO,KAAK,CAAC,YAAY,CAAC,GAAkB,EAAE,OAAuB,EAAE,UAAkB;QACtF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAChD,IAAI,CAAC,WAAW;YAAE,OAAO;QAEzB,MAAM,UAAU,GAAG,EAAE,WAAW,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QAG/F,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC/D,CAAC;IAQO,KAAK,CAAC,cAAc;QACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,GAAG,GAAG;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC;QAExE,IAAI,CAAC,WAAW,GAAG,IAAA,qBAAU,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEvC,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QAE7E,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;CACJ,CAAA;AA7FY,WAAW;IADvB,IAAA,mBAAU,GAAE;qCAsBmC,8BAAa,EAAoC,kCAAe;GArBnG,WAAW,CA6FvB;AA7FY,kCAAW"}
|
package/package.json
CHANGED
@@ -1,15 +0,0 @@
|
|
1
|
-
import { DateFilterDto } from './date.filter.dto';
|
2
|
-
import { ListResponseFormatDto } from './list.response.format.dto';
|
3
|
-
import { NumberRangeFilterDto } from './number.range.filter.dto';
|
4
|
-
export declare class CommonListFilterDto {
|
5
|
-
search?: string;
|
6
|
-
limit?: number;
|
7
|
-
page?: number;
|
8
|
-
stats?: boolean;
|
9
|
-
no_metrics?: boolean;
|
10
|
-
format?: ListResponseFormatDto;
|
11
|
-
date?: DateFilterDto;
|
12
|
-
amount?: NumberRangeFilterDto;
|
13
|
-
aggregate?: Record<string, string>;
|
14
|
-
filter_query?: string;
|
15
|
-
}
|
@@ -1,83 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
-
};
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
-
};
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
exports.CommonListFilterDto = void 0;
|
13
|
-
const class_transformer_1 = require("class-transformer");
|
14
|
-
const class_validator_1 = require("class-validator");
|
15
|
-
const date_filter_dto_1 = require("./date.filter.dto");
|
16
|
-
const list_response_format_dto_1 = require("./list.response.format.dto");
|
17
|
-
const number_range_filter_dto_1 = require("./number.range.filter.dto");
|
18
|
-
class CommonListFilterDto {
|
19
|
-
}
|
20
|
-
__decorate([
|
21
|
-
(0, class_validator_1.IsOptional)(),
|
22
|
-
(0, class_validator_1.IsString)(),
|
23
|
-
(0, class_validator_1.MinLength)(3),
|
24
|
-
(0, class_transformer_1.Expose)(),
|
25
|
-
__metadata("design:type", String)
|
26
|
-
], CommonListFilterDto.prototype, "search", void 0);
|
27
|
-
__decorate([
|
28
|
-
(0, class_validator_1.IsOptional)(),
|
29
|
-
(0, class_validator_1.IsNumber)(),
|
30
|
-
(0, class_transformer_1.Expose)(),
|
31
|
-
__metadata("design:type", Number)
|
32
|
-
], CommonListFilterDto.prototype, "limit", void 0);
|
33
|
-
__decorate([
|
34
|
-
(0, class_validator_1.IsOptional)(),
|
35
|
-
(0, class_validator_1.IsNumber)(),
|
36
|
-
(0, class_validator_1.Min)(1),
|
37
|
-
(0, class_transformer_1.Expose)(),
|
38
|
-
__metadata("design:type", Number)
|
39
|
-
], CommonListFilterDto.prototype, "page", void 0);
|
40
|
-
__decorate([
|
41
|
-
(0, class_validator_1.IsOptional)(),
|
42
|
-
(0, class_validator_1.IsBoolean)(),
|
43
|
-
(0, class_transformer_1.Expose)(),
|
44
|
-
__metadata("design:type", Boolean)
|
45
|
-
], CommonListFilterDto.prototype, "stats", void 0);
|
46
|
-
__decorate([
|
47
|
-
(0, class_validator_1.IsOptional)(),
|
48
|
-
(0, class_validator_1.IsBoolean)(),
|
49
|
-
(0, class_transformer_1.Expose)(),
|
50
|
-
__metadata("design:type", Boolean)
|
51
|
-
], CommonListFilterDto.prototype, "no_metrics", void 0);
|
52
|
-
__decorate([
|
53
|
-
(0, class_validator_1.IsOptional)(),
|
54
|
-
(0, class_validator_1.ValidateNested)(),
|
55
|
-
(0, class_transformer_1.Type)(() => list_response_format_dto_1.ListResponseFormatDto),
|
56
|
-
__metadata("design:type", list_response_format_dto_1.ListResponseFormatDto)
|
57
|
-
], CommonListFilterDto.prototype, "format", void 0);
|
58
|
-
__decorate([
|
59
|
-
(0, class_validator_1.IsOptional)(),
|
60
|
-
(0, class_validator_1.ValidateNested)(),
|
61
|
-
(0, class_transformer_1.Type)(() => date_filter_dto_1.DateFilterDto),
|
62
|
-
(0, class_transformer_1.Expose)(),
|
63
|
-
__metadata("design:type", date_filter_dto_1.DateFilterDto)
|
64
|
-
], CommonListFilterDto.prototype, "date", void 0);
|
65
|
-
__decorate([
|
66
|
-
(0, class_validator_1.IsOptional)(),
|
67
|
-
(0, class_validator_1.ValidateNested)(),
|
68
|
-
(0, class_transformer_1.Type)(() => number_range_filter_dto_1.NumberRangeFilterDto),
|
69
|
-
(0, class_transformer_1.Expose)(),
|
70
|
-
__metadata("design:type", number_range_filter_dto_1.NumberRangeFilterDto)
|
71
|
-
], CommonListFilterDto.prototype, "amount", void 0);
|
72
|
-
__decorate([
|
73
|
-
(0, class_validator_1.IsOptional)(),
|
74
|
-
(0, class_transformer_1.Expose)(),
|
75
|
-
__metadata("design:type", Object)
|
76
|
-
], CommonListFilterDto.prototype, "aggregate", void 0);
|
77
|
-
__decorate([
|
78
|
-
(0, class_validator_1.IsOptional)(),
|
79
|
-
(0, class_transformer_1.Expose)(),
|
80
|
-
__metadata("design:type", String)
|
81
|
-
], CommonListFilterDto.prototype, "filter_query", void 0);
|
82
|
-
exports.CommonListFilterDto = CommonListFilterDto;
|
83
|
-
//# sourceMappingURL=common.list.filter.dto.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"common.list.filter.dto.js","sourceRoot":"","sources":["../../../src/platformUtility/dtos/common.list.filter.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAiD;AACjD,qDAA4G;AAC5G,uDAAkD;AAClD,yEAAmE;AACnE,uEAAiE;AAEjE,MAAa,mBAAmB;CAoD/B;AAnDG;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,EAAC,CAAC,CAAC;IACZ,IAAA,0BAAM,GAAE;;mDACO;AAEhB;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,0BAAM,GAAE;;kDACM;AAEf;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,qBAAG,EAAC,CAAC,CAAC;IACN,IAAA,0BAAM,GAAE;;iDACK;AAEd;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAM,GAAE;;kDACO;AAEhB;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAM,GAAE;;uDACY;AAErB;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,gDAAqB,CAAC;8BACzB,gDAAqB;mDAAC;AAE/B;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,+BAAa,CAAC;IACzB,IAAA,0BAAM,GAAE;8BACF,+BAAa;iDAAC;AAErB;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,8CAAoB,CAAC;IAChC,IAAA,0BAAM,GAAE;8BACA,8CAAoB;mDAAC;AAE9B;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAM,GAAE;;sDAC0B;AAEnC;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAM,GAAE;;yDACa;AAnD1B,kDAoDC"}
|
@@ -1,10 +0,0 @@
|
|
1
|
-
import 'reflect-metadata';
|
2
|
-
import { DateRangeFilterDto } from './date.range.filter.dto';
|
3
|
-
export declare class DateFilterDto {
|
4
|
-
range?: DateRangeFilterDto;
|
5
|
-
today?: boolean;
|
6
|
-
week?: boolean;
|
7
|
-
month?: boolean;
|
8
|
-
year?: boolean;
|
9
|
-
financial_year?: boolean;
|
10
|
-
}
|
@@ -1,57 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
-
};
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
-
};
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
exports.DateFilterDto = void 0;
|
13
|
-
const class_transformer_1 = require("class-transformer");
|
14
|
-
const class_validator_1 = require("class-validator");
|
15
|
-
require("reflect-metadata");
|
16
|
-
const date_range_filter_dto_1 = require("./date.range.filter.dto");
|
17
|
-
class DateFilterDto {
|
18
|
-
}
|
19
|
-
__decorate([
|
20
|
-
(0, class_validator_1.IsOptional)(),
|
21
|
-
(0, class_validator_1.ValidateNested)(),
|
22
|
-
(0, class_transformer_1.Type)(() => date_range_filter_dto_1.DateRangeFilterDto),
|
23
|
-
(0, class_transformer_1.Expose)(),
|
24
|
-
__metadata("design:type", date_range_filter_dto_1.DateRangeFilterDto)
|
25
|
-
], DateFilterDto.prototype, "range", void 0);
|
26
|
-
__decorate([
|
27
|
-
(0, class_validator_1.IsOptional)(),
|
28
|
-
(0, class_validator_1.IsBoolean)(),
|
29
|
-
(0, class_transformer_1.Expose)(),
|
30
|
-
__metadata("design:type", Boolean)
|
31
|
-
], DateFilterDto.prototype, "today", void 0);
|
32
|
-
__decorate([
|
33
|
-
(0, class_validator_1.IsOptional)(),
|
34
|
-
(0, class_validator_1.IsBoolean)(),
|
35
|
-
(0, class_transformer_1.Expose)(),
|
36
|
-
__metadata("design:type", Boolean)
|
37
|
-
], DateFilterDto.prototype, "week", void 0);
|
38
|
-
__decorate([
|
39
|
-
(0, class_validator_1.IsOptional)(),
|
40
|
-
(0, class_validator_1.IsBoolean)(),
|
41
|
-
(0, class_transformer_1.Expose)(),
|
42
|
-
__metadata("design:type", Boolean)
|
43
|
-
], DateFilterDto.prototype, "month", void 0);
|
44
|
-
__decorate([
|
45
|
-
(0, class_validator_1.IsOptional)(),
|
46
|
-
(0, class_validator_1.IsBoolean)(),
|
47
|
-
(0, class_transformer_1.Expose)(),
|
48
|
-
__metadata("design:type", Boolean)
|
49
|
-
], DateFilterDto.prototype, "year", void 0);
|
50
|
-
__decorate([
|
51
|
-
(0, class_validator_1.IsOptional)(),
|
52
|
-
(0, class_validator_1.IsBoolean)(),
|
53
|
-
(0, class_transformer_1.Expose)(),
|
54
|
-
__metadata("design:type", Boolean)
|
55
|
-
], DateFilterDto.prototype, "financial_year", void 0);
|
56
|
-
exports.DateFilterDto = DateFilterDto;
|
57
|
-
//# sourceMappingURL=date.filter.dto.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"date.filter.dto.js","sourceRoot":"","sources":["../../../src/platformUtility/dtos/date.filter.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAiD;AACjD,qDAAwE;AACxE,4BAA0B;AAC1B,mEAA6D;AAE7D,MAAa,aAAa;CA+BzB;AA9BG;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,gCAAc,GAAE;IAChB,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,0CAAkB,CAAC;IAC9B,IAAA,0BAAM,GAAE;8BACD,0CAAkB;4CAAC;AAE3B;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAM,GAAE;;4CACO;AAEhB;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAM,GAAE;;2CACM;AAEf;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAM,GAAE;;4CACO;AAEhB;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAM,GAAE;;2CACM;AAEf;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAM,GAAE;;qDACgB;AA9B7B,sCA+BC"}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
-
};
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
-
};
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
exports.DateRangeFilterDto = void 0;
|
13
|
-
const class_transformer_1 = require("class-transformer");
|
14
|
-
const class_validator_1 = require("class-validator");
|
15
|
-
class DateRangeFilterDto {
|
16
|
-
}
|
17
|
-
__decorate([
|
18
|
-
(0, class_validator_1.IsNotEmpty)(),
|
19
|
-
(0, class_transformer_1.Expose)(),
|
20
|
-
__metadata("design:type", Date)
|
21
|
-
], DateRangeFilterDto.prototype, "min", void 0);
|
22
|
-
__decorate([
|
23
|
-
(0, class_validator_1.IsNotEmpty)(),
|
24
|
-
(0, class_validator_1.IsISO8601)(),
|
25
|
-
(0, class_transformer_1.Expose)(),
|
26
|
-
__metadata("design:type", Date)
|
27
|
-
], DateRangeFilterDto.prototype, "max", void 0);
|
28
|
-
exports.DateRangeFilterDto = DateRangeFilterDto;
|
29
|
-
//# sourceMappingURL=date.range.filter.dto.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"date.range.filter.dto.js","sourceRoot":"","sources":["../../../src/platformUtility/dtos/date.range.filter.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAA2C;AAC3C,qDAAwD;AAExD,MAAa,kBAAkB;CAS9B;AARG;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAM,GAAE;8BACJ,IAAI;+CAAC;AAEV;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;IACX,IAAA,0BAAM,GAAE;8BACJ,IAAI;+CAAC;AARd,gDASC"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"list.response.dto.js","sourceRoot":"","sources":["../../../src/platformUtility/dtos/list.response.dto.ts"],"names":[],"mappings":";;;AAAA,MAAa,eAAe;CAO3B;AAPD,0CAOC"}
|
@@ -1,27 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
-
};
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
-
};
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
exports.ListResponseFormatDto = void 0;
|
13
|
-
const class_validator_1 = require("class-validator");
|
14
|
-
class ListResponseFormatDto {
|
15
|
-
}
|
16
|
-
__decorate([
|
17
|
-
(0, class_validator_1.IsOptional)(),
|
18
|
-
(0, class_validator_1.IsBoolean)(),
|
19
|
-
__metadata("design:type", Boolean)
|
20
|
-
], ListResponseFormatDto.prototype, "json", void 0);
|
21
|
-
__decorate([
|
22
|
-
(0, class_validator_1.IsOptional)(),
|
23
|
-
(0, class_validator_1.IsBoolean)(),
|
24
|
-
__metadata("design:type", Boolean)
|
25
|
-
], ListResponseFormatDto.prototype, "csv", void 0);
|
26
|
-
exports.ListResponseFormatDto = ListResponseFormatDto;
|
27
|
-
//# sourceMappingURL=list.response.format.dto.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"list.response.format.dto.js","sourceRoot":"","sources":["../../../src/platformUtility/dtos/list.response.format.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAwD;AACxD,MAAa,qBAAqB;CAQjC;AAPG;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;mDACG;AAEf;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;kDACE;AAPlB,sDAQC"}
|
@@ -1,45 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
-
};
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
|
-
};
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
exports.NumberRangeFilterDto = void 0;
|
13
|
-
const class_transformer_1 = require("class-transformer");
|
14
|
-
const class_validator_1 = require("class-validator");
|
15
|
-
class NumberRangeFilterDto {
|
16
|
-
}
|
17
|
-
__decorate([
|
18
|
-
(0, class_validator_1.IsNumber)(),
|
19
|
-
(0, class_validator_1.IsOptional)(),
|
20
|
-
(0, class_transformer_1.Expose)(),
|
21
|
-
__metadata("design:type", Number)
|
22
|
-
], NumberRangeFilterDto.prototype, "min", void 0);
|
23
|
-
__decorate([
|
24
|
-
(0, class_validator_1.IsOptional)(),
|
25
|
-
(0, class_validator_1.IsNumber)(),
|
26
|
-
(0, class_transformer_1.Expose)(),
|
27
|
-
__metadata("design:type", Number)
|
28
|
-
], NumberRangeFilterDto.prototype, "max", void 0);
|
29
|
-
__decorate([
|
30
|
-
(0, class_validator_1.IsBoolean)(),
|
31
|
-
(0, class_validator_1.IsOptional)(),
|
32
|
-
__metadata("design:type", Boolean)
|
33
|
-
], NumberRangeFilterDto.prototype, "positive", void 0);
|
34
|
-
__decorate([
|
35
|
-
(0, class_validator_1.IsBoolean)(),
|
36
|
-
(0, class_validator_1.IsOptional)(),
|
37
|
-
__metadata("design:type", Boolean)
|
38
|
-
], NumberRangeFilterDto.prototype, "negative", void 0);
|
39
|
-
__decorate([
|
40
|
-
(0, class_validator_1.IsBoolean)(),
|
41
|
-
(0, class_validator_1.IsOptional)(),
|
42
|
-
__metadata("design:type", Boolean)
|
43
|
-
], NumberRangeFilterDto.prototype, "zero", void 0);
|
44
|
-
exports.NumberRangeFilterDto = NumberRangeFilterDto;
|
45
|
-
//# sourceMappingURL=number.range.filter.dto.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"number.range.filter.dto.js","sourceRoot":"","sources":["../../../src/platformUtility/dtos/number.range.filter.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAA2C;AAC3C,qDAAkE;AAElE,MAAa,oBAAoB;CAsBhC;AArBG;IAAC,IAAA,0BAAQ,GAAE;IACV,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAM,GAAE;;iDACI;AAEb;IAAC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,0BAAM,GAAE;;iDACI;AAEb;IAAC,IAAA,2BAAS,GAAE;IACX,IAAA,4BAAU,GAAE;;sDACM;AAEnB;IAAC,IAAA,2BAAS,GAAE;IACX,IAAA,4BAAU,GAAE;;sDACM;AAEnB;IAAC,IAAA,2BAAS,GAAE;IACX,IAAA,4BAAU,GAAE;;kDACE;AArBnB,oDAsBC"}
|
@@ -1,28 +0,0 @@
|
|
1
|
-
import { CommonListFilterDto } from '../dtos/common.list.filter.dto';
|
2
|
-
import { DateFilterDto } from '../dtos/date.filter.dto';
|
3
|
-
import { ListResponseDto } from '../dtos/list.response.dto';
|
4
|
-
import { SqlService } from '../services';
|
5
|
-
export declare class ProcessCommonList {
|
6
|
-
protected config: {
|
7
|
-
sql: string;
|
8
|
-
order: string;
|
9
|
-
columns: string[];
|
10
|
-
metrics?: string[];
|
11
|
-
};
|
12
|
-
protected filter: CommonListFilterDto;
|
13
|
-
protected restrictions: string[];
|
14
|
-
protected query: string;
|
15
|
-
protected response: ListResponseDto;
|
16
|
-
protected sqlService: SqlService;
|
17
|
-
protected handle(): Promise<{
|
18
|
-
aggregate: any;
|
19
|
-
}> | Promise<ListResponseDto>;
|
20
|
-
private getListRecords;
|
21
|
-
private getTotalRecords;
|
22
|
-
private getQueryRestrictions;
|
23
|
-
private getQuery;
|
24
|
-
private getRecords;
|
25
|
-
private aggregate;
|
26
|
-
protected processDate(date: DateFilterDto, column: string): void;
|
27
|
-
private sendResponse;
|
28
|
-
}
|
@@ -1,90 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.ProcessCommonList = void 0;
|
4
|
-
const common_1 = require("../../common");
|
5
|
-
const process_date_filter_1 = require("./process.date.filter");
|
6
|
-
class ProcessCommonList {
|
7
|
-
constructor() {
|
8
|
-
this.restrictions = [];
|
9
|
-
this.response = { stats: {}, metrics: {}, records: [] };
|
10
|
-
}
|
11
|
-
handle() {
|
12
|
-
this.query = this.getQuery();
|
13
|
-
if (this.filter.aggregate)
|
14
|
-
return this.aggregate();
|
15
|
-
return this.getListRecords();
|
16
|
-
}
|
17
|
-
async getListRecords() {
|
18
|
-
await this.getRecords();
|
19
|
-
await this.getTotalRecords();
|
20
|
-
return this.sendResponse();
|
21
|
-
}
|
22
|
-
async getTotalRecords() {
|
23
|
-
if (this.filter?.no_metrics || this.filter?.format?.csv)
|
24
|
-
return;
|
25
|
-
const metrics = this.config?.metrics || [];
|
26
|
-
metrics.push(`count(1) count`);
|
27
|
-
const sql = `select ${this.config.metrics.join(',')} from ${this.query}`;
|
28
|
-
const record = await this.sqlService.readFirst(sql);
|
29
|
-
this.response.stats.total = record.count;
|
30
|
-
this.response.metrics = {};
|
31
|
-
for (const [key, value] of Object.entries(record)) {
|
32
|
-
if (key === 'count')
|
33
|
-
continue;
|
34
|
-
this.response.metrics[key] = value;
|
35
|
-
}
|
36
|
-
}
|
37
|
-
getQueryRestrictions() {
|
38
|
-
if (!this.restrictions.length)
|
39
|
-
return;
|
40
|
-
const record = [];
|
41
|
-
this.restrictions.forEach((restriction) => {
|
42
|
-
record.push(` ( ${restriction} ) `);
|
43
|
-
});
|
44
|
-
return record.join('and');
|
45
|
-
}
|
46
|
-
getQuery() {
|
47
|
-
const restrictions = this.getQueryRestrictions();
|
48
|
-
const columns = this.config.columns.join(',');
|
49
|
-
let sql = `select ${columns} from ${this.config.sql}`;
|
50
|
-
if (restrictions)
|
51
|
-
sql = `${sql} and ${restrictions} `;
|
52
|
-
if (this.filter.filter_query)
|
53
|
-
return `(${sql}) sq where ${this.filter.filter_query}`;
|
54
|
-
return `(${sql}) sq`;
|
55
|
-
}
|
56
|
-
async getRecords() {
|
57
|
-
const filter = this.filter;
|
58
|
-
const limit = filter.limit ?? 20;
|
59
|
-
const page = filter.page || 1;
|
60
|
-
const offset = (page - 1) * limit;
|
61
|
-
const order = this.config.order || 'sq.created_at desc';
|
62
|
-
const sql = `select sq.* from ${this.query} order by ${order} limit ${limit} offset ${offset}`;
|
63
|
-
this.response.stats.limit = limit;
|
64
|
-
this.response.stats.page = page;
|
65
|
-
this.response.records = await this.sqlService.read(sql);
|
66
|
-
}
|
67
|
-
async aggregate() {
|
68
|
-
const aggregate = this.filter.aggregate;
|
69
|
-
const supportedOperations = ['avg', 'sum', 'max', 'min'];
|
70
|
-
const key = Object.keys(aggregate)[0];
|
71
|
-
if (supportedOperations.indexOf(key) === -1)
|
72
|
-
throw new common_1.OperationException(`Given aggregate function ${key} is not supported`);
|
73
|
-
const value = Object.values(aggregate)[0];
|
74
|
-
const sql = `select ${key}(sq.${value}) aggregate from ${this.query}`;
|
75
|
-
const response = await this.sqlService.readFirst(sql);
|
76
|
-
return { aggregate: response.aggregate };
|
77
|
-
}
|
78
|
-
processDate(date, column) {
|
79
|
-
const range = new process_date_filter_1.ProcessDateFilter().process(date);
|
80
|
-
if (!range)
|
81
|
-
return;
|
82
|
-
this.restrictions.push(`${column} between '${range.min}' and '${range.max}'`);
|
83
|
-
}
|
84
|
-
async sendResponse() {
|
85
|
-
if (!this.filter.format?.csv)
|
86
|
-
return this.response;
|
87
|
-
}
|
88
|
-
}
|
89
|
-
exports.ProcessCommonList = ProcessCommonList;
|
90
|
-
//# sourceMappingURL=process.common.list.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"process.common.list.js","sourceRoot":"","sources":["../../../src/platformUtility/libraries/process.common.list.ts"],"names":[],"mappings":";;;AAAA,yCAAkD;AAKlD,+DAA0D;AAO1D,MAAa,iBAAiB;IAA9B;QAiBc,iBAAY,GAAa,EAAE,CAAC;QAgB5B,aAAQ,GAAoB,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IA2JlF,CAAC;IAjJa,MAAM;QACZ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAEnD,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,cAAc;QAExB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAG7B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;IAC/B,CAAC;IAOO,KAAK,CAAC,eAAe;QAEzB,IAAI,IAAI,CAAC,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG;YAAE,OAAO;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;QAE3C,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE/B,MAAM,GAAG,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC;QAE3B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC/C,IAAI,GAAG,KAAK,OAAO;gBAAE,SAAS;YAE9B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACtC;IACL,CAAC;IAQO,oBAAoB;QACxB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM;YAAE,OAAO;QAEtC,MAAM,MAAM,GAAa,EAAE,CAAC;QAG5B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;YACtC,MAAM,CAAC,IAAI,CAAC,MAAM,WAAW,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAQO,QAAQ;QACZ,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAE9C,IAAI,GAAG,GAAG,UAAU,OAAO,SAAS,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAEtD,IAAI,YAAY;YAAE,GAAG,GAAG,GAAG,GAAG,QAAQ,YAAY,GAAG,CAAC;QAEtD,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY;YAAE,OAAO,IAAI,GAAG,cAAc,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QAErF,OAAO,IAAI,GAAG,MAAM,CAAC;IACzB,CAAC;IAOO,KAAK,CAAC,UAAU;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAE3B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;QAE9B,MAAM,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QAElC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,oBAAoB,CAAC;QAGxD,MAAM,GAAG,GAAG,oBAAoB,IAAI,CAAC,KAAK,aAAa,KAAK,UAAU,KAAK,WAAW,MAAM,EAAE,CAAC;QAG/F,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QAEhC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAQO,KAAK,CAAC,SAAS;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACxC,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEzD,MAAM,GAAG,GAAW,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAAE,MAAM,IAAI,2BAAkB,CAAC,4BAA4B,GAAG,mBAAmB,CAAC,CAAC;QAE9H,MAAM,KAAK,GAAW,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAElD,MAAM,GAAG,GAAG,UAAU,GAAG,OAAO,KAAK,oBAAoB,IAAI,CAAC,KAAK,EAAE,CAAC;QAEtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEtD,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;IAC7C,CAAC;IAUS,WAAW,CAAC,IAAmB,EAAE,MAAc;QACrD,MAAM,KAAK,GAAG,IAAI,uCAAiB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,aAAa,KAAK,CAAC,GAAG,UAAU,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAClF,CAAC;IAEO,KAAK,CAAC,YAAY;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvD,CAAC;CACJ;AA5LD,8CA4LC"}
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import { DateFilterDto } from '../dtos/date.filter.dto';
|
2
|
-
import { DateRangeFilterDto } from '../dtos/date.range.filter.dto';
|
3
|
-
export declare class ProcessDateFilter {
|
4
|
-
private filter;
|
5
|
-
private range;
|
6
|
-
process(filter: DateFilterDto): DateRangeFilterDto;
|
7
|
-
private analyseFilter;
|
8
|
-
private today;
|
9
|
-
private week;
|
10
|
-
private month;
|
11
|
-
private year;
|
12
|
-
private financialYear;
|
13
|
-
private checkRange;
|
14
|
-
}
|
@@ -1,61 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.ProcessDateFilter = void 0;
|
4
|
-
const date_fns_1 = require("date-fns");
|
5
|
-
class ProcessDateFilter {
|
6
|
-
process(filter) {
|
7
|
-
if (!filter)
|
8
|
-
return;
|
9
|
-
this.filter = filter;
|
10
|
-
this.analyseFilter();
|
11
|
-
return this.range;
|
12
|
-
}
|
13
|
-
analyseFilter() {
|
14
|
-
this.today();
|
15
|
-
if (!this.range)
|
16
|
-
this.week();
|
17
|
-
if (!this.range)
|
18
|
-
this.month();
|
19
|
-
if (!this.range)
|
20
|
-
this.year();
|
21
|
-
if (!this.range)
|
22
|
-
this.financialYear();
|
23
|
-
if (!this.range)
|
24
|
-
this.checkRange();
|
25
|
-
}
|
26
|
-
today() {
|
27
|
-
if (!this.filter.today)
|
28
|
-
return;
|
29
|
-
const today = new Date();
|
30
|
-
this.range = { min: (0, date_fns_1.startOfDay)(today), max: (0, date_fns_1.endOfDay)(today) };
|
31
|
-
}
|
32
|
-
week() {
|
33
|
-
if (!this.filter.week)
|
34
|
-
return;
|
35
|
-
const now = new Date();
|
36
|
-
this.range = { min: (0, date_fns_1.startOfWeek)(now, { weekStartsOn: 1 }), max: (0, date_fns_1.endOfDay)(now) };
|
37
|
-
}
|
38
|
-
month() {
|
39
|
-
if (!this.filter.month)
|
40
|
-
return;
|
41
|
-
const now = new Date();
|
42
|
-
this.range = { min: (0, date_fns_1.startOfMonth)(now), max: (0, date_fns_1.endOfDay)(now) };
|
43
|
-
}
|
44
|
-
year() {
|
45
|
-
if (!this.filter.year)
|
46
|
-
return;
|
47
|
-
const now = new Date();
|
48
|
-
this.range = { min: (0, date_fns_1.startOfYear)(now), max: (0, date_fns_1.endOfDay)(now) };
|
49
|
-
}
|
50
|
-
financialYear() {
|
51
|
-
if (!this.filter.financial_year)
|
52
|
-
return;
|
53
|
-
}
|
54
|
-
checkRange() {
|
55
|
-
if (!this.filter.range)
|
56
|
-
return;
|
57
|
-
this.range = this.filter.range;
|
58
|
-
}
|
59
|
-
}
|
60
|
-
exports.ProcessDateFilter = ProcessDateFilter;
|
61
|
-
//# sourceMappingURL=process.date.filter.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"process.date.filter.js","sourceRoot":"","sources":["../../../src/platformUtility/libraries/process.date.filter.ts"],"names":[],"mappings":";;;AAAA,uCAAwF;AAQxF,MAAa,iBAAiB;IAsB1B,OAAO,CAAC,MAAqB;QACzB,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAOO,aAAa;QACjB,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,aAAa,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC;IAQO,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO;QAE/B,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QAEzB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,IAAA,qBAAU,EAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAA,mBAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;IAClE,CAAC;IASO,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO;QAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,IAAA,sBAAW,EAAC,GAAG,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,IAAA,mBAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;IACpF,CAAC;IAQO,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO;QAE/B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,IAAA,uBAAY,EAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAA,mBAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;IAChE,CAAC;IAQO,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO;QAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAEvB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,IAAA,sBAAW,EAAC,GAAG,CAAC,EAAE,GAAG,EAAE,IAAA,mBAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;IAC/D,CAAC;IAQO,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc;YAAE,OAAO;IAG5C,CAAC;IAQO,UAAU;QACd,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO;QAE/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IACnC,CAAC;CACJ;AA1HD,8CA0HC"}
|