@rafikidota/iroh 0.22.0 → 0.24.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 (133) hide show
  1. package/dist/common/database/data-source.provider.js.map +1 -0
  2. package/dist/common/database/index.d.ts +3 -0
  3. package/dist/common/database/index.js +3 -0
  4. package/dist/common/database/index.js.map +1 -1
  5. package/dist/common/database/query-builder/constant/index.d.ts +1 -0
  6. package/dist/common/database/query-builder/constant/index.js +18 -0
  7. package/dist/common/database/query-builder/constant/index.js.map +1 -0
  8. package/dist/common/database/query-builder/constant/sql-keys.d.ts +20 -0
  9. package/dist/common/database/query-builder/constant/sql-keys.js +24 -0
  10. package/dist/common/database/query-builder/constant/sql-keys.js.map +1 -0
  11. package/dist/common/database/query-builder/enum/filter.operator.enum.d.ts +20 -0
  12. package/dist/common/database/query-builder/enum/filter.operator.enum.js +25 -0
  13. package/dist/common/database/query-builder/enum/filter.operator.enum.js.map +1 -0
  14. package/dist/common/database/query-builder/enum/index.d.ts +2 -0
  15. package/dist/common/database/query-builder/enum/index.js +19 -0
  16. package/dist/common/database/query-builder/enum/index.js.map +1 -0
  17. package/dist/common/database/query-builder/enum/logical.operator.enum.d.ts +5 -0
  18. package/dist/common/database/query-builder/enum/logical.operator.enum.js +10 -0
  19. package/dist/common/database/query-builder/enum/logical.operator.enum.js.map +1 -0
  20. package/dist/common/database/query-builder/index.d.ts +7 -0
  21. package/dist/common/database/query-builder/index.js +24 -0
  22. package/dist/common/database/query-builder/index.js.map +1 -0
  23. package/dist/common/database/query-builder/options/find.option.d.ts +18 -0
  24. package/dist/common/database/query-builder/options/find.option.js +105 -0
  25. package/dist/common/database/query-builder/options/find.option.js.map +1 -0
  26. package/dist/common/database/query-builder/options/index.d.ts +5 -0
  27. package/dist/common/database/query-builder/options/index.js +22 -0
  28. package/dist/common/database/query-builder/options/index.js.map +1 -0
  29. package/dist/common/database/query-builder/options/order.option.d.ts +4 -0
  30. package/dist/common/database/query-builder/options/order.option.js +3 -0
  31. package/dist/common/database/query-builder/options/order.option.js.map +1 -0
  32. package/dist/common/database/query-builder/options/relation.option.d.ts +4 -0
  33. package/dist/common/database/query-builder/options/relation.option.js +3 -0
  34. package/dist/common/database/query-builder/options/relation.option.js.map +1 -0
  35. package/dist/common/database/query-builder/options/select.option.d.ts +3 -0
  36. package/dist/common/database/query-builder/options/select.option.js +3 -0
  37. package/dist/common/database/query-builder/options/select.option.js.map +1 -0
  38. package/dist/common/database/query-builder/options/where.option.d.ts +33 -0
  39. package/dist/common/database/query-builder/options/where.option.js +3 -0
  40. package/dist/common/database/query-builder/options/where.option.js.map +1 -0
  41. package/dist/common/database/query-builder/query-builder.d.ts +22 -0
  42. package/dist/common/database/query-builder/query-builder.js +105 -0
  43. package/dist/common/database/query-builder/query-builder.js.map +1 -0
  44. package/dist/common/database/query-builder/query-builder.module.d.ts +2 -0
  45. package/dist/common/database/query-builder/query-builder.module.js +31 -0
  46. package/dist/common/database/query-builder/query-builder.module.js.map +1 -0
  47. package/dist/common/database/query-builder/query-builder.provider.d.ts +26 -0
  48. package/dist/common/database/query-builder/query-builder.provider.js +126 -0
  49. package/dist/common/database/query-builder/query-builder.provider.js.map +1 -0
  50. package/dist/common/database/query-builder/query-form.d.ts +10 -0
  51. package/dist/common/database/query-builder/query-form.js +3 -0
  52. package/dist/common/database/query-builder/query-form.js.map +1 -0
  53. package/dist/common/database/query-builder/utils/add-and-operator.util.d.ts +2 -0
  54. package/dist/common/database/query-builder/utils/add-and-operator.util.js +26 -0
  55. package/dist/common/database/query-builder/utils/add-and-operator.util.js.map +1 -0
  56. package/dist/common/database/query-builder/utils/add-equal-operator.util.d.ts +2 -0
  57. package/dist/common/database/query-builder/utils/add-equal-operator.util.js +25 -0
  58. package/dist/common/database/query-builder/utils/add-equal-operator.util.js.map +1 -0
  59. package/dist/common/database/query-builder/utils/build-sql-where.util.d.ts +5 -0
  60. package/dist/common/database/query-builder/utils/build-sql-where.util.js +100 -0
  61. package/dist/common/database/query-builder/utils/build-sql-where.util.js.map +1 -0
  62. package/dist/common/database/query-builder/utils/convert-to-dot-notation.util.d.ts +1 -0
  63. package/dist/common/database/query-builder/utils/convert-to-dot-notation.util.js +30 -0
  64. package/dist/common/database/query-builder/utils/convert-to-dot-notation.util.js.map +1 -0
  65. package/dist/common/database/query-builder/utils/format-where.util.d.ts +2 -0
  66. package/dist/common/database/query-builder/utils/format-where.util.js +14 -0
  67. package/dist/common/database/query-builder/utils/format-where.util.js.map +1 -0
  68. package/dist/common/database/query-builder/utils/map-to-and-conditions.utils.d.ts +5 -0
  69. package/dist/common/database/query-builder/utils/map-to-and-conditions.utils.js +12 -0
  70. package/dist/common/database/query-builder/utils/map-to-and-conditions.utils.js.map +1 -0
  71. package/dist/common/database/query-builder/utils/qet-prop-selection.utils.d.ts +2 -0
  72. package/dist/common/database/query-builder/utils/qet-prop-selection.utils.js +25 -0
  73. package/dist/common/database/query-builder/utils/qet-prop-selection.utils.js.map +1 -0
  74. package/dist/common/database/query-builder/utils/qet-truthy-props.utils.d.ts +3 -0
  75. package/dist/common/database/query-builder/utils/qet-truthy-props.utils.js +10 -0
  76. package/dist/common/database/query-builder/utils/qet-truthy-props.utils.js.map +1 -0
  77. package/dist/common/database/query-builder/utils/query-builder.util.d.ts +13 -0
  78. package/dist/common/database/query-builder/utils/query-builder.util.js +31 -0
  79. package/dist/common/database/query-builder/utils/query-builder.util.js.map +1 -0
  80. package/dist/common/database/query-builder/utils/translate-query.utill.d.ts +4 -0
  81. package/dist/common/database/query-builder/utils/translate-query.utill.js +45 -0
  82. package/dist/common/database/query-builder/utils/translate-query.utill.js.map +1 -0
  83. package/dist/common/database/typeorm-connection.provider.js.map +1 -0
  84. package/dist/common/database/typeorm-unit-of-work/index.d.ts +0 -2
  85. package/dist/common/database/typeorm-unit-of-work/index.js +0 -2
  86. package/dist/common/database/typeorm-unit-of-work/index.js.map +1 -1
  87. package/dist/common/database/typeorm-unit-of-work/typeorm-unit-of-work.module.js +2 -2
  88. package/dist/common/database/typeorm-unit-of-work/typeorm-unit-of-work.module.js.map +1 -1
  89. package/dist/common/decorators/generic-get-by-id.decorator.js +4 -1
  90. package/dist/common/decorators/generic-get-by-id.decorator.js.map +1 -1
  91. package/dist/common/decorators/generic-get.decorator.js +4 -1
  92. package/dist/common/decorators/generic-get.decorator.js.map +1 -1
  93. package/dist/common/decorators/index.d.ts +1 -0
  94. package/dist/common/decorators/index.js +1 -0
  95. package/dist/common/decorators/index.js.map +1 -1
  96. package/dist/common/decorators/query-option.decorator.d.ts +1 -0
  97. package/dist/common/decorators/query-option.decorator.js +9 -0
  98. package/dist/common/decorators/query-option.decorator.js.map +1 -0
  99. package/dist/common/dto/search.dto.d.ts +5 -0
  100. package/dist/common/dto/search.dto.js +31 -1
  101. package/dist/common/dto/search.dto.js.map +1 -1
  102. package/dist/common/interceptors/index.d.ts +1 -0
  103. package/dist/common/interceptors/index.js +1 -0
  104. package/dist/common/interceptors/index.js.map +1 -1
  105. package/dist/common/interceptors/query.options.interceptor.d.ts +8 -0
  106. package/dist/common/interceptors/query.options.interceptor.js +31 -0
  107. package/dist/common/interceptors/query.options.interceptor.js.map +1 -0
  108. package/dist/common/interfaces/crud.controller.d.ts +3 -2
  109. package/dist/common/interfaces/crud.repository.d.ts +2 -2
  110. package/dist/common/interfaces/crud.service.d.ts +2 -2
  111. package/dist/common/parsers/index.d.ts +1 -0
  112. package/dist/common/parsers/index.js +18 -0
  113. package/dist/common/parsers/index.js.map +1 -0
  114. package/dist/common/parsers/query.parser.d.ts +10 -0
  115. package/dist/common/parsers/query.parser.js +40 -0
  116. package/dist/common/parsers/query.parser.js.map +1 -0
  117. package/dist/core/domain/generic.domain.factory.d.ts +1 -0
  118. package/dist/core/domain/generic.domain.factory.js +5 -0
  119. package/dist/core/domain/generic.domain.factory.js.map +1 -1
  120. package/dist/core/infra/iroh.repository.d.ts +7 -2
  121. package/dist/core/infra/iroh.repository.js +36 -28
  122. package/dist/core/infra/iroh.repository.js.map +1 -1
  123. package/dist/core/iroh.controller.js +3 -1
  124. package/dist/core/iroh.controller.js.map +1 -1
  125. package/dist/core/iroh.service.d.ts +2 -2
  126. package/dist/core/iroh.service.js.map +1 -1
  127. package/package.json +12 -12
  128. package/dist/common/database/typeorm-unit-of-work/data-source.provider.js.map +0 -1
  129. package/dist/common/database/typeorm-unit-of-work/typeorm-connection.provider.js.map +0 -1
  130. /package/dist/common/database/{typeorm-unit-of-work/data-source.provider.d.ts → data-source.provider.d.ts} +0 -0
  131. /package/dist/common/database/{typeorm-unit-of-work/data-source.provider.js → data-source.provider.js} +0 -0
  132. /package/dist/common/database/{typeorm-unit-of-work/typeorm-connection.provider.d.ts → typeorm-connection.provider.d.ts} +0 -0
  133. /package/dist/common/database/{typeorm-unit-of-work/typeorm-connection.provider.js → typeorm-connection.provider.js} +0 -0
