rez_core 1.0.86 → 1.0.88
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/constant/global.constant.d.ts +2 -0
- package/dist/constant/global.constant.js +3 -1
- package/dist/constant/global.constant.js.map +1 -1
- package/dist/core.module.js +3 -0
- package/dist/core.module.js.map +1 -1
- package/dist/module/filter/controller/filter.controller.d.ts +19 -0
- package/dist/module/filter/controller/filter.controller.js +46 -0
- package/dist/module/filter/controller/filter.controller.js.map +1 -0
- package/dist/module/filter/dto/filter-request.dto.d.ts +22 -0
- package/dist/module/filter/dto/filter-request.dto.js +3 -0
- package/dist/module/filter/dto/filter-request.dto.js.map +1 -0
- package/dist/module/filter/entity/saved-filter-detail.entity.d.ts +8 -0
- package/dist/module/filter/entity/saved-filter-detail.entity.js +43 -0
- package/dist/module/filter/entity/saved-filter-detail.entity.js.map +1 -0
- package/dist/module/filter/entity/saved-filter-master.entity.d.ts +5 -0
- package/dist/module/filter/entity/saved-filter-master.entity.js +31 -0
- package/dist/module/filter/entity/saved-filter-master.entity.js.map +1 -0
- package/dist/module/filter/filter.module.d.ts +2 -0
- package/dist/module/filter/filter.module.js +34 -0
- package/dist/module/filter/filter.module.js.map +1 -0
- package/dist/module/filter/repository/saved-filter.repository.d.ts +13 -0
- package/dist/module/filter/repository/saved-filter.repository.js +62 -0
- package/dist/module/filter/repository/saved-filter.repository.js.map +1 -0
- package/dist/module/filter/service/filter.service.d.ts +34 -0
- package/dist/module/filter/service/filter.service.js +210 -0
- package/dist/module/filter/service/filter.service.js.map +1 -0
- package/dist/module/filter/service/saved-filter.service.d.ts +12 -0
- package/dist/module/filter/service/saved-filter.service.js +73 -0
- package/dist/module/filter/service/saved-filter.service.js.map +1 -0
- package/dist/module/meta/entity.module.js +1 -0
- package/dist/module/meta/entity.module.js.map +1 -1
- package/dist/module/meta/service/media-data.service.d.ts +1 -1
- package/dist/module/meta/service/media-data.service.js +1 -1
- package/dist/module/meta/service/media-data.service.js.map +1 -1
- package/dist/resources/properties.yaml.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/constant/global.constant.ts +2 -0
- package/src/core.module.ts +4 -2
- package/src/module/filter/controller/filter.controller.ts +28 -0
- package/src/module/filter/dto/filter-request.dto.ts +24 -0
- package/src/module/filter/entity/saved-filter-detail.entity.ts +23 -0
- package/src/module/filter/entity/saved-filter-master.entity.ts +14 -0
- package/src/module/filter/filter.module.ts +21 -0
- package/src/module/filter/repository/saved-filter.repository.ts +54 -0
- package/src/module/filter/service/filter.service.ts +260 -0
- package/src/module/filter/service/saved-filter.service.ts +101 -0
- package/src/module/meta/entity.module.ts +1 -0
- package/src/module/meta/service/media-data.service.ts +1 -1
- package/src/resources/dev.properties.yaml +2 -2
- package/src/resources/properties.yaml.ts +1 -1
|
@@ -11,6 +11,8 @@ export declare const ENTITYTYPE_LISTMASTERITEMS = "LMI";
|
|
|
11
11
|
export declare const ENTITYTYPE_SECTIONMASTER = "SEC";
|
|
12
12
|
export declare const ENTITYTYPE_FIELDMASTER = "FLD";
|
|
13
13
|
export declare const ENTITYTYPE_USRROLMAP = "URM";
|
|
14
|
+
export declare const ENTITYTYPE_SAVEDFILTERMASTER = "SFM";
|
|
15
|
+
export declare const ENTITYTYPE_SAVEDFILTERDETAIL = "SFD";
|
|
14
16
|
export declare const STORAGETYPE_SINGLEJSON = "singlejson";
|
|
15
17
|
export declare const STORAGETYPE_COLUMN = "column";
|
|
16
18
|
export declare const secretKey: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DISPLAY_REPORT = exports.DISPLAY_EXPORT = exports.DISPLAY_LIST = exports.ENTITYSTATUS_PUBLISHED = exports.ENTITYSTATUS_TO_BE_PUBLISHED = exports.STATUS_PENDING = exports.STATUS_INACTIVE = exports.STATUS_ACTIVE = exports.secretKey = exports.STORAGETYPE_COLUMN = exports.STORAGETYPE_SINGLEJSON = exports.ENTITYTYPE_USRROLMAP = exports.ENTITYTYPE_FIELDMASTER = exports.ENTITYTYPE_SECTIONMASTER = exports.ENTITYTYPE_LISTMASTERITEMS = exports.ENTITYTYPE_LISTMASTER = exports.ENTITYTYPE_MEDIA = exports.ENTITYTYPE_VIEWMASTER = exports.ENTITYTYPE_PREFERENCEMASTER = exports.ENTITYTYPE_ENTITYTABLECOLUMN = exports.ENTITYTYPE_ENTITYTABLE = exports.ENTITYTYPE_ROLE = exports.ENTITYTYPE_ENTITYMASTER = exports.ENTITYTYPE_USER = void 0;
|
|
3
|
+
exports.DISPLAY_REPORT = exports.DISPLAY_EXPORT = exports.DISPLAY_LIST = exports.ENTITYSTATUS_PUBLISHED = exports.ENTITYSTATUS_TO_BE_PUBLISHED = exports.STATUS_PENDING = exports.STATUS_INACTIVE = exports.STATUS_ACTIVE = exports.secretKey = exports.STORAGETYPE_COLUMN = exports.STORAGETYPE_SINGLEJSON = exports.ENTITYTYPE_SAVEDFILTERDETAIL = exports.ENTITYTYPE_SAVEDFILTERMASTER = exports.ENTITYTYPE_USRROLMAP = exports.ENTITYTYPE_FIELDMASTER = exports.ENTITYTYPE_SECTIONMASTER = exports.ENTITYTYPE_LISTMASTERITEMS = exports.ENTITYTYPE_LISTMASTER = exports.ENTITYTYPE_MEDIA = exports.ENTITYTYPE_VIEWMASTER = exports.ENTITYTYPE_PREFERENCEMASTER = exports.ENTITYTYPE_ENTITYTABLECOLUMN = exports.ENTITYTYPE_ENTITYTABLE = exports.ENTITYTYPE_ROLE = exports.ENTITYTYPE_ENTITYMASTER = exports.ENTITYTYPE_USER = void 0;
|
|
4
4
|
exports.ENTITYTYPE_USER = 'USR';
|
|
5
5
|
exports.ENTITYTYPE_ENTITYMASTER = 'EMS';
|
|
6
6
|
exports.ENTITYTYPE_ROLE = 'ROL';
|
|
@@ -14,6 +14,8 @@ exports.ENTITYTYPE_LISTMASTERITEMS = 'LMI';
|
|
|
14
14
|
exports.ENTITYTYPE_SECTIONMASTER = 'SEC';
|
|
15
15
|
exports.ENTITYTYPE_FIELDMASTER = 'FLD';
|
|
16
16
|
exports.ENTITYTYPE_USRROLMAP = 'URM';
|
|
17
|
+
exports.ENTITYTYPE_SAVEDFILTERMASTER = 'SFM';
|
|
18
|
+
exports.ENTITYTYPE_SAVEDFILTERDETAIL = 'SFD';
|
|
17
19
|
exports.STORAGETYPE_SINGLEJSON = 'singlejson';
|
|
18
20
|
exports.STORAGETYPE_COLUMN = 'column';
|
|
19
21
|
exports.secretKey = process.env.secret_key || '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global.constant.js","sourceRoot":"","sources":["../../src/constant/global.constant.ts"],"names":[],"mappings":";;;AACa,QAAA,eAAe,GAAG,KAAK,CAAC;AACxB,QAAA,uBAAuB,GAAG,KAAK,CAAC;AAChC,QAAA,eAAe,GAAG,KAAK,CAAC;AACxB,QAAA,sBAAsB,GAAG,KAAK,CAAC;AAC/B,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,2BAA2B,GAAG,KAAK,CAAC;AACpC,QAAA,qBAAqB,GAAG,KAAK,CAAC;AAC9B,QAAA,gBAAgB,GAAG,KAAK,CAAC;AACzB,QAAA,qBAAqB,GAAG,KAAK,CAAC;AAC9B,QAAA,0BAA0B,GAAG,KAAK,CAAC;AACnC,QAAA,wBAAwB,GAAG,KAAK,CAAC;AACjC,QAAA,sBAAsB,GAAG,KAAK,CAAC;AAC/B,QAAA,oBAAoB,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"global.constant.js","sourceRoot":"","sources":["../../src/constant/global.constant.ts"],"names":[],"mappings":";;;AACa,QAAA,eAAe,GAAG,KAAK,CAAC;AACxB,QAAA,uBAAuB,GAAG,KAAK,CAAC;AAChC,QAAA,eAAe,GAAG,KAAK,CAAC;AACxB,QAAA,sBAAsB,GAAG,KAAK,CAAC;AAC/B,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,2BAA2B,GAAG,KAAK,CAAC;AACpC,QAAA,qBAAqB,GAAG,KAAK,CAAC;AAC9B,QAAA,gBAAgB,GAAG,KAAK,CAAC;AACzB,QAAA,qBAAqB,GAAG,KAAK,CAAC;AAC9B,QAAA,0BAA0B,GAAG,KAAK,CAAC;AACnC,QAAA,wBAAwB,GAAG,KAAK,CAAC;AACjC,QAAA,sBAAsB,GAAG,KAAK,CAAC;AAC/B,QAAA,oBAAoB,GAAG,KAAK,CAAC;AAC7B,QAAA,4BAA4B,GAAG,KAAK,CAAC;AACrC,QAAA,4BAA4B,GAAG,KAAK,CAAC;AAGrC,QAAA,sBAAsB,GAAG,YAAY,CAAC;AACtC,QAAA,kBAAkB,GAAG,QAAQ,CAAC;AAG9B,QAAA,SAAS,GAAW,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;AAGjD,QAAA,aAAa,GAAG,QAAQ,CAAC;AACzB,QAAA,eAAe,GAAG,UAAU,CAAC;AAC7B,QAAA,cAAc,GAAG,SAAS,CAAC;AAG3B,QAAA,4BAA4B,GAAG,iBAAiB,CAAC;AACjD,QAAA,sBAAsB,GAAG,WAAW,CAAC;AAGrC,QAAA,YAAY,GAAG,MAAM,CAAC;AACtB,QAAA,cAAc,GAAG,QAAQ,CAAC;AAC1B,QAAA,cAAc,GAAG,QAAQ,CAAC"}
|
package/dist/core.module.js
CHANGED
|
@@ -18,6 +18,7 @@ const module_module_1 = require("./module/module/module.module");
|
|
|
18
18
|
const notification_module_1 = require("./module/notification/notification.module");
|
|
19
19
|
const layout_module_1 = require("./module/layout/layout.module");
|
|
20
20
|
const listmaster_module_1 = require("./module/listmaster/listmaster.module");
|
|
21
|
+
const filter_module_1 = require("./module/filter/filter.module");
|
|
21
22
|
let CoreModule = CoreModule_1 = class CoreModule {
|
|
22
23
|
static forRootAsync(dbModule) {
|
|
23
24
|
if (!dbModule) {
|
|
@@ -36,6 +37,7 @@ let CoreModule = CoreModule_1 = class CoreModule {
|
|
|
36
37
|
notification_module_1.NotificationModule,
|
|
37
38
|
layout_module_1.LayoutModule,
|
|
38
39
|
listmaster_module_1.ListMasterModule,
|
|
40
|
+
filter_module_1.FilterModule
|
|
39
41
|
],
|
|
40
42
|
exports: [
|
|
41
43
|
config_1.ConfigModule,
|
|
@@ -48,6 +50,7 @@ let CoreModule = CoreModule_1 = class CoreModule {
|
|
|
48
50
|
notification_module_1.NotificationModule,
|
|
49
51
|
layout_module_1.LayoutModule,
|
|
50
52
|
listmaster_module_1.ListMasterModule,
|
|
53
|
+
filter_module_1.FilterModule
|
|
51
54
|
],
|
|
52
55
|
};
|
|
53
56
|
}
|
package/dist/core.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.module.js","sourceRoot":"","sources":["../src/core.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+D;AAC/D,2CAA8C;AAC9C,6EAAyE;AACzE,uDAAmD;AACnD,2DAAuD;AACvD,+DAA2D;AAC3D,iEAA6D;AAC7D,mFAA+E;AAC/E,iEAA6D;AAC7D,6EAAyE;
|
|
1
|
+
{"version":3,"file":"core.module.js","sourceRoot":"","sources":["../src/core.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAA+D;AAC/D,2CAA8C;AAC9C,6EAAyE;AACzE,uDAAmD;AACnD,2DAAuD;AACvD,+DAA2D;AAC3D,iEAA6D;AAC7D,mFAA+E;AAC/E,iEAA6D;AAC7D,6EAAyE;AACzE,iEAA6D;AAItD,IAAM,UAAU,kBAAhB,MAAM,UAAU;IACrB,MAAM,CAAC,YAAY,CAAC,QAAuB;QACzC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO;YACL,MAAM,EAAE,YAAU;YAClB,OAAO,EAAE;gBACP,qBAAY,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACxC,QAAQ;gBACR,4BAAY;gBACZ,oCAAgB;gBAChB,0BAAW;gBACX,wBAAU;gBACV,4BAAY;gBACZ,wCAAkB;gBAClB,4BAAY;gBACZ,oCAAgB;gBAChB,4BAAY;aACb;YACD,OAAO,EAAE;gBACP,qBAAY;gBACZ,QAAQ;gBACR,4BAAY;gBACZ,oCAAgB;gBAChB,0BAAW;gBACX,wBAAU;gBACV,4BAAY;gBACZ,wCAAkB;gBAClB,4BAAY;gBACZ,oCAAgB;gBAChB,4BAAY;aACb;SACF,CAAC;IACJ,CAAC;CAEF,CAAA;AArCY,gCAAU;qBAAV,UAAU;IAFtB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,UAAU,CAqCtB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { FilterService } from '../service/filter.service';
|
|
2
|
+
export declare class FilterController {
|
|
3
|
+
private readonly filterService;
|
|
4
|
+
constructor(filterService: FilterService);
|
|
5
|
+
applyFilter(body: any): Promise<{
|
|
6
|
+
success: boolean;
|
|
7
|
+
data: {
|
|
8
|
+
entity_tabs: ({
|
|
9
|
+
tabName: any;
|
|
10
|
+
tabCount: number;
|
|
11
|
+
} | {
|
|
12
|
+
tabName: string;
|
|
13
|
+
tabCount: any;
|
|
14
|
+
})[];
|
|
15
|
+
entity_list: import("typeorm").ObjectLiteral[];
|
|
16
|
+
pagination: never[];
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.FilterController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const filter_service_1 = require("../service/filter.service");
|
|
18
|
+
let FilterController = class FilterController {
|
|
19
|
+
constructor(filterService) {
|
|
20
|
+
this.filterService = filterService;
|
|
21
|
+
}
|
|
22
|
+
async applyFilter(body) {
|
|
23
|
+
const { entity_type, quickFilter, savedFilterCode, attributeFilter, tabs, sortby, } = body;
|
|
24
|
+
return this.filterService.applyFilter({
|
|
25
|
+
entity_type,
|
|
26
|
+
quickFilter,
|
|
27
|
+
savedFilterCode,
|
|
28
|
+
attributeFilter,
|
|
29
|
+
tabs,
|
|
30
|
+
sortby,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
exports.FilterController = FilterController;
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, common_1.Post)(),
|
|
37
|
+
__param(0, (0, common_1.Body)()),
|
|
38
|
+
__metadata("design:type", Function),
|
|
39
|
+
__metadata("design:paramtypes", [Object]),
|
|
40
|
+
__metadata("design:returntype", Promise)
|
|
41
|
+
], FilterController.prototype, "applyFilter", null);
|
|
42
|
+
exports.FilterController = FilterController = __decorate([
|
|
43
|
+
(0, common_1.Controller)('filter'),
|
|
44
|
+
__metadata("design:paramtypes", [filter_service_1.FilterService])
|
|
45
|
+
], FilterController);
|
|
46
|
+
//# sourceMappingURL=filter.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.controller.js","sourceRoot":"","sources":["../../../../src/module/filter/controller/filter.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwD;AACxD,8DAA0D;AAGnD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;IAAG,CAAC;IAGvD,AAAN,KAAK,CAAC,WAAW,CAAS,IAAS;QACjC,MAAM,EACJ,WAAW,EACX,WAAW,EACX,eAAe,EACf,eAAe,EACf,IAAI,EACJ,MAAM,GACP,GAAG,IAAI,CAAC;QAET,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;YACpC,WAAW;YACX,WAAW;YACX,eAAe;YACf,eAAe;YACf,IAAI;YACJ,MAAM;SACP,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAvBY,4CAAgB;AAIrB;IADL,IAAA,aAAI,GAAE;IACY,WAAA,IAAA,aAAI,GAAE,CAAA;;;;mDAkBxB;2BAtBU,gBAAgB;IAD5B,IAAA,mBAAU,EAAC,QAAQ,CAAC;qCAEyB,8BAAa;GAD9C,gBAAgB,CAuB5B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface FilterCondition {
|
|
2
|
+
filter_attribute: string;
|
|
3
|
+
filter_operator: string;
|
|
4
|
+
filter_value?: string | number | boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface TabsConfig {
|
|
7
|
+
columnName: string;
|
|
8
|
+
value: string;
|
|
9
|
+
sortBy?: 'ASC' | 'DSC';
|
|
10
|
+
}
|
|
11
|
+
export interface SortConfig {
|
|
12
|
+
sortColum: string;
|
|
13
|
+
sortType: 'ASC' | 'DSC';
|
|
14
|
+
}
|
|
15
|
+
export interface FilterRequestDto {
|
|
16
|
+
entity_type: string;
|
|
17
|
+
quickFilter?: FilterCondition[];
|
|
18
|
+
savedFilterCode?: string;
|
|
19
|
+
attributeFilter?: FilterCondition[];
|
|
20
|
+
sortby?: SortConfig[];
|
|
21
|
+
tabs?: TabsConfig;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-request.dto.js","sourceRoot":"","sources":["../../../../src/module/filter/dto/filter-request.dto.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,43 @@
|
|
|
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.SavedFilterDetail = void 0;
|
|
13
|
+
const global_constant_1 = require("../../../constant/global.constant");
|
|
14
|
+
const base_entity_entity_1 = require("../../meta/entity/base-entity.entity");
|
|
15
|
+
const typeorm_1 = require("typeorm");
|
|
16
|
+
let SavedFilterDetail = class SavedFilterDetail extends base_entity_entity_1.BaseEntity {
|
|
17
|
+
constructor() {
|
|
18
|
+
super();
|
|
19
|
+
this.entity_type = global_constant_1.ENTITYTYPE_SAVEDFILTERDETAIL;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
exports.SavedFilterDetail = SavedFilterDetail;
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, typeorm_1.Column)(),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], SavedFilterDetail.prototype, "mapped_filter_code", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
(0, typeorm_1.Column)(),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], SavedFilterDetail.prototype, "filter_attribute", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, typeorm_1.Column)(),
|
|
33
|
+
__metadata("design:type", String)
|
|
34
|
+
], SavedFilterDetail.prototype, "filter_operator", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, typeorm_1.Column)(),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], SavedFilterDetail.prototype, "filter_value", void 0);
|
|
39
|
+
exports.SavedFilterDetail = SavedFilterDetail = __decorate([
|
|
40
|
+
(0, typeorm_1.Entity)({ name: 'cr_saved_filter_detail' }),
|
|
41
|
+
__metadata("design:paramtypes", [])
|
|
42
|
+
], SavedFilterDetail);
|
|
43
|
+
//# sourceMappingURL=saved-filter-detail.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saved-filter-detail.entity.js","sourceRoot":"","sources":["../../../../src/module/filter/entity/saved-filter-detail.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uEAA4E;AAC5E,6EAAuE;AACvE,qCAAyC;AAGlC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,+BAAU;IAC/C;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,8CAA4B,CAAC;IAClD,CAAC;CAaF,CAAA;AAjBY,8CAAiB;AAO5B;IADC,IAAA,gBAAM,GAAE;;6DACkB;AAG3B;IADC,IAAA,gBAAM,GAAE;;2DACgB;AAGzB;IADC,IAAA,gBAAM,GAAE;;0DACe;AAGxB;IADC,IAAA,gBAAM,GAAE;;uDACY;4BAhBV,iBAAiB;IAD7B,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;;GAC9B,iBAAiB,CAiB7B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
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.SavedFilterMaster = void 0;
|
|
13
|
+
const global_constant_1 = require("../../../constant/global.constant");
|
|
14
|
+
const base_entity_entity_1 = require("../../meta/entity/base-entity.entity");
|
|
15
|
+
const typeorm_1 = require("typeorm");
|
|
16
|
+
let SavedFilterMaster = class SavedFilterMaster extends base_entity_entity_1.BaseEntity {
|
|
17
|
+
constructor() {
|
|
18
|
+
super();
|
|
19
|
+
this.entity_type = global_constant_1.ENTITYTYPE_SAVEDFILTERMASTER;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
exports.SavedFilterMaster = SavedFilterMaster;
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, typeorm_1.Column)({ length: 50, type: 'varchar', nullable: true }),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], SavedFilterMaster.prototype, "app_code", void 0);
|
|
27
|
+
exports.SavedFilterMaster = SavedFilterMaster = __decorate([
|
|
28
|
+
(0, typeorm_1.Entity)({ name: 'cr_saved_filter_master' }),
|
|
29
|
+
__metadata("design:paramtypes", [])
|
|
30
|
+
], SavedFilterMaster);
|
|
31
|
+
//# sourceMappingURL=saved-filter-master.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saved-filter-master.entity.js","sourceRoot":"","sources":["../../../../src/module/filter/entity/saved-filter-master.entity.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,uEAA4E;AAC5E,6EAAuE;AACvE,qCAAyC;AAGlC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,+BAAU;IAC/C;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,8CAA4B,CAAC;IAClD,CAAC;CAIF,CAAA;AARY,8CAAiB;AAO5B;IADC,IAAA,gBAAM,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;mDACvC;4BAPN,iBAAiB;IAD7B,IAAA,gBAAM,EAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;;GAC9B,iBAAiB,CAQ7B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.FilterModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
12
|
+
const saved_filter_service_1 = require("./service/saved-filter.service");
|
|
13
|
+
const saved_filter_detail_entity_1 = require("./entity/saved-filter-detail.entity");
|
|
14
|
+
const saved_filter_master_entity_1 = require("./entity/saved-filter-master.entity");
|
|
15
|
+
const saved_filter_repository_1 = require("./repository/saved-filter.repository");
|
|
16
|
+
const entity_module_1 = require("../meta/entity.module");
|
|
17
|
+
const filter_service_1 = require("./service/filter.service");
|
|
18
|
+
const filter_controller_1 = require("./controller/filter.controller");
|
|
19
|
+
let FilterModule = class FilterModule {
|
|
20
|
+
};
|
|
21
|
+
exports.FilterModule = FilterModule;
|
|
22
|
+
exports.FilterModule = FilterModule = __decorate([
|
|
23
|
+
(0, common_1.Module)({
|
|
24
|
+
imports: [typeorm_1.TypeOrmModule.forFeature([saved_filter_detail_entity_1.SavedFilterDetail, saved_filter_master_entity_1.SavedFilterMaster]), entity_module_1.EntityModule],
|
|
25
|
+
controllers: [filter_controller_1.FilterController],
|
|
26
|
+
providers: [
|
|
27
|
+
{ provide: 'SavedFilterService', useClass: saved_filter_service_1.SavedFilterService },
|
|
28
|
+
saved_filter_repository_1.SavedFilterRepositoryService,
|
|
29
|
+
filter_service_1.FilterService
|
|
30
|
+
],
|
|
31
|
+
exports: ['SavedFilterService', saved_filter_repository_1.SavedFilterRepositoryService],
|
|
32
|
+
})
|
|
33
|
+
], FilterModule);
|
|
34
|
+
//# sourceMappingURL=filter.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.module.js","sourceRoot":"","sources":["../../../src/module/filter/filter.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6CAAgD;AAChD,yEAAoE;AACpE,oFAAwE;AACxE,oFAAwE;AACxE,kFAAoF;AACpF,yDAAqD;AACrD,6DAAyD;AACzD,sEAAkE;AAY3D,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IAVxB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,uBAAa,CAAC,UAAU,CAAC,CAAC,8CAAiB,EAAC,8CAAiB,CAAC,CAAC,EAAC,4BAAY,CAAC;QACvF,WAAW,EAAE,CAAC,oCAAgB,CAAC;QAC/B,SAAS,EAAE;YACT,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,yCAAkB,EAAE;YAChE,sDAA4B;YAC5B,8BAAa;SACb;QACD,OAAO,EAAE,CAAC,oBAAoB,EAAE,sDAA4B,CAAC;KAC9D,CAAC;GACW,YAAY,CAAG"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { SavedFilterMaster } from '../entity/saved-filter-master.entity';
|
|
3
|
+
import { SavedFilterDetail } from '../entity/saved-filter-detail.entity';
|
|
4
|
+
export declare class SavedFilterRepositoryService {
|
|
5
|
+
private readonly savedFilterMasterRepo;
|
|
6
|
+
private readonly savedFilterDetailRepo;
|
|
7
|
+
constructor(savedFilterMasterRepo: Repository<SavedFilterMaster>, savedFilterDetailRepo: Repository<SavedFilterDetail>);
|
|
8
|
+
isFilterNameExists(name: string, orgId: number, entId: number, excludeId?: number): Promise<boolean>;
|
|
9
|
+
getDetailsByCode(code: string): Promise<SavedFilterDetail[]>;
|
|
10
|
+
deleteDetailsByCode(code: string): Promise<void>;
|
|
11
|
+
saveDetails(details: Partial<SavedFilterDetail>[]): Promise<void>;
|
|
12
|
+
updateCode(id: number, code: string): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.SavedFilterRepositoryService = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
|
+
const typeorm_2 = require("typeorm");
|
|
19
|
+
const saved_filter_master_entity_1 = require("../entity/saved-filter-master.entity");
|
|
20
|
+
const saved_filter_detail_entity_1 = require("../entity/saved-filter-detail.entity");
|
|
21
|
+
let SavedFilterRepositoryService = class SavedFilterRepositoryService {
|
|
22
|
+
constructor(savedFilterMasterRepo, savedFilterDetailRepo) {
|
|
23
|
+
this.savedFilterMasterRepo = savedFilterMasterRepo;
|
|
24
|
+
this.savedFilterDetailRepo = savedFilterDetailRepo;
|
|
25
|
+
}
|
|
26
|
+
async isFilterNameExists(name, orgId, entId, excludeId) {
|
|
27
|
+
const where = {
|
|
28
|
+
name,
|
|
29
|
+
organization_id: orgId,
|
|
30
|
+
enterprise_id: entId,
|
|
31
|
+
};
|
|
32
|
+
if (excludeId) {
|
|
33
|
+
where.id = (0, typeorm_2.Not)(excludeId);
|
|
34
|
+
}
|
|
35
|
+
const existing = await this.savedFilterMasterRepo.findOne({ where });
|
|
36
|
+
return !!existing;
|
|
37
|
+
}
|
|
38
|
+
async getDetailsByCode(code) {
|
|
39
|
+
return this.savedFilterDetailRepo.find({
|
|
40
|
+
where: { mapped_filter_code: code },
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async deleteDetailsByCode(code) {
|
|
44
|
+
await this.savedFilterDetailRepo.delete({ mapped_filter_code: code });
|
|
45
|
+
}
|
|
46
|
+
async saveDetails(details) {
|
|
47
|
+
const entities = this.savedFilterDetailRepo.create(details);
|
|
48
|
+
await this.savedFilterDetailRepo.save(entities);
|
|
49
|
+
}
|
|
50
|
+
async updateCode(id, code) {
|
|
51
|
+
await this.savedFilterMasterRepo.update(id, { code });
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
exports.SavedFilterRepositoryService = SavedFilterRepositoryService;
|
|
55
|
+
exports.SavedFilterRepositoryService = SavedFilterRepositoryService = __decorate([
|
|
56
|
+
(0, common_1.Injectable)(),
|
|
57
|
+
__param(0, (0, typeorm_1.InjectRepository)(saved_filter_master_entity_1.SavedFilterMaster)),
|
|
58
|
+
__param(1, (0, typeorm_1.InjectRepository)(saved_filter_detail_entity_1.SavedFilterDetail)),
|
|
59
|
+
__metadata("design:paramtypes", [typeorm_2.Repository,
|
|
60
|
+
typeorm_2.Repository])
|
|
61
|
+
], SavedFilterRepositoryService);
|
|
62
|
+
//# sourceMappingURL=saved-filter.repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saved-filter.repository.js","sourceRoot":"","sources":["../../../../src/module/filter/repository/saved-filter.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,6CAAmD;AACnD,qCAA0C;AAC1C,qFAAyE;AACzE,qFAAyE;AAGlE,IAAM,4BAA4B,GAAlC,MAAM,4BAA4B;IACvC,YAEmB,qBAAoD,EAEpD,qBAAoD;QAFpD,0BAAqB,GAArB,qBAAqB,CAA+B;QAEpD,0BAAqB,GAArB,qBAAqB,CAA+B;IACpE,CAAC;IAEJ,KAAK,CAAC,kBAAkB,CACtB,IAAY,EACZ,KAAa,EACb,KAAa,EACb,SAAkB;QAElB,MAAM,KAAK,GAAQ;YACjB,IAAI;YACJ,eAAe,EAAE,KAAK;YACtB,aAAa,EAAE,KAAK;SACrB,CAAC;QACF,IAAI,SAAS,EAAE,CAAC;YACd,KAAK,CAAC,EAAE,GAAG,IAAA,aAAG,EAAC,SAAS,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC,QAAQ,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YACrC,KAAK,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB,CAAC,IAAY;QACpC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAqC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,EAAU,EAAE,IAAY;QACvC,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;CAEF,CAAA;AA9CY,oEAA4B;uCAA5B,4BAA4B;IADxC,IAAA,mBAAU,GAAE;IAGR,WAAA,IAAA,0BAAgB,EAAC,8CAAiB,CAAC,CAAA;IAEnC,WAAA,IAAA,0BAAgB,EAAC,8CAAiB,CAAC,CAAA;qCADI,oBAAU;QAEV,oBAAU;GALzC,4BAA4B,CA8CxC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { AttributeMasterService } from 'src/module/meta/service/attribute-master.service';
|
|
2
|
+
import { EntityMasterService } from 'src/module/meta/service/entity-master.service';
|
|
3
|
+
import { DataSource } from 'typeorm';
|
|
4
|
+
import { SavedFilterService } from './saved-filter.service';
|
|
5
|
+
import { FilterRequestDto } from '../dto/filter-request.dto';
|
|
6
|
+
export declare class FilterService {
|
|
7
|
+
private dataSource;
|
|
8
|
+
private readonly entityMasterService;
|
|
9
|
+
private readonly attributeMasterService;
|
|
10
|
+
private readonly savedFilterService;
|
|
11
|
+
constructor(dataSource: DataSource, entityMasterService: EntityMasterService, attributeMasterService: AttributeMasterService, savedFilterService: SavedFilterService);
|
|
12
|
+
private getTabCounts;
|
|
13
|
+
applyFilter(dto: FilterRequestDto): Promise<{
|
|
14
|
+
success: boolean;
|
|
15
|
+
data: {
|
|
16
|
+
entity_tabs: ({
|
|
17
|
+
tabName: any;
|
|
18
|
+
tabCount: number;
|
|
19
|
+
} | {
|
|
20
|
+
tabName: string;
|
|
21
|
+
tabCount: any;
|
|
22
|
+
})[];
|
|
23
|
+
entity_list: import("typeorm").ObjectLiteral[];
|
|
24
|
+
pagination: never[];
|
|
25
|
+
};
|
|
26
|
+
}>;
|
|
27
|
+
private parseFilters;
|
|
28
|
+
private getSavedFilters;
|
|
29
|
+
private buildWhereClauses;
|
|
30
|
+
private buildCondition;
|
|
31
|
+
private buildTextCondition;
|
|
32
|
+
private buildNumberCondition;
|
|
33
|
+
private buildDateCondition;
|
|
34
|
+
}
|
|
@@ -0,0 +1,210 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.FilterService = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const attribute_master_service_1 = require("../../meta/service/attribute-master.service");
|
|
18
|
+
const entity_master_service_1 = require("../../meta/service/entity-master.service");
|
|
19
|
+
const typeorm_1 = require("typeorm");
|
|
20
|
+
const saved_filter_service_1 = require("./saved-filter.service");
|
|
21
|
+
let FilterService = class FilterService {
|
|
22
|
+
constructor(dataSource, entityMasterService, attributeMasterService, savedFilterService) {
|
|
23
|
+
this.dataSource = dataSource;
|
|
24
|
+
this.entityMasterService = entityMasterService;
|
|
25
|
+
this.attributeMasterService = attributeMasterService;
|
|
26
|
+
this.savedFilterService = savedFilterService;
|
|
27
|
+
}
|
|
28
|
+
async getTabCounts(tableName, column, whereClauses) {
|
|
29
|
+
if (!column)
|
|
30
|
+
return [];
|
|
31
|
+
const qb = this.dataSource
|
|
32
|
+
.getRepository(tableName)
|
|
33
|
+
.createQueryBuilder('e')
|
|
34
|
+
.select(`e.${column}`, 'tabName')
|
|
35
|
+
.addSelect('COUNT(*)', 'tabCount')
|
|
36
|
+
.groupBy(`e.${column}`);
|
|
37
|
+
whereClauses.forEach((clause) => qb.andWhere(clause.query, clause.params));
|
|
38
|
+
const rows = await qb.getRawMany();
|
|
39
|
+
const total = rows.reduce((sum, r) => sum + parseInt(r.tabCount), 0);
|
|
40
|
+
return [
|
|
41
|
+
{ tabName: 'All', tabCount: total },
|
|
42
|
+
...rows.map((r) => ({
|
|
43
|
+
tabName: r.tabName || 'UNKNOWN',
|
|
44
|
+
tabCount: parseInt(r.tabCount),
|
|
45
|
+
})),
|
|
46
|
+
];
|
|
47
|
+
}
|
|
48
|
+
async applyFilter(dto) {
|
|
49
|
+
const { entity_type, quickFilter, savedFilterCode, attributeFilter, tabs, sortby, } = dto;
|
|
50
|
+
const entityMeta = await this.entityMasterService.getEntityData(entity_type);
|
|
51
|
+
const tableName = entityMeta?.db_table_name;
|
|
52
|
+
if (!tableName)
|
|
53
|
+
throw new common_1.BadRequestException(`Invalid entity_type: ${entity_type}`);
|
|
54
|
+
const attributeMeta = await this.attributeMasterService.findAttributesByMappedEntityType(entity_type);
|
|
55
|
+
const attributeMetaMap = attributeMeta.reduce((acc, attr) => {
|
|
56
|
+
acc[attr.attribute_key] = attr;
|
|
57
|
+
return acc;
|
|
58
|
+
}, {});
|
|
59
|
+
const savedFilters = await this.getSavedFilters(savedFilterCode);
|
|
60
|
+
const baseFilters = [
|
|
61
|
+
...(quickFilter || []),
|
|
62
|
+
...savedFilters,
|
|
63
|
+
...(attributeFilter || []),
|
|
64
|
+
];
|
|
65
|
+
const baseWhere = this.buildWhereClauses(baseFilters, attributeMetaMap);
|
|
66
|
+
const allTabs = await this.getTabCounts(tableName, tabs?.columnName, baseWhere);
|
|
67
|
+
const dataWhere = [...baseWhere];
|
|
68
|
+
if (tabs?.columnName && tabs?.value) {
|
|
69
|
+
const tabAttrMeta = attributeMetaMap[tabs.columnName];
|
|
70
|
+
const tabCondition = this.buildCondition({
|
|
71
|
+
filter_attribute: tabs.columnName,
|
|
72
|
+
filter_operator: 'equal',
|
|
73
|
+
filter_value: tabs.value,
|
|
74
|
+
}, tabAttrMeta);
|
|
75
|
+
if (tabCondition) {
|
|
76
|
+
dataWhere.push(tabCondition);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const qb = this.dataSource.getRepository(tableName).createQueryBuilder('e');
|
|
80
|
+
dataWhere.forEach((clause) => qb.andWhere(clause.query, clause.params));
|
|
81
|
+
if (Array.isArray(sortby)) {
|
|
82
|
+
sortby.forEach(({ sortColum, sortType }) => {
|
|
83
|
+
qb.addOrderBy(`e.${sortColum}`, sortType.toUpperCase() === 'DSC' ? 'DESC' : 'ASC');
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
const entity_list = await qb.getMany();
|
|
87
|
+
return {
|
|
88
|
+
success: true,
|
|
89
|
+
data: {
|
|
90
|
+
entity_tabs: allTabs,
|
|
91
|
+
entity_list,
|
|
92
|
+
pagination: [],
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
parseFilters(raw, isSingle = false) {
|
|
97
|
+
if (!raw)
|
|
98
|
+
return [];
|
|
99
|
+
if (typeof raw === 'string') {
|
|
100
|
+
try {
|
|
101
|
+
const parsed = JSON.parse(raw);
|
|
102
|
+
return isSingle ? [parsed] : parsed;
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
throw new common_1.BadRequestException('Invalid JSON in filter input');
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return isSingle ? [raw] : Array.isArray(raw) ? raw : [];
|
|
109
|
+
}
|
|
110
|
+
async getSavedFilters(code) {
|
|
111
|
+
if (!code)
|
|
112
|
+
return [];
|
|
113
|
+
const savedFilter = await this.savedFilterService.getDetailsByCode(code);
|
|
114
|
+
if (!savedFilter) {
|
|
115
|
+
throw new common_1.BadRequestException(`Saved filter not found for code: ${code}`);
|
|
116
|
+
}
|
|
117
|
+
console.log(savedFilter);
|
|
118
|
+
return savedFilter;
|
|
119
|
+
}
|
|
120
|
+
buildWhereClauses(filters, attributeMeta) {
|
|
121
|
+
return filters
|
|
122
|
+
.map((f) => this.buildCondition(f, attributeMeta[f.filter_attribute]))
|
|
123
|
+
.filter((clause) => clause !== null);
|
|
124
|
+
}
|
|
125
|
+
buildCondition(filter, meta) {
|
|
126
|
+
if (!meta)
|
|
127
|
+
return null;
|
|
128
|
+
const attr = filter.filter_attribute;
|
|
129
|
+
const val = filter.filter_value;
|
|
130
|
+
const op = filter.filter_operator;
|
|
131
|
+
const key = `param_${attr}_${Math.random().toString(36).substring(2, 8)}`;
|
|
132
|
+
switch (meta.db_datatype) {
|
|
133
|
+
case 'varchar':
|
|
134
|
+
return this.buildTextCondition(attr, op, val, key);
|
|
135
|
+
case 'number':
|
|
136
|
+
return this.buildNumberCondition(attr, op, val, key);
|
|
137
|
+
case 'date':
|
|
138
|
+
return this.buildDateCondition(attr, op, val, key);
|
|
139
|
+
default:
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
buildTextCondition(attr, op, val, key) {
|
|
144
|
+
switch (op) {
|
|
145
|
+
case 'contains':
|
|
146
|
+
return {
|
|
147
|
+
query: `LOWER(e.${attr}) LIKE :${key}`,
|
|
148
|
+
params: { [key]: `%${val.toLowerCase()}%` },
|
|
149
|
+
};
|
|
150
|
+
case 'equal':
|
|
151
|
+
return {
|
|
152
|
+
query: `e.${attr} = :${key}`,
|
|
153
|
+
params: { [key]: val },
|
|
154
|
+
};
|
|
155
|
+
case 'not_equal':
|
|
156
|
+
return {
|
|
157
|
+
query: `e.${attr} != :${key}`,
|
|
158
|
+
params: { [key]: val },
|
|
159
|
+
};
|
|
160
|
+
case 'empty':
|
|
161
|
+
return {
|
|
162
|
+
query: `e.${attr} IS NULL`,
|
|
163
|
+
params: {},
|
|
164
|
+
};
|
|
165
|
+
case 'not_empty':
|
|
166
|
+
return {
|
|
167
|
+
query: `e.${attr} IS NOT NULL`,
|
|
168
|
+
params: {},
|
|
169
|
+
};
|
|
170
|
+
default:
|
|
171
|
+
throw new common_1.BadRequestException(`Unsupported operator for text: ${op}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
buildNumberCondition(attr, op, val, key) {
|
|
175
|
+
switch (op) {
|
|
176
|
+
case 'equal':
|
|
177
|
+
return { query: `e.${attr} = :${key}`, params: { [key]: val } };
|
|
178
|
+
case 'not_equal':
|
|
179
|
+
return { query: `e.${attr} != :${key}`, params: { [key]: val } };
|
|
180
|
+
case 'greater_than':
|
|
181
|
+
return { query: `e.${attr} > :${key}`, params: { [key]: val } };
|
|
182
|
+
case 'less_than':
|
|
183
|
+
return { query: `e.${attr} < :${key}`, params: { [key]: val } };
|
|
184
|
+
default:
|
|
185
|
+
throw new common_1.BadRequestException(`Unsupported operator for number: ${op}`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
buildDateCondition(attr, op, val, key) {
|
|
189
|
+
switch (op) {
|
|
190
|
+
case 'equal':
|
|
191
|
+
return { query: `e.${attr} = :${key}`, params: { [key]: val } };
|
|
192
|
+
case 'before':
|
|
193
|
+
return { query: `e.${attr} < :${key}`, params: { [key]: val } };
|
|
194
|
+
case 'after':
|
|
195
|
+
return { query: `e.${attr} > :${key}`, params: { [key]: val } };
|
|
196
|
+
default:
|
|
197
|
+
throw new common_1.BadRequestException(`Unsupported operator for date: ${op}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
exports.FilterService = FilterService;
|
|
202
|
+
exports.FilterService = FilterService = __decorate([
|
|
203
|
+
(0, common_1.Injectable)(),
|
|
204
|
+
__param(3, (0, common_1.Inject)('SavedFilterService')),
|
|
205
|
+
__metadata("design:paramtypes", [typeorm_1.DataSource,
|
|
206
|
+
entity_master_service_1.EntityMasterService,
|
|
207
|
+
attribute_master_service_1.AttributeMasterService,
|
|
208
|
+
saved_filter_service_1.SavedFilterService])
|
|
209
|
+
], FilterService);
|
|
210
|
+
//# sourceMappingURL=filter.service.js.map
|