@chilibase/backend 0.1.0

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.
Files changed (168) hide show
  1. package/README.md +3 -0
  2. package/lib/administration/x-browse-meta.entity.d.ts +8 -0
  3. package/lib/administration/x-browse-meta.entity.js +42 -0
  4. package/lib/administration/x-browse-meta.entity.js.map +1 -0
  5. package/lib/administration/x-column-meta.entity.d.ts +11 -0
  6. package/lib/administration/x-column-meta.entity.js +59 -0
  7. package/lib/administration/x-column-meta.entity.js.map +1 -0
  8. package/lib/administration/x-enum-enum.entity.d.ts +12 -0
  9. package/lib/administration/x-enum-enum.entity.js +59 -0
  10. package/lib/administration/x-enum-enum.entity.js.map +1 -0
  11. package/lib/administration/x-enum.entity.d.ts +10 -0
  12. package/lib/administration/x-enum.entity.js +54 -0
  13. package/lib/administration/x-enum.entity.js.map +1 -0
  14. package/lib/administration/x-file.entity.d.ts +10 -0
  15. package/lib/administration/x-file.entity.js +53 -0
  16. package/lib/administration/x-file.entity.js.map +1 -0
  17. package/lib/administration/x-param.entity.d.ts +10 -0
  18. package/lib/administration/x-param.entity.js +54 -0
  19. package/lib/administration/x-param.entity.js.map +1 -0
  20. package/lib/administration/x-user.entity.d.ts +11 -0
  21. package/lib/administration/x-user.entity.js +63 -0
  22. package/lib/administration/x-user.entity.js.map +1 -0
  23. package/lib/auth/auth.module.d.ts +2 -0
  24. package/lib/auth/auth.module.js +19 -0
  25. package/lib/auth/auth.module.js.map +1 -0
  26. package/lib/auth/jwt-auth.guard.d.ts +10 -0
  27. package/lib/auth/jwt-auth.guard.js +36 -0
  28. package/lib/auth/jwt-auth.guard.js.map +1 -0
  29. package/lib/auth/jwt.strategy.d.ts +9 -0
  30. package/lib/auth/jwt.strategy.js +60 -0
  31. package/lib/auth/jwt.strategy.js.map +1 -0
  32. package/lib/auth/public.d.ts +2 -0
  33. package/lib/auth/public.js +4 -0
  34. package/lib/auth/public.js.map +1 -0
  35. package/lib/serverApi/ExportImportParam.d.ts +70 -0
  36. package/lib/serverApi/ExportImportParam.js +33 -0
  37. package/lib/serverApi/ExportImportParam.js.map +1 -0
  38. package/lib/serverApi/FindParam.d.ts +59 -0
  39. package/lib/serverApi/FindParam.js +20 -0
  40. package/lib/serverApi/FindParam.js.map +1 -0
  41. package/lib/serverApi/FindResult.d.ts +8 -0
  42. package/lib/serverApi/FindResult.js +2 -0
  43. package/lib/serverApi/FindResult.js.map +1 -0
  44. package/lib/serverApi/PrimeFilterSortMeta.d.ts +43 -0
  45. package/lib/serverApi/PrimeFilterSortMeta.js +32 -0
  46. package/lib/serverApi/PrimeFilterSortMeta.js.map +1 -0
  47. package/lib/serverApi/XBrowseMetadata.d.ts +4 -0
  48. package/lib/serverApi/XBrowseMetadata.js +2 -0
  49. package/lib/serverApi/XBrowseMetadata.js.map +1 -0
  50. package/lib/serverApi/XEntityMetadata.d.ts +35 -0
  51. package/lib/serverApi/XEntityMetadata.js +2 -0
  52. package/lib/serverApi/XEntityMetadata.js.map +1 -0
  53. package/lib/serverApi/XFileJsonField.d.ts +6 -0
  54. package/lib/serverApi/XFileJsonField.js +2 -0
  55. package/lib/serverApi/XFileJsonField.js.map +1 -0
  56. package/lib/serverApi/XPostLoginIfc.d.ts +7 -0
  57. package/lib/serverApi/XPostLoginIfc.js +2 -0
  58. package/lib/serverApi/XPostLoginIfc.js.map +1 -0
  59. package/lib/serverApi/XUser.d.ts +8 -0
  60. package/lib/serverApi/XUser.js +2 -0
  61. package/lib/serverApi/XUser.js.map +1 -0
  62. package/lib/serverApi/XUserAuthenticationIfc.d.ts +9 -0
  63. package/lib/serverApi/XUserAuthenticationIfc.js +2 -0
  64. package/lib/serverApi/XUserAuthenticationIfc.js.map +1 -0
  65. package/lib/serverApi/XUtilsCommon.d.ts +48 -0
  66. package/lib/serverApi/XUtilsCommon.js +409 -0
  67. package/lib/serverApi/XUtilsCommon.js.map +1 -0
  68. package/lib/serverApi/XUtilsConversions.d.ts +37 -0
  69. package/lib/serverApi/XUtilsConversions.js +386 -0
  70. package/lib/serverApi/XUtilsConversions.js.map +1 -0
  71. package/lib/serverApi/XUtilsMetadataCommon.d.ts +29 -0
  72. package/lib/serverApi/XUtilsMetadataCommon.js +170 -0
  73. package/lib/serverApi/XUtilsMetadataCommon.js.map +1 -0
  74. package/lib/serverApi/index.d.ts +2 -0
  75. package/lib/serverApi/index.js +3 -0
  76. package/lib/serverApi/index.js.map +1 -0
  77. package/lib/serverApi/x-lib-api.d.ts +12 -0
  78. package/lib/serverApi/x-lib-api.js +2 -0
  79. package/lib/serverApi/x-lib-api.js.map +1 -0
  80. package/lib/services/FindParamRows.d.ts +8 -0
  81. package/lib/services/FindParamRows.js +2 -0
  82. package/lib/services/FindParamRows.js.map +1 -0
  83. package/lib/services/FindParamRowsForAssoc.d.ts +6 -0
  84. package/lib/services/FindParamRowsForAssoc.js +2 -0
  85. package/lib/services/FindParamRowsForAssoc.js.map +1 -0
  86. package/lib/services/FindRowByIdParam.d.ts +5 -0
  87. package/lib/services/FindRowByIdParam.js +2 -0
  88. package/lib/services/FindRowByIdParam.js.map +1 -0
  89. package/lib/services/GetAssocNameParam.d.ts +4 -0
  90. package/lib/services/GetAssocNameParam.js +2 -0
  91. package/lib/services/GetAssocNameParam.js.map +1 -0
  92. package/lib/services/RemoveRowParam.d.ts +5 -0
  93. package/lib/services/RemoveRowParam.js +2 -0
  94. package/lib/services/RemoveRowParam.js.map +1 -0
  95. package/lib/services/SaveRowParam.d.ts +5 -0
  96. package/lib/services/SaveRowParam.js +2 -0
  97. package/lib/services/SaveRowParam.js.map +1 -0
  98. package/lib/services/XAdvancedConsoleLogger.d.ts +4 -0
  99. package/lib/services/XAdvancedConsoleLogger.js +25 -0
  100. package/lib/services/XAdvancedConsoleLogger.js.map +1 -0
  101. package/lib/services/XAppError.d.ts +3 -0
  102. package/lib/services/XAppError.js +8 -0
  103. package/lib/services/XAppError.js.map +1 -0
  104. package/lib/services/XEnvVars.d.ts +23 -0
  105. package/lib/services/XEnvVars.js +27 -0
  106. package/lib/services/XEnvVars.js.map +1 -0
  107. package/lib/services/XOptimisticLockingSubscriber.d.ts +4 -0
  108. package/lib/services/XOptimisticLockingSubscriber.js +23 -0
  109. package/lib/services/XOptimisticLockingSubscriber.js.map +1 -0
  110. package/lib/services/XRowIdListToRemove.d.ts +10 -0
  111. package/lib/services/XRowIdListToRemove.js +26 -0
  112. package/lib/services/XRowIdListToRemove.js.map +1 -0
  113. package/lib/services/XUtils.d.ts +16 -0
  114. package/lib/services/XUtils.js +58 -0
  115. package/lib/services/XUtils.js.map +1 -0
  116. package/lib/services/index.d.ts +4 -0
  117. package/lib/services/index.js +5 -0
  118. package/lib/services/index.js.map +1 -0
  119. package/lib/services/x-browse-form-metadata.service.d.ts +7 -0
  120. package/lib/services/x-browse-form-metadata.service.js +40 -0
  121. package/lib/services/x-browse-form-metadata.service.js.map +1 -0
  122. package/lib/services/x-entity-metadata.service.d.ts +15 -0
  123. package/lib/services/x-entity-metadata.service.js +127 -0
  124. package/lib/services/x-entity-metadata.service.js.map +1 -0
  125. package/lib/services/x-exception.filter.d.ts +4 -0
  126. package/lib/services/x-exception.filter.js +64 -0
  127. package/lib/services/x-exception.filter.js.map +1 -0
  128. package/lib/services/x-export-csv.service.d.ts +24 -0
  129. package/lib/services/x-export-csv.service.js +155 -0
  130. package/lib/services/x-export-csv.service.js.map +1 -0
  131. package/lib/services/x-export-excel.service.d.ts +12 -0
  132. package/lib/services/x-export-excel.service.js +68 -0
  133. package/lib/services/x-export-excel.service.js.map +1 -0
  134. package/lib/services/x-export-json.service.d.ts +7 -0
  135. package/lib/services/x-export-json.service.js +45 -0
  136. package/lib/services/x-export-json.service.js.map +1 -0
  137. package/lib/services/x-export.service.d.ts +14 -0
  138. package/lib/services/x-export.service.js +90 -0
  139. package/lib/services/x-export.service.js.map +1 -0
  140. package/lib/services/x-file.controller.d.ts +13 -0
  141. package/lib/services/x-file.controller.js +111 -0
  142. package/lib/services/x-file.controller.js.map +1 -0
  143. package/lib/services/x-file.service.d.ts +8 -0
  144. package/lib/services/x-file.service.js +41 -0
  145. package/lib/services/x-file.service.js.map +1 -0
  146. package/lib/services/x-lazy-data-table.service.d.ts +33 -0
  147. package/lib/services/x-lazy-data-table.service.js +227 -0
  148. package/lib/services/x-lazy-data-table.service.js.map +1 -0
  149. package/lib/services/x-lib.controller.d.ts +45 -0
  150. package/lib/services/x-lib.controller.js +205 -0
  151. package/lib/services/x-lib.controller.js.map +1 -0
  152. package/lib/services/x-lib.module.d.ts +4 -0
  153. package/lib/services/x-lib.module.js +51 -0
  154. package/lib/services/x-lib.module.js.map +1 -0
  155. package/lib/services/x-lib.service.d.ts +33 -0
  156. package/lib/services/x-lib.service.js +264 -0
  157. package/lib/services/x-lib.service.js.map +1 -0
  158. package/lib/tsconfig.tsbuildinfo +1 -0
  159. package/lib/x-query-data/XMainQueryData.d.ts +27 -0
  160. package/lib/x-query-data/XMainQueryData.js +172 -0
  161. package/lib/x-query-data/XMainQueryData.js.map +1 -0
  162. package/lib/x-query-data/XQueryData.d.ts +33 -0
  163. package/lib/x-query-data/XQueryData.js +242 -0
  164. package/lib/x-query-data/XQueryData.js.map +1 -0
  165. package/lib/x-query-data/XSubQueryData.d.ts +11 -0
  166. package/lib/x-query-data/XSubQueryData.js +52 -0
  167. package/lib/x-query-data/XSubQueryData.js.map +1 -0
  168. package/package.json +100 -0