@@ -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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.QueryBuilderModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const common_2 = require("@nestjs/common");
12
+ const config_1 = require("@nestjs/config");
13
+ const data_source_provider_1 = require("../data-source.provider");
14
+ const query_builder_provider_1 = require("./query-builder.provider");
15
+ const typeorm_connection_provider_1 = require("../typeorm-connection.provider");
16
+ let QueryBuilderModule = class QueryBuilderModule {
17
+ };
18
+ exports.QueryBuilderModule = QueryBuilderModule;
19
+ exports.QueryBuilderModule = QueryBuilderModule = __decorate([
20
+ (0, common_1.Global)(),
21
+ (0, common_2.Module)({
22
+ imports: [
23
+ config_1.ConfigModule.forRoot({
24
+ isGlobal: true,
25
+ }),
26
+ ],
27
+ providers: [data_source_provider_1.DataSourceProvider, query_builder_provider_1.QueryBuilderService, typeorm_connection_provider_1.TypeOrmConnection],
28
+ exports: [data_source_provider_1.DataSourceProvider, query_builder_provider_1.QueryBuilderService, typeorm_connection_provider_1.TypeOrmConnection],
29
+ })
30
+ ], QueryBuilderModule);
31
+ //# sourceMappingURL=query-builder.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.module.js","sourceRoot":"","sources":["../../../../src/common/database/query-builder/query-builder.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2CAAwC;AACxC,2CAA8C;AAE9C,kEAA6D;AAC7D,qEAA+D;AAC/D,gFAAmE;AAY5D,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAG,CAAA;AAArB,gDAAkB;6BAAlB,kBAAkB;IAV9B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,qBAAY,CAAC,OAAO,CAAC;gBACnB,QAAQ,EAAE,IAAI;aACf,CAAC;SACH;QACD,SAAS,EAAE,CAAC,yCAAkB,EAAE,4CAAmB,EAAE,+CAAiB,CAAC;QACvE,OAAO,EAAE,CAAC,yCAAkB,EAAE,4CAAmB,EAAE,+CAAiB,CAAC;KACtE,CAAC;GACW,kBAAkB,CAAG"}
@@ -0,0 +1,26 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { DataSource } from 'typeorm';
3
+ import { QueryForm } from './query-form';
4
+ import { SelectOption } from './options/select.option';
5
+ import { RelationOption } from './options/relation.option';
6
+ import { WhereOption } from './options/where.option';
7
+ import { OrderOption } from './options/order.option';
8
+ export declare class QueryBuilderService<T> {
9
+ private readonly dataSource;
10
+ private alias;
11
+ private builder;
12
+ private Entity;
13
+ constructor(dataSource: DataSource);
14
+ from(Entity: Type<T>): void;
15
+ addOptions(form: QueryForm<T>): void;
16
+ getMany(): Promise<T[]>;
17
+ getOne(): Promise<T>;
18
+ getCount(): Promise<number>;
19
+ getSql(): string;
20
+ addRelations(relations: RelationOption<T>, alias?: string): void;
21
+ addSelect(options: SelectOption<T>, alias?: string): void;
22
+ addWhere(whereOptions: WhereOption<T>, alias?: string): void;
23
+ addOrder(orderOptions: OrderOption<T>, alias?: string): void;
24
+ addLimit(limit: number): void;
25
+ addOffset(offset: number): void;
26
+ }
@@ -0,0 +1,126 @@
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.QueryBuilderService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const typeorm_1 = require("typeorm");
15
+ const query_builder_util_1 = require("./utils/query-builder.util");
16
+ let QueryBuilderService = class QueryBuilderService {
17
+ constructor(dataSource) {
18
+ this.dataSource = dataSource;
19
+ this.alias = 'alias';
20
+ }
21
+ from(Entity) {
22
+ this.Entity = Entity;
23
+ this.builder = this.dataSource
24
+ .createQueryBuilder()
25
+ .from(this.Entity, this.alias);
26
+ }
27
+ addOptions(form) {
28
+ if (typeof form.relations === 'object') {
29
+ this.addRelations(form.relations);
30
+ }
31
+ const selectOptions = query_builder_util_1.QueryBuilderUtil.getPropSelection(form.relations, form.select);
32
+ this.addSelect(selectOptions);
33
+ if (typeof form.where === 'object') {
34
+ this.addWhere(form.where);
35
+ }
36
+ if (typeof form.order === 'object') {
37
+ this.addOrder(form.order);
38
+ }
39
+ }
40
+ getMany() {
41
+ return this.builder.getMany();
42
+ }
43
+ getOne() {
44
+ return this.builder.getOne();
45
+ }
46
+ getCount() {
47
+ return this.builder.getCount();
48
+ }
49
+ getSql() {
50
+ return this.builder.getSql();
51
+ }
52
+ addRelations(relations, alias = this.alias) {
53
+ for (const [key, value] of Object.entries(relations)) {
54
+ const newAlias = `${alias}_${key}`;
55
+ if (value === true) {
56
+ this.builder.leftJoin(`${alias}.${key}`, newAlias);
57
+ continue;
58
+ }
59
+ if (typeof value === 'object' && value !== null) {
60
+ this.builder.leftJoin(`${alias}.${key}`, newAlias);
61
+ this.addRelations(value, newAlias);
62
+ }
63
+ }
64
+ }
65
+ addSelect(options, alias = this.alias) {
66
+ const values = Object.values(options);
67
+ const all = values.every((value) => value !== true);
68
+ if (all) {
69
+ this.builder.addSelect(alias);
70
+ }
71
+ for (const prop in options) {
72
+ const value = options[prop];
73
+ const isObject = typeof value === 'object';
74
+ switch (true) {
75
+ case isObject:
76
+ {
77
+ const newAlias = `${alias}_${prop}`;
78
+ this.addSelect(value, newAlias);
79
+ }
80
+ break;
81
+ case value === true:
82
+ this.builder.addSelect(`${alias}.${prop}`);
83
+ break;
84
+ default:
85
+ break;
86
+ }
87
+ }
88
+ }
89
+ addWhere(whereOptions, alias = this.alias) {
90
+ const params = {};
91
+ const where = query_builder_util_1.QueryBuilderUtil.formatWhere(whereOptions);
92
+ const sqlScript = query_builder_util_1.QueryBuilderUtil.buildSQLWhere(alias, where, params);
93
+ this.builder.where(sqlScript).setParameters(params);
94
+ }
95
+ addOrder(orderOptions, alias = this.alias) {
96
+ const orderTypes = ['ASC', 'DESC'];
97
+ for (const field in orderOptions) {
98
+ const orderField = orderOptions[field];
99
+ if (orderField) {
100
+ if (typeof orderField === 'object') {
101
+ const newAlias = `${alias}_${field}`;
102
+ this.addOrder(orderOptions[field], newAlias);
103
+ }
104
+ else if (orderTypes.includes(orderField)) {
105
+ this.builder.addOrderBy(`${alias}.${field}`, orderField);
106
+ }
107
+ }
108
+ }
109
+ }
110
+ addLimit(limit) {
111
+ if (limit) {
112
+ this.builder.limit(Number(limit));
113
+ }
114
+ }
115
+ addOffset(offset) {
116
+ if (offset) {
117
+ this.builder.offset(Number(offset));
118
+ }
119
+ }
120
+ };
121
+ exports.QueryBuilderService = QueryBuilderService;
122
+ exports.QueryBuilderService = QueryBuilderService = __decorate([
123
+ (0, common_1.Injectable)(),
124
+ __metadata("design:paramtypes", [typeorm_1.DataSource])
125
+ ], QueryBuilderService);
126
+ //# sourceMappingURL=query-builder.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.provider.js","sourceRoot":"","sources":["../../../../src/common/database/query-builder/query-builder.provider.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAE5C,qCAAqC;AAQrC,mEAA8D;AAGvD,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAK9B,YAA6B,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;QAJ3C,UAAK,GAAW,OAAO,CAAC;IAIsB,CAAC;IAEhD,IAAI,CAAC,MAAe;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU;aAC3B,kBAAkB,EAAE;aACpB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,UAAU,CAAC,IAAkB;QAClC,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,aAAa,GAAG,qCAAgB,CAAC,gBAAgB,CACrD,IAAI,CAAC,SAA4B,EACjC,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAE9B,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAEM,YAAY,CACjB,SAA4B,EAC5B,QAAgB,IAAI,CAAC,KAAK;QAE1B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC;YACnC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACnD,SAAS;YACX,CAAC;YACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACnD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAEM,SAAS,CAAC,OAAwB,EAAE,QAAgB,IAAI,CAAC,KAAK;QACnE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QACpD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;YAC3C,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,QAAQ;oBACX,CAAC;wBACC,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;wBACpC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAClC,CAAC;oBACD,MAAM;gBACR,KAAK,KAAK,KAAK,IAAI;oBACjB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;oBAC3C,MAAM;gBACR;oBACE,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;IAEM,QAAQ,CAAC,YAA4B,EAAE,QAAgB,IAAI,CAAC,KAAK;QACtE,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,qCAAgB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,qCAAgB,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAEM,QAAQ,CAAC,YAA4B,EAAE,QAAgB,IAAI,CAAC,KAAK;QACtE,MAAM,UAAU,GAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;oBACnC,MAAM,QAAQ,GAAG,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC;oBACrC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAQ,EAAE,QAAQ,CAAC,CAAC;gBACtD,CAAC;qBAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEM,QAAQ,CAAC,KAAa;QAC3B,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAEM,SAAS,CAAC,MAAc;QAC7B,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF,CAAA;AA7HY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCAM8B,oBAAU;GALxC,mBAAmB,CA6H/B"}
@@ -0,0 +1,10 @@
1
+ import { SelectOption } from './options/select.option';
2
+ import { RelationOption } from './options/relation.option';
3
+ import { WhereOption } from './options/where.option';
4
+ import { OrderOption } from './options/order.option';
5
+ export interface QueryForm<T> {
6
+ select?: SelectOption<T>;
7
+ relations?: RelationOption<T>;
8
+ where?: WhereOption<T>;
9
+ order?: OrderOption<T>;
10
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=query-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-form.js","sourceRoot":"","sources":["../../../../src/common/database/query-builder/query-form.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { WhereOption } from '../options';
2
+ export declare const addAndOperator: (query: WhereOption) => WhereOption;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addAndOperator = void 0;
4
+ const enum_1 = require("../enum");
5
+ const map_to_and_conditions_utils_1 = require("./map-to-and-conditions.utils");
6
+ const addAndOperator = (query) => {
7
+ const data = (0, map_to_and_conditions_utils_1.mapToAndConditions)(query);
8
+ for (const [index, temp] of data.$and.entries()) {
9
+ const root = Object.keys(temp)[0];
10
+ if (root === enum_1.Op.and || root === enum_1.Op.or) {
11
+ if (!Array.isArray(temp[root]))
12
+ throw new Error(`${root} Should be an array`);
13
+ for (const [indexB, item] of temp[root].entries()) {
14
+ data.$and[index][root][indexB] = (0, exports.addAndOperator)(item);
15
+ }
16
+ }
17
+ else if (root === enum_1.Op.not) {
18
+ data.$and[index] = {
19
+ [root]: (0, exports.addAndOperator)(temp[root]),
20
+ };
21
+ }
22
+ }
23
+ return data;
24
+ };
25
+ exports.addAndOperator = addAndOperator;
26
+ //# sourceMappingURL=add-and-operator.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-and-operator.util.js","sourceRoot":"","sources":["../../../../../src/common/database/query-builder/utils/add-and-operator.util.ts"],"names":[],"mappings":";;;AAAA,kCAA6B;AAE7B,+EAAmE;AAE5D,MAAM,cAAc,GAAG,CAAC,KAAkB,EAAe,EAAE;IAChE,MAAM,IAAI,GAAG,IAAA,gDAAkB,EAAC,KAAK,CAAC,CAAC;IACvC,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAO,CAAC;QACxC,IAAI,IAAI,KAAK,SAAE,CAAC,GAAG,IAAI,IAAI,KAAK,SAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,qBAAqB,CAAC,CAAC;YAEhD,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;gBAClD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,CAAC;YACxD,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,KAAK,SAAE,CAAC,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;gBACjB,CAAC,IAAI,CAAC,EAAE,IAAA,sBAAc,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACnC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAlBW,QAAA,cAAc,kBAkBzB"}
@@ -0,0 +1,2 @@
1
+ import { WhereOption } from '../options/where.option';
2
+ export declare const addEqualOperator: (query: WhereOption) => WhereOption;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addEqualOperator = void 0;
4
+ const addEqualOperator = (query) => {
5
+ if (Array.isArray(query)) {
6
+ for (const [queryIndex] of query.entries()) {
7
+ query[queryIndex] = (0, exports.addEqualOperator)(query[queryIndex]);
8
+ }
9
+ }
10
+ else if (typeof query === 'object' && query !== null) {
11
+ for (const field in query) {
12
+ if (typeof query[field] === 'object') {
13
+ query[field] = (0, exports.addEqualOperator)(query[field]);
14
+ }
15
+ else if (!field.startsWith('$')) {
16
+ query[field] = {
17
+ $eq: query[field],
18
+ };
19
+ }
20
+ }
21
+ }
22
+ return query;
23
+ };
24
+ exports.addEqualOperator = addEqualOperator;
25
+ //# sourceMappingURL=add-equal-operator.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-equal-operator.util.js","sourceRoot":"","sources":["../../../../../src/common/database/query-builder/utils/add-equal-operator.util.ts"],"names":[],"mappings":";;;AAEO,MAAM,gBAAgB,GAAG,CAAC,KAAkB,EAAe,EAAE;IAElE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAEzB,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YAE3C,KAAK,CAAC,UAAU,CAAC,GAAG,IAAA,wBAAgB,EAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAEvD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAE1B,IAAI,OAAO,KAAK,CAAC,KAA0B,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACzD,KAA6B,CAAC,KAAK,CAAC,GAAG,IAAA,wBAAgB,EACtD,KAAK,CAAC,KAA0B,CAAC,CAClC,CAAC;YAGJ,CAAC;iBAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAEjC,KAA6B,CAAC,KAAK,CAAC,GAAG;oBACtC,GAAG,EAAE,KAAK,CAAC,KAA0B,CAAC;iBACvC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AA3BW,QAAA,gBAAgB,oBA2B3B"}
@@ -0,0 +1,5 @@
1
+ export declare const buildSQLWhere: (alias: string, query: any, params: any) => string;
2
+ export declare const createPath: (alias: string, key: string) => string;
3
+ export declare const generateFieldComparison: (path: string, op: string, value: any, params: any[]) => string;
4
+ export declare const createParamKey: (path: string, op: string) => string;
5
+ export declare const mapParam: (sqlKey: string, paramKey: string) => string;
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapParam = exports.createParamKey = exports.generateFieldComparison = exports.createPath = exports.buildSQLWhere = void 0;
4
+ const constant_1 = require("../constant");
5
+ const enum_1 = require("../enum");
6
+ const buildSQLWhere = (alias, query, params) => {
7
+ if (!query)
8
+ return '';
9
+ let queryString = '';
10
+ if (query.$and) {
11
+ const andQueries = query.$and
12
+ .map((query) => (0, exports.buildSQLWhere)(alias, query, params))
13
+ .filter(Boolean);
14
+ if (andQueries.length > 0) {
15
+ queryString += '(' + andQueries.join(' AND ') + ')';
16
+ }
17
+ }
18
+ if (query.$or) {
19
+ const orQueries = query.$or
20
+ .map((query) => (0, exports.buildSQLWhere)(alias, query, params))
21
+ .filter(Boolean);
22
+ if (queryString) {
23
+ queryString += ' AND ';
24
+ }
25
+ if (orQueries.length > 0) {
26
+ queryString += '(' + orQueries.join(' OR ') + ')';
27
+ }
28
+ }
29
+ if (query.$not) {
30
+ const notQuery = (0, exports.buildSQLWhere)(alias, query.$not, params);
31
+ if (queryString) {
32
+ queryString += ' AND ';
33
+ }
34
+ queryString += 'NOT (' + notQuery + ')';
35
+ }
36
+ const key = Object.keys(query)[0];
37
+ if (key.charAt(0) !== '$') {
38
+ const value = query[key];
39
+ if (queryString) {
40
+ queryString += ' AND ';
41
+ }
42
+ if (typeof value === 'object') {
43
+ const op = Object.keys(value)[0];
44
+ const path = (0, exports.createPath)(alias, key);
45
+ queryString += (0, exports.generateFieldComparison)(path, op, value, params);
46
+ }
47
+ }
48
+ return queryString;
49
+ };
50
+ exports.buildSQLWhere = buildSQLWhere;
51
+ const createPath = (alias, key) => {
52
+ const parts = key.split('.');
53
+ return parts[1]
54
+ ? (0, exports.createPath)(`${alias}_${parts[0]}`, parts.slice(1).join('.'))
55
+ : `"${alias}"."${parts[0]}"`;
56
+ };
57
+ exports.createPath = createPath;
58
+ const generateFieldComparison = (path, op, value, params) => {
59
+ const castedOp = op;
60
+ const sqlKey = constant_1.SQLKey[op];
61
+ if (!sqlKey)
62
+ throw new Error(`comand ${op} not found`);
63
+ if (castedOp === enum_1.FilterOperator.between ||
64
+ castedOp === enum_1.FilterOperator.nbetween) {
65
+ const values = value[op];
66
+ if (!Array.isArray(values) || values.length !== 2)
67
+ throw Error('Expected an array but received [].length = 2 a different data type');
68
+ const props = values.map((value, index) => ({
69
+ paramKey: `${(0, exports.createParamKey)(path, op)}_${index}`,
70
+ value: value,
71
+ }));
72
+ props.forEach((prop) => {
73
+ params[prop.paramKey] = prop.value;
74
+ });
75
+ return `${path} ${sqlKey} ${(0, exports.mapParam)(op, props[0].paramKey)} AND ${(0, exports.mapParam)(op, props[1].paramKey)}`;
76
+ }
77
+ else if (castedOp === enum_1.FilterOperator.isnull ||
78
+ castedOp === enum_1.FilterOperator.notnull) {
79
+ return `${path} ${sqlKey}`;
80
+ }
81
+ else {
82
+ const paramKey = (0, exports.createParamKey)(path, op);
83
+ params[paramKey] = value[op];
84
+ return `${path} ${sqlKey} ${(0, exports.mapParam)(op, paramKey)}`;
85
+ }
86
+ };
87
+ exports.generateFieldComparison = generateFieldComparison;
88
+ const createParamKey = (path, op) => {
89
+ return `${path.replace('.', '_').replaceAll('"', '')}_${op.replaceAll('$', '')}_${crypto.randomUUID().replaceAll('-', '')}`;
90
+ };
91
+ exports.createParamKey = createParamKey;
92
+ const mapParam = (sqlKey, paramKey) => {
93
+ const options = {
94
+ $in: `(:...${paramKey})`,
95
+ $nin: `(:...${paramKey})`,
96
+ };
97
+ return options[sqlKey] || `:${paramKey}`;
98
+ };
99
+ exports.mapParam = mapParam;
100
+ //# sourceMappingURL=build-sql-where.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-sql-where.util.js","sourceRoot":"","sources":["../../../../../src/common/database/query-builder/utils/build-sql-where.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const convertToDotNotation: (obj: any) => any[];
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertToDotNotation = void 0;
4
+ const convertToDotNotation = (obj) => {
5
+ const result = [];
6
+ for (const field in obj) {
7
+ if (Object.prototype.hasOwnProperty.call(obj, field)) {
8
+ const valor = obj[field];
9
+ if (typeof valor === 'object' &&
10
+ !Array.isArray(valor) &&
11
+ !field.startsWith('$')) {
12
+ const subResult = (0, exports.convertToDotNotation)(valor);
13
+ subResult.forEach((sub) => {
14
+ const key = Object.keys(sub)[0];
15
+ const value = sub[key];
16
+ const payload = key.startsWith('$')
17
+ ? { [field]: sub }
18
+ : { [`${field}.${key}`]: value };
19
+ result.push(payload);
20
+ });
21
+ }
22
+ else {
23
+ result.push({ [`${field}`]: valor });
24
+ }
25
+ }
26
+ }
27
+ return result;
28
+ };
29
+ exports.convertToDotNotation = convertToDotNotation;
30
+ //# sourceMappingURL=convert-to-dot-notation.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-to-dot-notation.util.js","sourceRoot":"","sources":["../../../../../src/common/database/query-builder/utils/convert-to-dot-notation.util.ts"],"names":[],"mappings":";;;AAAO,MAAM,oBAAoB,GAAG,CAAC,GAAQ,EAAS,EAAE;IACtD,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;YACrD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YACzB,IACE,OAAO,KAAK,KAAK,QAAQ;gBACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACrB,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EACtB,CAAC;gBAED,MAAM,SAAS,GAAG,IAAA,4BAAoB,EAAC,KAAK,CAAC,CAAC;gBAC9C,SAAS,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;oBACxB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;wBACjC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE;wBAClB,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;oBAEnC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBAGN,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA/BW,QAAA,oBAAoB,wBA+B/B"}
@@ -0,0 +1,2 @@
1
+ import { WhereOption } from '../options';
2
+ export declare const formatWhere: <T>(query: WhereOption<T>) => WhereOption<T>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatWhere = void 0;
4
+ const add_and_operator_util_1 = require("./add-and-operator.util");
5
+ const add_equal_operator_util_1 = require("./add-equal-operator.util");
6
+ const translate_query_utill_1 = require("./translate-query.utill");
7
+ const formatWhere = (query) => {
8
+ const whithEqual = (0, add_equal_operator_util_1.addEqualOperator)(query);
9
+ const whithAnd = (0, add_and_operator_util_1.addAndOperator)(whithEqual);
10
+ const result = (0, translate_query_utill_1.translateQuery)(whithAnd);
11
+ return result;
12
+ };
13
+ exports.formatWhere = formatWhere;
14
+ //# sourceMappingURL=format-where.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-where.util.js","sourceRoot":"","sources":["../../../../../src/common/database/query-builder/utils/format-where.util.ts"],"names":[],"mappings":";;;AACA,mEAAyD;AACzD,uEAA6D;AAC7D,mEAAyD;AAElD,MAAM,WAAW,GAAG,CAAI,KAAqB,EAAkB,EAAE;IACtE,MAAM,UAAU,GAAG,IAAA,0CAAgB,EAAC,KAAK,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,IAAA,sCAAc,EAAC,UAAU,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAA,sCAAc,EAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AALW,QAAA,WAAW,eAKtB"}
@@ -0,0 +1,5 @@
1
+ import { Op } from '../enum';
2
+ export type AndCondition = {
3
+ [Op.and]: any[];
4
+ };
5
+ export declare const mapToAndConditions: (query: any) => AndCondition;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapToAndConditions = void 0;
4
+ const enum_1 = require("../enum");
5
+ const mapToAndConditions = (query) => {
6
+ const andArray = Object.entries(query).map(([key, value]) => ({
7
+ [key]: value,
8
+ }));
9
+ return { [enum_1.Op.and]: andArray };
10
+ };
11
+ exports.mapToAndConditions = mapToAndConditions;
12
+ //# sourceMappingURL=map-to-and-conditions.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"map-to-and-conditions.utils.js","sourceRoot":"","sources":["../../../../../src/common/database/query-builder/utils/map-to-and-conditions.utils.ts"],"names":[],"mappings":";;;AAAA,kCAA6B;AAGtB,MAAM,kBAAkB,GAAG,CAAC,KAAU,EAAgB,EAAE;IAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC,GAAG,CAAC,EAAE,KAAK;KACb,CAAC,CAAC,CAAC;IACJ,OAAO,EAAE,CAAC,SAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;AAChC,CAAC,CAAC;AALW,QAAA,kBAAkB,sBAK7B"}
@@ -0,0 +1,2 @@
1
+ import { SelectOption } from '../options';
2
+ export declare const getPropSelection: <T>(relation?: SelectOption<T>, select?: SelectOption<T>) => SelectOption<T>;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPropSelection = void 0;
4
+ const qet_truthy_props_utils_1 = require("./qet-truthy-props.utils");
5
+ const getPropSelection = (relation = {}, select = {}) => {
6
+ for (const field in relation) {
7
+ const relationValue = relation[field];
8
+ const selectValue = select[field];
9
+ if (!relationValue)
10
+ continue;
11
+ const isRelationObject = typeof relationValue === 'object';
12
+ const isSelectObject = typeof selectValue === 'object';
13
+ if (isRelationObject) {
14
+ relation[field] = (0, exports.getPropSelection)(relationValue, selectValue);
15
+ }
16
+ else if (relationValue === true) {
17
+ relation[field] = isSelectObject
18
+ ? (0, qet_truthy_props_utils_1.getTruthyProps)(selectValue)
19
+ : {};
20
+ }
21
+ }
22
+ return { ...relation, ...(0, qet_truthy_props_utils_1.getTruthyProps)(select) };
23
+ };
24
+ exports.getPropSelection = getPropSelection;
25
+ //# sourceMappingURL=qet-prop-selection.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qet-prop-selection.utils.js","sourceRoot":"","sources":["../../../../../src/common/database/query-builder/utils/qet-prop-selection.utils.ts"],"names":[],"mappings":";;;AACA,qEAA0D;AAEnD,MAAM,gBAAgB,GAAG,CAC9B,WAA4B,EAAE,EAC9B,SAA0B,EAAE,EACX,EAAE;IACnB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAElC,IAAI,CAAC,aAAa;YAAE,SAAS;QAE7B,MAAM,gBAAgB,GAAG,OAAO,aAAa,KAAK,QAAQ,CAAC;QAC3D,MAAM,cAAc,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC;QAEvD,IAAI,gBAAgB,EAAE,CAAC;YACrB,QAAQ,CAAC,KAAK,CAAC,GAAG,IAAA,wBAAgB,EAChC,aAAa,EACb,WAAkB,CACZ,CAAC;QACX,CAAC;aAAM,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YAClC,QAAQ,CAAC,KAAK,CAAC,GAAG,cAAc;gBAC9B,CAAC,CAAE,IAAA,uCAAc,EAAC,WAAW,CAAS;gBACtC,CAAC,CAAE,EAAU,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAA,uCAAc,EAAC,MAAM,CAAC,EAAE,CAAC;AACpD,CAAC,CAAC;AA1BW,QAAA,gBAAgB,oBA0B3B"}
@@ -0,0 +1,3 @@
1
+ export declare const getTruthyProps: (obj: any) => {
2
+ [k: string]: unknown;
3
+ };
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTruthyProps = void 0;
4
+ const getTruthyProps = (obj) => {
5
+ if (!obj)
6
+ return {};
7
+ return Object.fromEntries(Object.entries(obj).filter(([, value]) => value === true));
8
+ };
9
+ exports.getTruthyProps = getTruthyProps;
10
+ //# sourceMappingURL=qet-truthy-props.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qet-truthy-props.utils.js","sourceRoot":"","sources":["../../../../../src/common/database/query-builder/utils/qet-truthy-props.utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,cAAc,GAAG,CAAC,GAAQ,EAAE,EAAE;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAC1D,CAAC;AACJ,CAAC,CAAC;AALW,QAAA,cAAc,kBAKzB"}
@@ -0,0 +1,13 @@
1
+ import { SelectOption } from '../options';
2
+ import { WhereOption } from '../options';
3
+ import { AndCondition } from './map-to-and-conditions.utils';
4
+ export declare class QueryBuilderUtil {
5
+ static mapToAndConditions(query: any): AndCondition;
6
+ static getTruthyProps(obj: any): {
7
+ [k: string]: unknown;
8
+ };
9
+ static getPropSelection<T>(relation?: SelectOption<T>, select?: SelectOption<T>): SelectOption<T>;
10
+ static addEqualOperator(query: WhereOption): WhereOption;
11
+ static formatWhere<T>(query: WhereOption<T>): WhereOption<T>;
12
+ static buildSQLWhere(alias: string, query: any, params: any): string;
13
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryBuilderUtil = void 0;
4
+ const map_to_and_conditions_utils_1 = require("./map-to-and-conditions.utils");
5
+ const qet_prop_selection_utils_1 = require("./qet-prop-selection.utils");
6
+ const qet_truthy_props_utils_1 = require("./qet-truthy-props.utils");
7
+ const add_equal_operator_util_1 = require("./add-equal-operator.util");
8
+ const format_where_util_1 = require("./format-where.util");
9
+ const build_sql_where_util_1 = require("./build-sql-where.util");
10
+ class QueryBuilderUtil {
11
+ static mapToAndConditions(query) {
12
+ return (0, map_to_and_conditions_utils_1.mapToAndConditions)(query);
13
+ }
14
+ static getTruthyProps(obj) {
15
+ return (0, qet_truthy_props_utils_1.getTruthyProps)(obj);
16
+ }
17
+ static getPropSelection(relation = {}, select = {}) {
18
+ return (0, qet_prop_selection_utils_1.getPropSelection)(relation, select);
19
+ }
20
+ static addEqualOperator(query) {
21
+ return (0, add_equal_operator_util_1.addEqualOperator)(query);
22
+ }
23
+ static formatWhere(query) {
24
+ return (0, format_where_util_1.formatWhere)(query);
25
+ }
26
+ static buildSQLWhere(alias, query, params) {
27
+ return (0, build_sql_where_util_1.buildSQLWhere)(alias, query, params);
28
+ }
29
+ }
30
+ exports.QueryBuilderUtil = QueryBuilderUtil;
31
+ //# sourceMappingURL=query-builder.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.util.js","sourceRoot":"","sources":["../../../../../src/common/database/query-builder/utils/query-builder.util.ts"],"names":[],"mappings":";;;AAGA,+EAAmE;AAEnE,yEAA8D;AAC9D,qEAA0D;AAC1D,uEAA6D;AAC7D,2DAAkD;AAClD,iEAAuD;AAEvD,MAAa,gBAAgB;IAC3B,MAAM,CAAC,kBAAkB,CAAC,KAAU;QAClC,OAAO,IAAA,gDAAkB,EAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAQ;QAC5B,OAAO,IAAA,uCAAc,EAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,gBAAgB,CACrB,WAA4B,EAAE,EAC9B,SAA0B,EAAE;QAE5B,OAAO,IAAA,2CAAgB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,KAAkB;QACxC,OAAO,IAAA,0CAAgB,EAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,CAAC,WAAW,CAAI,KAAqB;QACzC,OAAO,IAAA,+BAAW,EAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,KAAa,EAAE,KAAU,EAAE,MAAW;QACzD,OAAO,IAAA,oCAAa,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;CACF;AA3BD,4CA2BC"}
@@ -0,0 +1,4 @@
1
+ export declare const getTruthyProps: (obj: any) => {
2
+ [k: string]: unknown;
3
+ };
4
+ export declare const translateQuery: (query: any) => any;