@klerick/json-api-nestjs-typeorm 0.1.0-beta.1 → 0.1.0-beta.10

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 (69) hide show
  1. package/CHANGELOG.md +78 -1
  2. package/README.md +39 -0
  3. package/package.json +25 -38
  4. package/src/index.d.ts +1 -0
  5. package/src/index.js +5 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/constants/index.d.ts +6 -0
  8. package/src/lib/constants/index.js +10 -0
  9. package/src/lib/constants/index.js.map +1 -0
  10. package/src/lib/factory/index.d.ts +20 -0
  11. package/src/lib/factory/index.js +128 -0
  12. package/src/lib/factory/index.js.map +1 -0
  13. package/src/lib/index.d.ts +2 -0
  14. package/src/lib/index.js +6 -0
  15. package/src/lib/index.js.map +1 -0
  16. package/src/lib/orm-helper/acl-rules-to-typeorm.d.ts +36 -0
  17. package/src/lib/orm-helper/acl-rules-to-typeorm.js +314 -0
  18. package/src/lib/orm-helper/acl-rules-to-typeorm.js.map +1 -0
  19. package/src/lib/orm-helper/index.d.ts +13 -0
  20. package/src/lib/orm-helper/index.js +164 -0
  21. package/src/lib/orm-helper/index.js.map +1 -0
  22. package/src/lib/orm-methods/delete-one/delete-one.d.ts +2 -0
  23. package/src/lib/orm-methods/delete-one/delete-one.js +17 -0
  24. package/src/lib/orm-methods/delete-one/delete-one.js.map +1 -0
  25. package/src/lib/orm-methods/delete-relationship/delete-relationship.d.ts +4 -0
  26. package/src/lib/orm-methods/delete-relationship/delete-relationship.js +18 -0
  27. package/src/lib/orm-methods/delete-relationship/delete-relationship.js.map +1 -0
  28. package/src/lib/orm-methods/get-all/get-all.d.ts +7 -0
  29. package/src/lib/orm-methods/get-all/get-all.js +210 -0
  30. package/src/lib/orm-methods/get-all/get-all.js.map +1 -0
  31. package/src/lib/orm-methods/get-one/get-one.d.ts +4 -0
  32. package/src/lib/orm-methods/get-one/get-one.js +76 -0
  33. package/src/lib/orm-methods/get-one/get-one.js.map +1 -0
  34. package/src/lib/orm-methods/get-relationship/get-relationship.d.ts +3 -0
  35. package/src/lib/orm-methods/get-relationship/get-relationship.js +35 -0
  36. package/src/lib/orm-methods/get-relationship/get-relationship.js.map +1 -0
  37. package/src/lib/orm-methods/index.d.ts +9 -0
  38. package/src/lib/orm-methods/index.js +22 -0
  39. package/src/lib/orm-methods/index.js.map +1 -0
  40. package/src/lib/orm-methods/patch-one/patch-one.d.ts +4 -0
  41. package/src/lib/orm-methods/patch-one/patch-one.js +50 -0
  42. package/src/lib/orm-methods/patch-one/patch-one.js.map +1 -0
  43. package/src/lib/orm-methods/patch-relationship/patch-relationship.d.ts +4 -0
  44. package/src/lib/orm-methods/patch-relationship/patch-relationship.js +23 -0
  45. package/src/lib/orm-methods/patch-relationship/patch-relationship.js.map +1 -0
  46. package/src/lib/orm-methods/post-one/post-one.d.ts +4 -0
  47. package/src/lib/orm-methods/post-one/post-one.js +28 -0
  48. package/src/lib/orm-methods/post-one/post-one.js.map +1 -0
  49. package/src/lib/orm-methods/post-relationship/post-relationship.d.ts +4 -0
  50. package/src/lib/orm-methods/post-relationship/post-relationship.js +19 -0
  51. package/src/lib/orm-methods/post-relationship/post-relationship.js.map +1 -0
  52. package/src/lib/service/index.d.ts +3 -0
  53. package/src/lib/service/index.js +7 -0
  54. package/src/lib/service/index.js.map +1 -0
  55. package/src/lib/service/type-orm-format.error.service.d.ts +21 -0
  56. package/src/lib/service/type-orm-format.error.service.js +122 -0
  57. package/src/lib/service/type-orm-format.error.service.js.map +1 -0
  58. package/src/lib/service/type-orm.service.d.ts +25 -0
  59. package/src/lib/service/type-orm.service.js +73 -0
  60. package/src/lib/service/type-orm.service.js.map +1 -0
  61. package/src/lib/service/typeorm-utils.service.d.ts +66 -0
  62. package/src/lib/service/typeorm-utils.service.js +450 -0
  63. package/src/lib/service/typeorm-utils.service.js.map +1 -0
  64. package/src/lib/type-orm-json-api.module.d.ts +7 -0
  65. package/src/lib/type-orm-json-api.module.js +49 -0
  66. package/src/lib/type-orm-json-api.module.js.map +1 -0
  67. package/src/lib/type.d.ts +29 -0
  68. package/src/lib/type.js +29 -0
  69. package/src/lib/type.js.map +1 -0