@@ -0,0 +1,27 @@
1
+ import { XQueryData } from "./XQueryData.js";
2
+ import { XEntityMetadataService } from "../services/x-entity-metadata.service.js";
3
+ import { OrderByCondition, SelectQueryBuilder } from "typeorm";
4
+ import { XSubQueryData } from "./XSubQueryData.js";
5
+ import { DataTableFilterMeta, DataTableSortMeta } from "../serverApi/PrimeFilterSortMeta.js";
6
+ import { XCustomFilterItem, XDataTableFilterMeta, XFullTextSearch } from "../serverApi/FindParam.js";
7
+ import { XAssoc } from "../serverApi/XEntityMetadata.js";
8
+ export declare class XMainQueryData extends XQueryData {
9
+ assocXSubQueryDataMap: Map<string, XSubQueryData>;
10
+ selectItems: string[];
11
+ fullTextSearch: XFullTextSearch | undefined;
12
+ orderByItems: OrderByCondition;
13
+ constructor(xEntityMetadataService: XEntityMetadataService, entity: string, rootAlias: string, filters: DataTableFilterMeta | undefined, fullTextSearch: XFullTextSearch | undefined, customFilterItems: XCustomFilterItem[] | undefined);
14
+ isMainQueryData(): boolean;
15
+ addFilters(filters: XDataTableFilterMeta | undefined): void;
16
+ processFullTextSearch(): void;
17
+ addCustomFilterItems(customFilterItems: XCustomFilterItem[] | undefined): void;
18
+ addSelectItems(fields: string[] | undefined): void;
19
+ addOrderByItems(multiSortMeta: DataTableSortMeta[] | undefined): void;
20
+ private addCustomFilterItem;
21
+ replacePathFieldQueryData(sqlExpParam: string): [string, XQueryData];
22
+ getDBFieldForPathField(pathField: string): string;
23
+ replacePathField(pathFieldOrPathFieldExp: string): string;
24
+ getQueryForPathField(pathField: string): [XQueryData, string];
25
+ getXSubQueryData(xAssocOneToMany: XAssoc): XSubQueryData;
26
+ createFtsWhereItem(mainQueryBuilderForExistsSubQueries: SelectQueryBuilder<unknown> | undefined): string | "";
27
+ }
@@ -0,0 +1,172 @@
1
+ import { XQueryData } from "./XQueryData.js";
2
+ import { XSubQueryData } from "./XSubQueryData.js";
3
+ import { XUtilsCommon } from "../serverApi/XUtilsCommon.js";
4
+ export class XMainQueryData extends XQueryData {
5
+ assocXSubQueryDataMap;
6
+ selectItems;
7
+ fullTextSearch;
8
+ orderByItems;
9
+ constructor(xEntityMetadataService, entity, rootAlias, filters, fullTextSearch, customFilterItems) {
10
+ super(xEntityMetadataService, entity, rootAlias);
11
+ this.assocXSubQueryDataMap = new Map();
12
+ this.selectItems = [];
13
+ this.fullTextSearch = fullTextSearch;
14
+ this.orderByItems = {};
15
+ this.addFilters(filters);
16
+ this.processFullTextSearch();
17
+ this.addCustomFilterItems(customFilterItems);
18
+ }
19
+ isMainQueryData() {
20
+ return true;
21
+ }
22
+ addFilters(filters) {
23
+ if (filters) {
24
+ for (const [filterField, filterValue] of Object.entries(filters)) {
25
+ if (this.isFilterValueNotNull(filterValue)) {
26
+ if (!('operator' in filterValue) && filterValue.customFilterItems) {
27
+ this.addCustomFilterItems(filterValue.customFilterItems);
28
+ }
29
+ else {
30
+ const [xQueryData, filterFieldNew] = this.getQueryForPathField(filterField);
31
+ xQueryData.addFilterField(filterFieldNew, filterValue);
32
+ }
33
+ }
34
+ }
35
+ }
36
+ }
37
+ processFullTextSearch() {
38
+ if (this.fullTextSearch) {
39
+ const fields = this.fullTextSearch.fields;
40
+ if (fields) {
41
+ for (const field of fields) {
42
+ const [prefix, fieldOnly] = XUtilsCommon.getPrefixAndField(field);
43
+ const [xQueryData, filterFieldNew] = this.getQueryForPathField(fieldOnly);
44
+ xQueryData.addFtsField(prefix, filterFieldNew);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ addCustomFilterItems(customFilterItems) {
50
+ if (customFilterItems) {
51
+ for (const customFilterItem of customFilterItems) {
52
+ this.addCustomFilterItem(customFilterItem);
53
+ }
54
+ }
55
+ }
56
+ addSelectItems(fields) {
57
+ if (fields) {
58
+ for (const field of fields) {
59
+ const [xQueryData, fieldNew] = this.getQueryForPathField(field);
60
+ const dbField = xQueryData.getFieldFromPathField(fieldNew);
61
+ if (!dbField.endsWith('*FAKE*')) {
62
+ this.selectItems.push(dbField);
63
+ }
64
+ }
65
+ }
66
+ }
67
+ addOrderByItems(multiSortMeta) {
68
+ if (multiSortMeta) {
69
+ for (const sortMeta of multiSortMeta) {
70
+ const [xQueryData, fieldNew] = this.getQueryForPathField(sortMeta.field);
71
+ const dbField = xQueryData.getFieldFromPathField(fieldNew);
72
+ this.orderByItems[dbField] = (sortMeta.order === 1 ? "ASC" : "DESC");
73
+ }
74
+ }
75
+ }
76
+ addCustomFilterItem(xCustomFilterItem) {
77
+ const [sqlExpWithAliases, xQueryData] = this.replacePathFieldQueryData(xCustomFilterItem.where);
78
+ xQueryData.addWhereItem(sqlExpWithAliases);
79
+ xQueryData.addParams(xCustomFilterItem.params);
80
+ }
81
+ replacePathFieldQueryData(sqlExpParam) {
82
+ let sqlExp = sqlExpParam;
83
+ let match;
84
+ let xQueryDataForItem = null;
85
+ while ((match = XUtilsCommon.findFirstMatch(/\[[a-zA-Z0-9_.]+\]/, sqlExp)) != null) {
86
+ const filterField = match.substring(1, match.length - 1);
87
+ const [xQueryData, filterFieldNew] = this.getQueryForPathField(filterField);
88
+ if (xQueryDataForItem === null) {
89
+ xQueryDataForItem = xQueryData;
90
+ }
91
+ else if (xQueryData !== xQueryDataForItem) {
92
+ throw `Custom filter (or custom filter item) "${sqlExpParam}" must use the same query for all fields (all fields must use the same OneToMany assoc or OneToMany assoc cannot be used). Please divide your custom filter into more custom filters in form of array [filter1, filter2, ...].`;
93
+ }
94
+ const dbField = xQueryDataForItem.getFieldFromPathField(filterFieldNew);
95
+ sqlExp = sqlExp.replaceAll(match, dbField);
96
+ }
97
+ if (xQueryDataForItem === null) {
98
+ throw `Custom filter (or custom filter item) "${sqlExpParam}" - no field was found. Example of custom filter: [fieldX] = :valueX`;
99
+ }
100
+ return [sqlExp, xQueryDataForItem];
101
+ }
102
+ getDBFieldForPathField(pathField) {
103
+ const [xQueryData, fieldNew] = this.getQueryForPathField(pathField);
104
+ return xQueryData.getFieldFromPathField(fieldNew);
105
+ }
106
+ replacePathField(pathFieldOrPathFieldExp) {
107
+ let sqlExp;
108
+ if (XUtilsCommon.isPathField(pathFieldOrPathFieldExp)) {
109
+ sqlExp = this.getDBFieldForPathField(pathFieldOrPathFieldExp);
110
+ }
111
+ else {
112
+ const [sqlExpWithAliases, xQueryData] = this.replacePathFieldQueryData(pathFieldOrPathFieldExp);
113
+ sqlExp = sqlExpWithAliases;
114
+ }
115
+ return sqlExp;
116
+ }
117
+ getQueryForPathField(pathField) {
118
+ const [field, restPath] = XUtilsCommon.getFieldAndRestPath(pathField);
119
+ if (restPath !== null) {
120
+ const xAssoc = this.xEntityMetadataService.getXAssoc(this.xEntity, field);
121
+ if (xAssoc.relationType === "one-to-many") {
122
+ const xSubQueryData = this.getXSubQueryData(xAssoc);
123
+ return [xSubQueryData, restPath];
124
+ }
125
+ }
126
+ return [this, pathField];
127
+ }
128
+ getXSubQueryData(xAssocOneToMany) {
129
+ const aliasAssocOneToMany = `${this.rootAlias}.${xAssocOneToMany.name}`;
130
+ let xSubQueryData = this.assocXSubQueryDataMap.get(aliasAssocOneToMany);
131
+ if (xSubQueryData === undefined) {
132
+ const aliasSubQuery = "ts" + (this.assocXSubQueryDataMap.size + 1).toString();
133
+ const assocToOneWhereItem = `${aliasSubQuery}.${xAssocOneToMany.inverseAssocName} = ${this.rootAlias}.${this.xEntity.idField}`;
134
+ xSubQueryData = new XSubQueryData(this.xEntityMetadataService, xAssocOneToMany.entityName, aliasSubQuery, assocToOneWhereItem);
135
+ this.assocXSubQueryDataMap.set(aliasAssocOneToMany, xSubQueryData);
136
+ }
137
+ return xSubQueryData;
138
+ }
139
+ createFtsWhereItem(mainQueryBuilderForExistsSubQueries) {
140
+ let ftsWhere = "";
141
+ if (this.fullTextSearch) {
142
+ const ftsValueFromParam = this.fullTextSearch.value;
143
+ let ftsValueList;
144
+ let ftsSeparator;
145
+ if (this.fullTextSearch.splitValue) {
146
+ if (ftsValueFromParam.trim() === '') {
147
+ ftsValueList = [ftsValueFromParam];
148
+ }
149
+ else {
150
+ ftsValueList = ftsValueFromParam.split(' ').filter((value) => value !== '');
151
+ }
152
+ ftsSeparator = XQueryData.xFtsSeparator;
153
+ }
154
+ else {
155
+ ftsValueList = [ftsValueFromParam];
156
+ ftsSeparator = " ";
157
+ }
158
+ for (const ftsValue of ftsValueList) {
159
+ let ftsWhereForValue = this.createFtsWhereItemForQuery(ftsValue, ftsSeparator);
160
+ for (const [assocOneToMany, xSubQueryData] of this.assocXSubQueryDataMap.entries()) {
161
+ ftsWhereForValue = XQueryData.whereItemOr(ftsWhereForValue, xSubQueryData.createFtsWhereItemForSubQuery(mainQueryBuilderForExistsSubQueries, ftsValue, ftsSeparator));
162
+ }
163
+ if (ftsWhereForValue !== "") {
164
+ ftsWhereForValue = `(${ftsWhereForValue})`;
165
+ }
166
+ ftsWhere = XQueryData.whereItemAnd(ftsWhere, ftsWhereForValue);
167
+ }
168
+ }
169
+ return ftsWhere;
170
+ }
171
+ }
172
+ //# sourceMappingURL=XMainQueryData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XMainQueryData.js","sourceRoot":"","sources":["../../src/x-query-data/XMainQueryData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { DataTableFilterMetaData, DataTableOperatorFilterMetaData } from "../serverApi/PrimeFilterSortMeta.js";
2
+ import { ObjectLiteral } from "typeorm";
3
+ import { XEntityMetadataService } from "../services/x-entity-metadata.service.js";
4
+ import { XEntity } from "../serverApi/XEntityMetadata.js";
5
+ export declare abstract class XQueryData {
6
+ xEntityMetadataService: XEntityMetadataService;
7
+ xEntity: XEntity;
8
+ rootAlias: string;
9
+ assocAliasMap: Map<string, string>;
10
+ where: string;
11
+ params: ObjectLiteral;
12
+ ftsFieldList: string[];
13
+ protected constructor(xEntityMetadataService: XEntityMetadataService, entity: string, rootAlias: string);
14
+ abstract isMainQueryData(): boolean;
15
+ isFilterValueNotNull(filterValue: DataTableFilterMetaData | DataTableOperatorFilterMetaData): boolean;
16
+ isFilterItemNotNull(filterItem: DataTableFilterMetaData): boolean;
17
+ addFilterField(filterField: string, filterValue: DataTableFilterMetaData | DataTableOperatorFilterMetaData): void;
18
+ createWhereItem(filterField: string, filterItem: DataTableFilterMetaData, paramIndex: number | undefined): string;
19
+ createWhereItemBaseLike(field: string, not: boolean, paramName: string, paramValue: any): string;
20
+ createWhereItemBase(field: string, sqlOperator: string, paramName: string, paramValue: any): string;
21
+ getFieldFromPathField(pathField: string): string;
22
+ getFieldFromAliasPath(path: string): string;
23
+ getAliasForAssoc(assoc: string): string;
24
+ addDBCastIfNeeded(dbField: string, field: string): string;
25
+ addWhereItem(whereItem: string): void;
26
+ addParams(params: {}): void;
27
+ addFtsField(prefix: string | null, ftsField: string): void;
28
+ static xFtsSeparator: string;
29
+ createFtsWhereItemForQuery(ftsValue: string, ftsSeparator: string): string | "";
30
+ static whereItemAnd(whereItem1: string | "", whereItem2: string | ""): string | "";
31
+ static whereItemOr(whereItem1: string | "", whereItem2: string | ""): string | "";
32
+ static whereItemAndOr(and_or: "AND" | "OR", whereItem1: string | "", whereItem2: string | ""): string | "";
33
+ }
@@ -0,0 +1,242 @@
1
+ import { FilterMatchMode } from "../serverApi/PrimeFilterSortMeta.js";
2
+ import { XUtils } from "../services/XUtils.js";
3
+ import { stringAsDB } from "../serverApi/XUtilsConversions.js";
4
+ import { XEnvVar } from "../services/XEnvVars.js";
5
+ import { XFilterMatchMode } from "../serverApi/index.js";
6
+ export class XQueryData {
7
+ xEntityMetadataService;
8
+ xEntity;
9
+ rootAlias;
10
+ assocAliasMap;
11
+ where;
12
+ params;
13
+ ftsFieldList;
14
+ constructor(xEntityMetadataService, entity, rootAlias) {
15
+ this.xEntityMetadataService = xEntityMetadataService;
16
+ this.xEntity = this.xEntityMetadataService.getXEntity(entity);
17
+ this.rootAlias = rootAlias;
18
+ this.assocAliasMap = new Map();
19
+ this.where = "";
20
+ this.params = {};
21
+ this.ftsFieldList = [];
22
+ }
23
+ isFilterValueNotNull(filterValue) {
24
+ if ('operator' in filterValue) {
25
+ const operatorFilterItem = filterValue;
26
+ for (const [index, filterItem] of operatorFilterItem.constraints.entries()) {
27
+ if (this.isFilterItemNotNull(filterItem)) {
28
+ return true;
29
+ }
30
+ }
31
+ return false;
32
+ }
33
+ else {
34
+ const filterItem = filterValue;
35
+ return this.isFilterItemNotNull(filterItem);
36
+ }
37
+ }
38
+ isFilterItemNotNull(filterItem) {
39
+ return filterItem.value !== null && filterItem.value !== ''
40
+ && !(filterItem.matchMode === FilterMatchMode.BETWEEN && Array.isArray(filterItem.value) && filterItem.value.length === 2 && filterItem.value[0] === null && filterItem.value[1] === null)
41
+ && !(filterItem.matchMode === XFilterMatchMode.X_AUTO_COMPLETE && filterItem.customFilterItems === undefined)
42
+ && !(filterItem.matchMode === XFilterMatchMode.X_FILTER_ELEMENT && filterItem.customFilterItems === undefined);
43
+ }
44
+ addFilterField(filterField, filterValue) {
45
+ let whereItems = "";
46
+ if ('operator' in filterValue) {
47
+ const operatorFilterItem = filterValue;
48
+ const whereOperator = " " + operatorFilterItem.operator.toUpperCase() + " ";
49
+ for (const [index, filterItem] of operatorFilterItem.constraints.entries()) {
50
+ const whereItem = this.createWhereItem(filterField, filterItem, index);
51
+ if (whereItem !== "") {
52
+ if (whereItems !== "") {
53
+ whereItems += whereOperator;
54
+ }
55
+ whereItems += "(" + whereItem + ")";
56
+ }
57
+ }
58
+ }
59
+ else {
60
+ const filterItem = filterValue;
61
+ whereItems = this.createWhereItem(filterField, filterItem, undefined);
62
+ }
63
+ if (whereItems !== "") {
64
+ this.addWhereItem(whereItems);
65
+ }
66
+ }
67
+ createWhereItem(filterField, filterItem, paramIndex) {
68
+ let whereItem = "";
69
+ if (this.isFilterItemNotNull(filterItem)) {
70
+ const dbField = this.getFieldFromPathField(filterField);
71
+ let paramName = dbField;
72
+ if (paramIndex !== undefined) {
73
+ paramName += "_" + paramIndex;
74
+ }
75
+ const field = this.addDBCastIfNeeded(dbField, filterField);
76
+ switch (filterItem.matchMode) {
77
+ case FilterMatchMode.STARTS_WITH:
78
+ whereItem = this.createWhereItemBaseLike(field, false, paramName, `${filterItem.value}%`);
79
+ break;
80
+ case FilterMatchMode.CONTAINS:
81
+ whereItem = this.createWhereItemBaseLike(field, false, paramName, `%${filterItem.value}%`);
82
+ break;
83
+ case FilterMatchMode.NOT_CONTAINS:
84
+ whereItem = this.createWhereItemBaseLike(field, true, paramName, `%${filterItem.value}%`);
85
+ break;
86
+ case FilterMatchMode.ENDS_WITH:
87
+ whereItem = this.createWhereItemBaseLike(field, false, paramName, `%${filterItem.value}`);
88
+ break;
89
+ case FilterMatchMode.EQUALS:
90
+ case FilterMatchMode.DATE_IS:
91
+ whereItem = this.createWhereItemBase(field, "=", paramName, filterItem.value);
92
+ break;
93
+ case FilterMatchMode.NOT_EQUALS:
94
+ case FilterMatchMode.DATE_IS_NOT:
95
+ whereItem = this.createWhereItemBase(field, "<>", paramName, filterItem.value);
96
+ break;
97
+ case FilterMatchMode.IN:
98
+ if (Array.isArray(filterItem.value)) {
99
+ let valueList = filterItem.value;
100
+ if (valueList.length === 0) {
101
+ valueList = [null];
102
+ }
103
+ whereItem = `${field} IN (:...${paramName})`;
104
+ this.params[paramName] = valueList;
105
+ }
106
+ else {
107
+ console.log(`FilterMatchMode "${filterItem.matchMode}": value is expected to be array`);
108
+ }
109
+ break;
110
+ case FilterMatchMode.LESS_THAN:
111
+ case FilterMatchMode.DATE_BEFORE:
112
+ whereItem = this.createWhereItemBase(field, "<", paramName, filterItem.value);
113
+ break;
114
+ case FilterMatchMode.LESS_THAN_OR_EQUAL_TO:
115
+ whereItem = this.createWhereItemBase(field, "<=", paramName, filterItem.value);
116
+ break;
117
+ case FilterMatchMode.GREATER_THAN:
118
+ case FilterMatchMode.DATE_AFTER:
119
+ whereItem = this.createWhereItemBase(field, ">", paramName, filterItem.value);
120
+ break;
121
+ case FilterMatchMode.GREATER_THAN_OR_EQUAL_TO:
122
+ whereItem = this.createWhereItemBase(field, ">=", paramName, filterItem.value);
123
+ break;
124
+ case FilterMatchMode.BETWEEN:
125
+ if (Array.isArray(filterItem.value) && filterItem.value.length === 2) {
126
+ const value1 = filterItem.value[0];
127
+ const value2 = filterItem.value[1];
128
+ const whereItem1 = (value1 !== null ? this.createWhereItemBase(field, ">=", paramName + '_1', value1) : "");
129
+ const whereItem2 = (value2 !== null ? this.createWhereItemBase(field, "<=", paramName + '_2', value2) : "");
130
+ whereItem = XQueryData.whereItemAnd(whereItem1, whereItem2);
131
+ }
132
+ else {
133
+ console.log(`FilterMatchMode "${filterItem.matchMode}": value is expected to be array of length = 2`);
134
+ }
135
+ break;
136
+ default:
137
+ console.log(`FilterMatchMode "${filterItem.matchMode}" not implemented`);
138
+ }
139
+ if (whereItem === "") {
140
+ throw `Unexpected error - function this.isFilterItemNotNull(filterItem) returned true, but whereItem was not created. filterItem = ${JSON.stringify(filterItem)}`;
141
+ }
142
+ }
143
+ return whereItem;
144
+ }
145
+ createWhereItemBaseLike(field, not, paramName, paramValue) {
146
+ const notOperator = not ? "NOT " : "";
147
+ let whereItem;
148
+ if (XUtils.getEnvVarValueBoolean(XEnvVar.X_STRING_DB_SEARCH_AI_CI)) {
149
+ whereItem = `${XUtils.getSchema()}.unaccent(${field}) ${notOperator}ILIKE ${XUtils.getSchema()}.unaccent(:${paramName})`;
150
+ this.params[paramName] = paramValue;
151
+ }
152
+ else {
153
+ whereItem = this.createWhereItemBase(field, `${notOperator}LIKE`, paramName, paramValue);
154
+ }
155
+ return whereItem;
156
+ }
157
+ createWhereItemBase(field, sqlOperator, paramName, paramValue) {
158
+ const whereItem = `${field} ${sqlOperator} :${paramName}`;
159
+ this.params[paramName] = paramValue;
160
+ return whereItem;
161
+ }
162
+ getFieldFromPathField(pathField) {
163
+ return this.getFieldFromAliasPath(this.rootAlias + "." + pathField);
164
+ }
165
+ getFieldFromAliasPath(path) {
166
+ const posDot = path.indexOf(".");
167
+ if (posDot === -1) {
168
+ throw "Unexpected error - path " + path + " has no alias";
169
+ }
170
+ const posDotSecond = path.indexOf(".", posDot + 1);
171
+ if (posDotSecond === -1) {
172
+ return path;
173
+ }
174
+ const assoc = path.substring(0, posDotSecond);
175
+ const remainingPath = path.substring(posDotSecond + 1);
176
+ const aliasForAssoc = this.getAliasForAssoc(assoc);
177
+ return this.getFieldFromAliasPath(aliasForAssoc + "." + remainingPath);
178
+ }
179
+ getAliasForAssoc(assoc) {
180
+ let aliasForAssoc = this.assocAliasMap.get(assoc);
181
+ if (aliasForAssoc === undefined) {
182
+ aliasForAssoc = this.rootAlias + "_" + (this.assocAliasMap.size + 1).toString();
183
+ this.assocAliasMap.set(assoc, aliasForAssoc);
184
+ }
185
+ return aliasForAssoc;
186
+ }
187
+ addDBCastIfNeeded(dbField, field) {
188
+ const xField = this.xEntityMetadataService.getXFieldByPath(this.xEntity, field);
189
+ if (xField.type === "jsonb") {
190
+ dbField = `(${dbField})::VARCHAR`;
191
+ }
192
+ return dbField;
193
+ }
194
+ addWhereItem(whereItem) {
195
+ if (this.where !== "") {
196
+ this.where += " AND ";
197
+ }
198
+ this.where += "(" + whereItem + ")";
199
+ }
200
+ addParams(params) {
201
+ this.params = { ...this.params, ...params };
202
+ }
203
+ addFtsField(prefix, ftsField) {
204
+ const xField = this.xEntityMetadataService.getXFieldByPath(this.xEntity, ftsField);
205
+ let dbCast;
206
+ if (xField.type === "boolean") {
207
+ dbCast = "::INT::VARCHAR";
208
+ }
209
+ else {
210
+ dbCast = "::VARCHAR";
211
+ }
212
+ const dbField = this.getFieldFromPathField(ftsField);
213
+ const dbPrefix = prefix ? `'${prefix}' || ` : ``;
214
+ this.ftsFieldList.push(`coalesce(${dbPrefix}(${dbField})${dbCast}, '')`);
215
+ }
216
+ static xFtsSeparator = '|';
217
+ createFtsWhereItemForQuery(ftsValue, ftsSeparator) {
218
+ let whereItem = "";
219
+ if (this.ftsFieldList.length > 0) {
220
+ const ftsValueDB = stringAsDB(`%${ftsValue}%`);
221
+ whereItem = `${XUtils.getSchema()}.unaccent('${ftsSeparator}' || ${this.ftsFieldList.join(` || '${ftsSeparator}' || `)} || '${ftsSeparator}') ILIKE ${XUtils.getSchema()}.unaccent(${ftsValueDB})`;
222
+ }
223
+ return whereItem;
224
+ }
225
+ static whereItemAnd(whereItem1, whereItem2) {
226
+ return XQueryData.whereItemAndOr("AND", whereItem1, whereItem2);
227
+ }
228
+ static whereItemOr(whereItem1, whereItem2) {
229
+ return XQueryData.whereItemAndOr("OR", whereItem1, whereItem2);
230
+ }
231
+ static whereItemAndOr(and_or, whereItem1, whereItem2) {
232
+ let whereItem;
233
+ if (whereItem1 !== "" && whereItem2 !== "") {
234
+ whereItem = `(${whereItem1} ${and_or} ${whereItem2})`;
235
+ }
236
+ else {
237
+ whereItem = whereItem1 + whereItem2;
238
+ }
239
+ return whereItem;
240
+ }
241
+ }
242
+ //# sourceMappingURL=XQueryData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XQueryData.js","sourceRoot":"","sources":["../../src/x-query-data/XQueryData.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { XQueryData } from "./XQueryData.js";
2
+ import { SelectQueryBuilder } from "typeorm";
3
+ import { XEntityMetadataService } from "../services/x-entity-metadata.service.js";
4
+ export declare class XSubQueryData extends XQueryData {
5
+ assocToOneWhereItem: string;
6
+ constructor(xEntityMetadataService: XEntityMetadataService, entity: string, rootAlias: string, assocToOneWhereItem: string);
7
+ isMainQueryData(): boolean;
8
+ createQueryBuilder(selectQueryBuilder: SelectQueryBuilder<unknown>, selection: string): SelectQueryBuilder<unknown>;
9
+ createQueryBuilderForFts(selectQueryBuilder: SelectQueryBuilder<unknown>, selection: string, ftsValue: string, ftsSeparator: string): SelectQueryBuilder<unknown> | undefined;
10
+ createFtsWhereItemForSubQuery(mainQueryBuilderForExistsSubQueries: SelectQueryBuilder<unknown> | undefined, ftsValue: string, ftsSeparator: string): string | "";
11
+ }
@@ -0,0 +1,52 @@
1
+ import { XQueryData } from "./XQueryData.js";
2
+ export class XSubQueryData extends XQueryData {
3
+ assocToOneWhereItem;
4
+ constructor(xEntityMetadataService, entity, rootAlias, assocToOneWhereItem) {
5
+ super(xEntityMetadataService, entity, rootAlias);
6
+ this.assocToOneWhereItem = assocToOneWhereItem;
7
+ }
8
+ isMainQueryData() {
9
+ return false;
10
+ }
11
+ createQueryBuilder(selectQueryBuilder, selection) {
12
+ const selectSubQueryBuilder = selectQueryBuilder.subQuery();
13
+ selectSubQueryBuilder.select(selection);
14
+ selectSubQueryBuilder.from(this.xEntity.name, this.rootAlias);
15
+ for (const [field, alias] of this.assocAliasMap.entries()) {
16
+ selectSubQueryBuilder.leftJoin(field, alias);
17
+ }
18
+ selectSubQueryBuilder.where(this.assocToOneWhereItem);
19
+ if (this.where !== "") {
20
+ selectSubQueryBuilder.andWhere(this.where, this.params);
21
+ }
22
+ return selectSubQueryBuilder;
23
+ }
24
+ createQueryBuilderForFts(selectQueryBuilder, selection, ftsValue, ftsSeparator) {
25
+ let selectSubQueryBuilder = undefined;
26
+ if (this.ftsFieldList.length > 0) {
27
+ selectSubQueryBuilder = selectQueryBuilder.subQuery();
28
+ selectSubQueryBuilder.select(selection);
29
+ selectSubQueryBuilder.from(this.xEntity.name, this.rootAlias);
30
+ for (const [field, alias] of this.assocAliasMap.entries()) {
31
+ selectSubQueryBuilder.leftJoin(field, alias);
32
+ }
33
+ selectSubQueryBuilder.where(this.assocToOneWhereItem);
34
+ selectSubQueryBuilder.andWhere(this.createFtsWhereItemForQuery(ftsValue, ftsSeparator), {});
35
+ }
36
+ return selectSubQueryBuilder;
37
+ }
38
+ createFtsWhereItemForSubQuery(mainQueryBuilderForExistsSubQueries, ftsValue, ftsSeparator) {
39
+ let where = "";
40
+ if (mainQueryBuilderForExistsSubQueries) {
41
+ const selectSubQueryBuilder = this.createQueryBuilderForFts(mainQueryBuilderForExistsSubQueries, `1`, ftsValue, ftsSeparator);
42
+ if (selectSubQueryBuilder) {
43
+ where = `EXISTS (${selectSubQueryBuilder.getQuery()})`;
44
+ }
45
+ }
46
+ else {
47
+ where = this.createFtsWhereItemForQuery(ftsValue, ftsSeparator);
48
+ }
49
+ return where;
50
+ }
51
+ }
52
+ //# sourceMappingURL=XSubQueryData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XSubQueryData.js","sourceRoot":"","sources":["../../src/x-query-data/XSubQueryData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAI3C,MAAM,OAAO,aAAc,SAAQ,UAAU;IAEzC,mBAAmB,CAAS;IAU5B,YAAY,sBAA8C,EAAE,MAAc,EAAE,SAAiB,EAAE,mBAA2B;QACtH,KAAK,CAAC,sBAAsB,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACnD,CAAC;IAED,eAAe;QACX,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,kBAAkB,CAAC,kBAA+C,EAAE,SAAiB;QACjF,MAAM,qBAAqB,GAAgC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QACzF,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACxC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;YACxD,qBAAqB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE,CAAC;YACpB,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,qBAAqB,CAAC;IACjC,CAAC;IAED,wBAAwB,CAAC,kBAA+C,EAAE,SAAiB,EAAE,QAAgB,EAAE,YAAoB;QAC/H,IAAI,qBAAqB,GAA4C,SAAS,CAAC;QAC/E,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,qBAAqB,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC;YACtD,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9D,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;gBACxD,qBAAqB,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;YACD,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAItD,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,qBAAqB,CAAC;IACjC,CAAC;IAED,6BAA6B,CAAC,mCAA4E,EAAE,QAAgB,EAAE,YAAoB;QAC9I,IAAI,KAAK,GAAgB,EAAE,CAAC;QAC5B,IAAI,mCAAmC,EAAE,CAAC;YAEtC,MAAM,qBAAqB,GAAgC,IAAI,CAAC,wBAAwB,CAAC,mCAAmC,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC3J,IAAI,qBAAqB,EAAE,CAAC;gBACxB,KAAK,GAAG,WAAW,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC3D,CAAC;QACL,CAAC;aACI,CAAC;YACF,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ"}