@@ -0,0 +1,314 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractRelationsFromRules = extractRelationsFromRules;
4
+ exports.applyAclRulesToQueryBuilder = applyAclRulesToQueryBuilder;
5
+ const typeorm_1 = require("typeorm");
6
+ const type_1 = require("../type");
7
+ /**
8
+ * Maps ACL operators (with $) to TypeORM operators (without $)
9
+ */
10
+ const ACL_TO_TYPEORM_OPERATOR = {
11
+ '$eq': 'eq',
12
+ '$ne': 'ne',
13
+ '$gt': 'gt',
14
+ '$gte': 'gte',
15
+ '$lt': 'lt',
16
+ '$lte': 'lte',
17
+ '$in': 'in',
18
+ '$nin': 'nin',
19
+ '$re': 'regexp',
20
+ '$contains': 'contains',
21
+ };
22
+ /**
23
+ * Extract all relation field names from ACL rulesForQuery
24
+ * @param rules - ACL rules object
25
+ * @param typeormUtils - TypeORM utils service
26
+ * @returns Set of relation field names used in the rules
27
+ */
28
+ function extractRelationsFromRules(rules, typeormUtils) {
29
+ const relations = new Set();
30
+ const processObject = (obj) => {
31
+ for (const [key, value] of Object.entries(obj)) {
32
+ // Skip logical operators
33
+ if (key === '$or' || key === '$and' || key === '$not') {
34
+ if (Array.isArray(value)) {
35
+ value.forEach((item) => {
36
+ if (typeof item === 'object' && item !== null) {
37
+ processObject(item);
38
+ }
39
+ });
40
+ }
41
+ else if (typeof value === 'object' && value !== null) {
42
+ processObject(value);
43
+ }
44
+ continue;
45
+ }
46
+ // Check if this is a relation field
47
+ // @ts-ignore
48
+ const isRelation = typeormUtils.relationFields.includes(key);
49
+ if (isRelation) {
50
+ relations.add(key);
51
+ }
52
+ }
53
+ };
54
+ processObject(rules);
55
+ return relations;
56
+ }
57
+ /**
58
+ * Converts ACL rulesForQuery (MikroORM-like format) to TypeORM QueryBuilder conditions
59
+ *
60
+ * @param rulesForQuery - MongoDB-like query object from ExtendAbility.getQueryObject()
61
+ * @param typeormUtils - TypeORM utils service for getting aliases and paths
62
+ * @param hasExistingWhere - Whether queryBuilder already has WHERE conditions
63
+ * @returns Callback function for queryBuilder.andWhere() or queryBuilder.where()
64
+ *
65
+ * @example
66
+ * // With existing WHERE
67
+ * const callback = applyAclRulesToQueryBuilder(
68
+ * { authorId: 123, profile: { isPublic: true } },
69
+ * typeormUtils,
70
+ * true
71
+ * );
72
+ * queryBuilder.andWhere(callback);
73
+ *
74
+ * @example
75
+ * // Without existing WHERE
76
+ * const callback = applyAclRulesToQueryBuilder(
77
+ * { authorId: 123 },
78
+ * typeormUtils,
79
+ * false
80
+ * );
81
+ * callback(queryBuilder);
82
+ */
83
+ function applyAclRulesToQueryBuilder(rulesForQuery, typeormUtils) {
84
+ let paramCounter = 0;
85
+ const getParamName = () => {
86
+ paramCounter++;
87
+ return `aclParam_${paramCounter}`;
88
+ };
89
+ /**
90
+ * Recursively process rules and apply to query builder
91
+ */
92
+ const processRules = (qb, rules, isFirstCondition = true) => {
93
+ for (const [key, value] of Object.entries(rules)) {
94
+ // Handle logical operators
95
+ if (key === '$and' && Array.isArray(value)) {
96
+ qb.andWhere(new typeorm_1.Brackets((subQb) => {
97
+ for (const condition of value) {
98
+ processRules(subQb, condition, false);
99
+ }
100
+ }));
101
+ continue;
102
+ }
103
+ if (key === '$or' && Array.isArray(value)) {
104
+ // Build OR conditions as a single WHERE clause with manual parentheses
105
+ const orConditions = [];
106
+ const orParams = {};
107
+ value.forEach((condition) => {
108
+ const cond = condition;
109
+ Object.entries(cond).forEach(([field, val]) => {
110
+ // Check if this is a relation field
111
+ // @ts-ignore
112
+ const isRelation = typeormUtils.relationFields.includes(field);
113
+ if (isRelation && typeof val === 'object' && val !== null && !Array.isArray(val)) {
114
+ // Handle relation fields: { user: { id: { $eq: 3 } } }
115
+ const relationAlias = typeormUtils.getAliasForRelation(field);
116
+ for (const [nestedKey, nestedValue] of Object.entries(val)) {
117
+ const fieldPath = `${relationAlias}.${nestedKey}`;
118
+ if (nestedValue === null || typeof nestedValue !== 'object' || Array.isArray(nestedValue)) {
119
+ const paramName = getParamName();
120
+ orConditions.push(`${fieldPath} = :${paramName}`);
121
+ orParams[paramName] = nestedValue;
122
+ }
123
+ else {
124
+ // Handle operators in nested field
125
+ const operators = nestedValue;
126
+ const [aclOperator, operatorValue] = Object.entries(operators)[0];
127
+ const typeormOperator = ACL_TO_TYPEORM_OPERATOR[aclOperator];
128
+ if (typeormOperator) {
129
+ const sqlTemplate = type_1.OperandsMapExpression[typeormOperator];
130
+ if (sqlTemplate) {
131
+ const paramName = getParamName();
132
+ const sqlExpression = sqlTemplate.replace(type_1.EXPRESSION, paramName);
133
+ orConditions.push(`${fieldPath} ${sqlExpression}`);
134
+ orParams[paramName] = operatorValue;
135
+ }
136
+ }
137
+ }
138
+ }
139
+ }
140
+ else {
141
+ // Handle entity fields
142
+ const fieldPath = `${typeormUtils.currentAlias}.${field}`;
143
+ if (val === null || typeof val !== 'object' || Array.isArray(val)) {
144
+ const paramName = getParamName();
145
+ orConditions.push(`${fieldPath} = :${paramName}`);
146
+ orParams[paramName] = val;
147
+ }
148
+ else {
149
+ // Handle operators
150
+ const operators = val;
151
+ const [aclOperator, operatorValue] = Object.entries(operators)[0];
152
+ const typeormOperator = ACL_TO_TYPEORM_OPERATOR[aclOperator];
153
+ if (typeormOperator) {
154
+ const sqlTemplate = type_1.OperandsMapExpression[typeormOperator];
155
+ if (sqlTemplate) {
156
+ const paramName = getParamName();
157
+ const sqlExpression = sqlTemplate.replace(type_1.EXPRESSION, paramName);
158
+ orConditions.push(`${fieldPath} ${sqlExpression}`);
159
+ orParams[paramName] = operatorValue;
160
+ }
161
+ }
162
+ }
163
+ }
164
+ });
165
+ });
166
+ if (orConditions.length > 0) {
167
+ // Wrap in parentheses and join with OR
168
+ const orClause = `(${orConditions.join(' OR ')})`;
169
+ const whereMethod = isFirstCondition ? 'where' : 'andWhere';
170
+ qb[whereMethod](orClause, orParams);
171
+ isFirstCondition = false;
172
+ }
173
+ continue;
174
+ }
175
+ if (key === '$not') {
176
+ // Build NOT conditions - collect all conditions and wrap in NOT (...)
177
+ const notConditions = [];
178
+ const notParams = {};
179
+ const notRules = value;
180
+ for (const [notKey, notValue] of Object.entries(notRules)) {
181
+ // Check if this is a relation field
182
+ // @ts-ignore
183
+ const isRelation = typeormUtils.relationFields.includes(notKey);
184
+ if (isRelation && typeof notValue === 'object' && notValue !== null && !Array.isArray(notValue)) {
185
+ // Handle relation fields
186
+ const relationAlias = typeormUtils.getAliasForRelation(notKey);
187
+ for (const [nestedKey, nestedValue] of Object.entries(notValue)) {
188
+ const fieldPath = `${relationAlias}.${nestedKey}`;
189
+ if (nestedValue === null || typeof nestedValue !== 'object' || Array.isArray(nestedValue)) {
190
+ const paramName = getParamName();
191
+ notConditions.push(`${fieldPath} = :${paramName}`);
192
+ notParams[paramName] = nestedValue;
193
+ }
194
+ else {
195
+ // Handle operators
196
+ const operators = nestedValue;
197
+ const [aclOperator, operatorValue] = Object.entries(operators)[0];
198
+ const typeormOperator = ACL_TO_TYPEORM_OPERATOR[aclOperator];
199
+ if (typeormOperator) {
200
+ const sqlTemplate = type_1.OperandsMapExpression[typeormOperator];
201
+ if (sqlTemplate) {
202
+ const paramName = getParamName();
203
+ const sqlExpression = sqlTemplate.replace(type_1.EXPRESSION, paramName);
204
+ notConditions.push(`${fieldPath} ${sqlExpression}`);
205
+ notParams[paramName] = operatorValue;
206
+ }
207
+ }
208
+ }
209
+ }
210
+ }
211
+ else {
212
+ // Handle entity fields
213
+ const fieldPath = `${typeormUtils.currentAlias}.${notKey}`;
214
+ if (notValue === null || typeof notValue !== 'object' || Array.isArray(notValue)) {
215
+ const paramName = getParamName();
216
+ notConditions.push(`${fieldPath} = :${paramName}`);
217
+ notParams[paramName] = notValue;
218
+ }
219
+ else {
220
+ // Handle operators
221
+ const operators = notValue;
222
+ const [aclOperator, operatorValue] = Object.entries(operators)[0];
223
+ const typeormOperator = ACL_TO_TYPEORM_OPERATOR[aclOperator];
224
+ if (typeormOperator) {
225
+ const sqlTemplate = type_1.OperandsMapExpression[typeormOperator];
226
+ if (sqlTemplate) {
227
+ const paramName = getParamName();
228
+ const sqlExpression = sqlTemplate.replace(type_1.EXPRESSION, paramName);
229
+ notConditions.push(`${fieldPath} ${sqlExpression}`);
230
+ notParams[paramName] = operatorValue;
231
+ }
232
+ }
233
+ }
234
+ }
235
+ }
236
+ if (notConditions.length > 0) {
237
+ // Wrap in NOT (...)
238
+ const notClause = `NOT (${notConditions.join(' AND ')})`;
239
+ qb.andWhere(notClause, notParams);
240
+ }
241
+ continue;
242
+ }
243
+ // Check if this is a relation field
244
+ // @ts-ignore
245
+ const isRelation = typeormUtils.relationFields.includes(key);
246
+ if (isRelation && typeof value === 'object' && value !== null && !Array.isArray(value)) {
247
+ // Handle relation fields: { profile: { isPublic: true } }
248
+ const relationAlias = typeormUtils.getAliasForRelation(key);
249
+ for (const [nestedKey, nestedValue] of Object.entries(value)) {
250
+ processFieldCondition(qb, `${relationAlias}.${nestedKey}`, nestedValue, isFirstCondition && Object.keys(rules).indexOf(key) === 0);
251
+ isFirstCondition = false;
252
+ }
253
+ }
254
+ else {
255
+ // Handle entity fields: { authorId: 123, status: { $in: [...] } }
256
+ const fieldPath = `${typeormUtils.currentAlias}.${key}`;
257
+ processFieldCondition(qb, fieldPath, value, isFirstCondition);
258
+ isFirstCondition = false;
259
+ }
260
+ }
261
+ };
262
+ /**
263
+ * Process a single field condition (with or without operators)
264
+ */
265
+ const processFieldCondition = (qb, fieldPath, value, isFirst) => {
266
+ const whereMethod = isFirst ? 'where' : 'andWhere';
267
+ // Primitive value - direct equality
268
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
269
+ const paramName = getParamName();
270
+ qb[whereMethod](`${fieldPath} = :${paramName}`, { [paramName]: value });
271
+ return;
272
+ }
273
+ // Object with operators: { $in: [...], $gt: 10, etc. }
274
+ const operators = value;
275
+ for (const [aclOperator, operatorValue] of Object.entries(operators)) {
276
+ const paramName = getParamName();
277
+ // Convert ACL operator ($eq) to TypeORM operator (eq)
278
+ const typeormOperator = ACL_TO_TYPEORM_OPERATOR[aclOperator];
279
+ if (!typeormOperator) {
280
+ console.warn(`[ACL] Unknown operator "${aclOperator}" in rulesForQuery`);
281
+ continue;
282
+ }
283
+ // Get SQL expression template from OperandsMapExpression
284
+ const sqlTemplate = type_1.OperandsMapExpression[typeormOperator];
285
+ if (!sqlTemplate) {
286
+ console.warn(`[ACL] No SQL template for operator "${typeormOperator}"`);
287
+ continue;
288
+ }
289
+ // Replace EXPRESSION placeholder with paramName
290
+ const sqlExpression = sqlTemplate.replace(type_1.EXPRESSION, paramName);
291
+ // Apply condition to query builder
292
+ qb[whereMethod](`${fieldPath} ${sqlExpression}`, { [paramName]: operatorValue });
293
+ }
294
+ };
295
+ // Return callback function
296
+ // if (hasExistingWhere) {
297
+ // // If there's existing WHERE, wrap in Brackets to isolate ACL conditions
298
+ // return (qb: WhereExpressionBuilder) => {
299
+ // qb.andWhere(
300
+ //
301
+ // );
302
+ // };
303
+ // } else {
304
+ // // If no existing WHERE, process rules directly
305
+ // return (qb: WhereExpressionBuilder) => {
306
+ // processRules(qb, rulesForQuery, true);
307
+ // };
308
+ // }
309
+ return new typeorm_1.Brackets((subQb) => {
310
+ // Inside Brackets, MUST use TRUE - first condition needs .where()
311
+ processRules(subQb, rulesForQuery, true);
312
+ });
313
+ }
314
+ //# sourceMappingURL=acl-rules-to-typeorm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acl-rules-to-typeorm.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs-typeorm/src/lib/orm-helper/acl-rules-to-typeorm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { EntityParam } from '@klerick/json-api-nestjs';
2
+ import { Repository } from 'typeorm';
3
+ export * from './acl-rules-to-typeorm';
4
+ export declare const getRelation: <E extends object>(repository: Repository<E>) => EntityParam<E>["relations"];
5
+ export declare const getProps: <E extends object>(repository: Repository<E>) => EntityParam<E>["props"];
6
+ export declare const getRelationFkField: <E extends object>(repository: Repository<E>) => EntityParam<E>["relationFkField"];
7
+ export declare const getPropsType: <E extends object>(repository: Repository<E>) => EntityParam<E>["propsType"];
8
+ export declare const getPropsNullable: <E extends object>(repository: Repository<E>) => EntityParam<E>["propsNullable"];
9
+ export declare const getPrimaryColumnName: <E extends object>(repository: Repository<E>) => EntityParam<E>["primaryColumnName"];
10
+ export declare const getPrimaryColumnType: <E extends object>(repository: Repository<E>) => EntityParam<E>["primaryColumnType"];
11
+ export declare const getRelationProperty: <E extends object>(repository: Repository<E>) => EntityParam<E>["relationProperty"];
12
+ export declare const getArrayType: <E extends object>(repository: Repository<E>) => EntityParam<E>["propsArrayType"];
13
+ export { applyAclRulesToQueryBuilder, extractRelationsFromRules } from './acl-rules-to-typeorm';
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractRelationsFromRules = exports.applyAclRulesToQueryBuilder = exports.getArrayType = exports.getRelationProperty = exports.getPrimaryColumnType = exports.getPrimaryColumnName = exports.getPropsNullable = exports.getPropsType = exports.getRelationFkField = exports.getProps = exports.getRelation = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const json_api_nestjs_1 = require("@klerick/json-api-nestjs");
6
+ tslib_1.__exportStar(require("./acl-rules-to-typeorm"), exports);
7
+ const getRelation = (repository) => repository.metadata.relations.map((i) => {
8
+ return i.propertyName;
9
+ });
10
+ exports.getRelation = getRelation;
11
+ const getProps = (repository) => {
12
+ const relations = (0, exports.getRelation)(repository);
13
+ return repository.metadata.columns
14
+ .filter((i) => !relations.includes(i.propertyName))
15
+ .map((r) => r.propertyName);
16
+ };
17
+ exports.getProps = getProps;
18
+ const getRelationFkField = (repository) => {
19
+ return repository.metadata.relationIds.reduce((acum, relationId) => {
20
+ // @ts-expect-error dynamic property assignment
21
+ acum[relationId.relation.propertyName] = relationId.propertyName;
22
+ return acum;
23
+ }, {});
24
+ };
25
+ exports.getRelationFkField = getRelationFkField;
26
+ const getPropsType = (repository) => {
27
+ const field = (0, exports.getProps)(repository);
28
+ const entity = repository.target;
29
+ const result = {};
30
+ for (const item of field) {
31
+ let typeProps = json_api_nestjs_1.TypeField.string;
32
+ const fieldMetadata = repository.metadata.columns.find((i) => i.propertyName === item);
33
+ if (fieldMetadata?.isArray) {
34
+ result[item] = json_api_nestjs_1.TypeField.array;
35
+ continue;
36
+ }
37
+ switch (Reflect.getMetadata('design:type', entity['prototype'], item)) {
38
+ case Array:
39
+ typeProps = json_api_nestjs_1.TypeField.array;
40
+ break;
41
+ case Date:
42
+ typeProps = json_api_nestjs_1.TypeField.date;
43
+ break;
44
+ case Number:
45
+ typeProps = json_api_nestjs_1.TypeField.number;
46
+ break;
47
+ case Boolean:
48
+ typeProps = json_api_nestjs_1.TypeField.boolean;
49
+ break;
50
+ case Object:
51
+ typeProps = json_api_nestjs_1.TypeField.object;
52
+ break;
53
+ default:
54
+ typeProps = json_api_nestjs_1.TypeField.string;
55
+ }
56
+ result[item] = fieldMetadata?.isArray ? json_api_nestjs_1.TypeField.array : typeProps;
57
+ }
58
+ return result;
59
+ };
60
+ exports.getPropsType = getPropsType;
61
+ const getPropsNullable = (repository) => {
62
+ const relation = (0, exports.getRelation)(repository);
63
+ return repository.metadata.columns
64
+ .filter((i) => !relation.includes(i.propertyName))
65
+ .map((i) => i.isNullable || i.default !== undefined ? i.propertyName : false)
66
+ .filter((i) => !!i);
67
+ };
68
+ exports.getPropsNullable = getPropsNullable;
69
+ const getPrimaryColumnName = (repository) => {
70
+ const column = repository.metadata.primaryColumns.at(0);
71
+ if (!column)
72
+ throw new Error('Primary column not found');
73
+ return column.propertyName;
74
+ };
75
+ exports.getPrimaryColumnName = getPrimaryColumnName;
76
+ const getPrimaryColumnType = (repository) => {
77
+ const target = repository.target;
78
+ const primaryColumn = repository.metadata.primaryColumns[0].propertyName;
79
+ return (Reflect.getMetadata('design:type', target['prototype'], primaryColumn) ===
80
+ Number
81
+ ? json_api_nestjs_1.TypeField.number
82
+ : json_api_nestjs_1.TypeField.string);
83
+ };
84
+ exports.getPrimaryColumnType = getPrimaryColumnType;
85
+ const getRelationProperty = (repository) => {
86
+ return repository.metadata.relations.reduce((acum, item) => {
87
+ // @ts-expect-error its dynamic creater
88
+ acum[item.propertyName] = {
89
+ entityClass: item.inverseEntityMetadata.target,
90
+ nullable: item.isManyToMany || item.isOneToMany ? false : item.isNullable,
91
+ isArray: item.isManyToMany || item.isOneToMany,
92
+ };
93
+ return acum;
94
+ }, {});
95
+ };
96
+ exports.getRelationProperty = getRelationProperty;
97
+ const getArrayType = (repository) => {
98
+ return Object.entries((0, exports.getPropsType)(repository))
99
+ .filter(([name, type]) => type === json_api_nestjs_1.TypeField.array)
100
+ .reduce((acum, [name]) => {
101
+ const fieldMetadata = repository.metadata.columns.find((i) => i.propertyName === name);
102
+ if (!fieldMetadata) {
103
+ throw new Error('Metadata not found for field ' + name);
104
+ }
105
+ switch (fieldMetadata.type) {
106
+ case 'number':
107
+ case 'bigint':
108
+ case 'smallint':
109
+ case 'smalldecimal':
110
+ case 'decimal':
111
+ case 'double':
112
+ case 'tinyint':
113
+ case 'mediumint':
114
+ case 'int':
115
+ case 'float':
116
+ case 'dec':
117
+ case 'fixed':
118
+ case 'numeric':
119
+ case 'real':
120
+ case 'int2':
121
+ case 'int4':
122
+ case 'int8':
123
+ case 'integer':
124
+ acum[name] = json_api_nestjs_1.TypeField.number;
125
+ break;
126
+ case 'character varying':
127
+ case 'varying character':
128
+ case 'char varying':
129
+ case 'nvarchar':
130
+ case 'national varchar':
131
+ case 'character':
132
+ case 'native character':
133
+ case 'varchar':
134
+ case 'char':
135
+ case 'nchar':
136
+ case 'national char':
137
+ case 'varchar2':
138
+ case 'nvarchar2':
139
+ case 'alphanum':
140
+ case 'shorttext':
141
+ case 'raw':
142
+ case 'binary':
143
+ case 'varbinary':
144
+ case 'string':
145
+ acum[name] = json_api_nestjs_1.TypeField.string;
146
+ break;
147
+ case 'date':
148
+ case 'timetz':
149
+ case 'timestamptz':
150
+ case 'timestamp with local time zone':
151
+ case 'smalldatetime':
152
+ acum[name] = json_api_nestjs_1.TypeField.date;
153
+ break;
154
+ case 'boolean':
155
+ acum[name] = json_api_nestjs_1.TypeField.boolean;
156
+ }
157
+ return acum;
158
+ }, {});
159
+ };
160
+ exports.getArrayType = getArrayType;
161
+ var acl_rules_to_typeorm_1 = require("./acl-rules-to-typeorm");
162
+ Object.defineProperty(exports, "applyAclRulesToQueryBuilder", { enumerable: true, get: function () { return acl_rules_to_typeorm_1.applyAclRulesToQueryBuilder; } });
163
+ Object.defineProperty(exports, "extractRelationsFromRules", { enumerable: true, get: function () { return acl_rules_to_typeorm_1.extractRelationsFromRules; } });
164
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../libs/json-api/json-api-nestjs-typeorm/src/lib/orm-helper/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { TypeOrmService } from '../../service';
2
+ export declare function deleteOne<E extends object, IdKey extends string = 'id'>(this: TypeOrmService<E, IdKey>, id: number | string): Promise<void>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteOne = deleteOne;
4
+ async function deleteOne(id) {
5
+ const data = await this.repository.findOne({
6
+ where: {
7
+ [this.typeormUtilsService.currentPrimaryColumn.toString()]: id,
8
+ },
9
+ });
10
+ if (!data)
11
+ return void 0;
12
+ this.config.useSoftDelete
13
+ ? await this.repository.softRemove(data)
14
+ : await this.repository.remove(data);
15
+ return void 0;
16
+ }
17
+ //# sourceMappingURL=delete-one.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-one.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-typeorm/src/lib/orm-methods/delete-one/delete-one.ts"],"names":[],"mappings":";;AAGA,8BAgBC;AAhBM,KAAK,UAAU,SAAS,CAE7B,EAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QACzC,KAAK,EAAE;YACL,CAAC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE;SACxC;KACzB,CAAC,CAAC;IACH,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC,CAAC;IAEzB,IAAI,CAAC,MAAM,CAAC,aAAa;QACvB,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;QACxC,CAAC,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEvC,OAAO,KAAK,CAAC,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { PostRelationshipData } from '@klerick/json-api-nestjs';
2
+ import { RelationKeys } from '@klerick/json-api-nestjs-shared';
3
+ import { TypeOrmService } from '../../service';
4
+ export declare function deleteRelationship<E extends object, IdKey extends string, Rel extends RelationKeys<E, IdKey>>(this: TypeOrmService<E, IdKey>, id: number | string, rel: Rel, input: PostRelationshipData): Promise<void>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteRelationship = deleteRelationship;
4
+ async function deleteRelationship(id, rel, input) {
5
+ const idsResult = await this.typeormUtilsService.validateRelationInputData(rel, input);
6
+ const postBuilder = this.repository
7
+ .createQueryBuilder()
8
+ .relation(rel.toString())
9
+ .of(id);
10
+ if (Array.isArray(idsResult)) {
11
+ await postBuilder.remove(idsResult);
12
+ }
13
+ else {
14
+ await postBuilder.set(null);
15
+ }
16
+ return void 0;
17
+ }
18
+ //# sourceMappingURL=delete-relationship.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-relationship.js","sourceRoot":"","sources":["../../../../../../../../libs/json-api/json-api-nestjs-typeorm/src/lib/orm-methods/delete-relationship/delete-relationship.ts"],"names":[],"mappings":";;AAKA,gDAyBC;AAzBM,KAAK,UAAU,kBAAkB,CAMtC,EAAmB,EACnB,GAAQ,EACR,KAA2B;IAE3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CACxE,GAAG,EACH,KAAK,CACN,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU;SAChC,kBAAkB,EAAE;SACpB,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;SACxB,EAAE,CAAC,EAAE,CAAC,CAAC;IAEV,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7B,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC,CAAC;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Query } from '@klerick/json-api-nestjs';
2
+ import { ResourceObject } from '@klerick/json-api-nestjs-shared';
3
+ import { TypeOrmService } from '../../service';
4
+ export declare function getAll<E extends object, IdKey extends string = 'id'>(this: TypeOrmService<E, IdKey>, query: Query<E, IdKey>, transformData?: boolean, additionalQueryParams?: Record<string, unknown>): Promise<ResourceObject<E, 'array', null, IdKey> | {
5
+ totalItems: number;
6
+ items: E[];
7
+ }>;