typeorm 0.3.28-dev.d7867eb → 0.3.28-dev.e04ffd3

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 (79) hide show
  1. package/browser/decorator/tree/TreeChildren.d.ts +1 -1
  2. package/browser/decorator/tree/TreeChildren.js +1 -1
  3. package/browser/decorator/tree/TreeChildren.js.map +1 -1
  4. package/browser/decorator/tree/TreeParent.d.ts +1 -1
  5. package/browser/decorator/tree/TreeParent.js +1 -1
  6. package/browser/decorator/tree/TreeParent.js.map +1 -1
  7. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +2 -2
  8. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +2 -2
  9. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  10. package/browser/driver/mongodb/MongoQueryRunner.d.ts +4 -4
  11. package/browser/driver/mongodb/MongoQueryRunner.js +5 -5
  12. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  13. package/browser/driver/mongodb/typings.d.ts +1 -1
  14. package/browser/driver/mongodb/typings.js.map +1 -1
  15. package/browser/driver/mysql/MysqlQueryRunner.d.ts +2 -2
  16. package/browser/driver/mysql/MysqlQueryRunner.js +2 -2
  17. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  18. package/browser/driver/oracle/OracleQueryRunner.d.ts +2 -2
  19. package/browser/driver/oracle/OracleQueryRunner.js +2 -2
  20. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  21. package/browser/driver/sap/SapDriver.js +1 -1
  22. package/browser/driver/sap/SapDriver.js.map +1 -1
  23. package/browser/driver/sap/SapQueryRunner.d.ts +1 -1
  24. package/browser/driver/sap/SapQueryRunner.js +1 -1
  25. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  26. package/browser/driver/spanner/SpannerQueryRunner.d.ts +1 -1
  27. package/browser/driver/spanner/SpannerQueryRunner.js +1 -1
  28. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  29. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +2 -2
  30. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +2 -2
  31. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  32. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
  33. package/browser/driver/sqlserver/SqlServerQueryRunner.js +1 -1
  34. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  35. package/browser/find-options/FindOptionsUtils.d.ts +0 -161
  36. package/browser/find-options/FindOptionsUtils.js +0 -161
  37. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  38. package/browser/query-runner/QueryRunner.d.ts +1 -1
  39. package/browser/query-runner/QueryRunner.js.map +1 -1
  40. package/decorator/tree/TreeChildren.d.ts +1 -1
  41. package/decorator/tree/TreeChildren.js +1 -1
  42. package/decorator/tree/TreeChildren.js.map +1 -1
  43. package/decorator/tree/TreeParent.d.ts +1 -1
  44. package/decorator/tree/TreeParent.js +1 -1
  45. package/decorator/tree/TreeParent.js.map +1 -1
  46. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +2 -2
  47. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +2 -2
  48. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  49. package/driver/mongodb/MongoQueryRunner.d.ts +4 -4
  50. package/driver/mongodb/MongoQueryRunner.js +5 -5
  51. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  52. package/driver/mongodb/typings.d.ts +1 -1
  53. package/driver/mongodb/typings.js.map +1 -1
  54. package/driver/mysql/MysqlQueryRunner.d.ts +2 -2
  55. package/driver/mysql/MysqlQueryRunner.js +2 -2
  56. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  57. package/driver/oracle/OracleQueryRunner.d.ts +2 -2
  58. package/driver/oracle/OracleQueryRunner.js +2 -2
  59. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  60. package/driver/sap/SapDriver.js +2 -2
  61. package/driver/sap/SapDriver.js.map +1 -1
  62. package/driver/sap/SapQueryRunner.d.ts +1 -1
  63. package/driver/sap/SapQueryRunner.js +1 -1
  64. package/driver/sap/SapQueryRunner.js.map +1 -1
  65. package/driver/spanner/SpannerQueryRunner.d.ts +1 -1
  66. package/driver/spanner/SpannerQueryRunner.js +1 -1
  67. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  68. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +2 -2
  69. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +2 -2
  70. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  71. package/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
  72. package/driver/sqlserver/SqlServerQueryRunner.js +1 -1
  73. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  74. package/find-options/FindOptionsUtils.d.ts +0 -161
  75. package/find-options/FindOptionsUtils.js +0 -161
  76. package/find-options/FindOptionsUtils.js.map +1 -1
  77. package/package.json +1 -1
  78. package/query-runner/QueryRunner.d.ts +1 -1
  79. package/query-runner/QueryRunner.js.map +1 -1
@@ -20,167 +20,6 @@ export declare class FindOptionsUtils {
20
20
  * Checks if given object is really instance of FindOptions interface.
21
21
  */
22
22
  static extractFindManyOptionsAlias(object: any): string | undefined;
23
- /**
24
- * Applies give find many options to the given query builder.
25
-
26
- static applyFindManyOptionsOrConditionsToQueryBuilder<T>(qb: SelectQueryBuilder<T>, options: FindManyOptions<T>|Partial<T>|undefined): SelectQueryBuilder<T> {
27
- if (this.isFindManyOptions(options))
28
- return this.applyOptionsToQueryBuilder(qb, options);
29
-
30
- if (options)
31
- return qb.where(options);
32
-
33
- return qb;
34
- }*/
35
- /**
36
- * Applies give find options to the given query builder.
37
-
38
- static applyOptionsToQueryBuilder<T>(qb: SelectQueryBuilder<T>, options: FindOneOptions<T>|FindManyOptions<T>|undefined): SelectQueryBuilder<T> {
39
-
40
- // if options are not set then simply return query builder. This is made for simplicity of usage.
41
- if (!options || (!this.isFindOneOptions(options) && !this.isFindManyOptions(options)))
42
- return qb;
43
-
44
- if (options.transaction === true) {
45
- qb.expressionMap.useTransaction = true;
46
- }
47
-
48
- if (!qb.expressionMap.mainAlias || !qb.expressionMap.mainAlias.hasMetadata)
49
- return qb;
50
-
51
- const metadata = qb.expressionMap.mainAlias!.metadata;
52
-
53
- // apply all options from FindOptions
54
- if (options.comment) {
55
- qb.comment(options.comment);
56
- }
57
-
58
- if (options.withDeleted) {
59
- qb.withDeleted();
60
- }
61
-
62
- if (options.select) {
63
- qb.select([]);
64
- options.select.forEach(select => {
65
- if (!metadata.hasColumnWithPropertyPath(`${select}`))
66
- throw new TypeORMError(`${select} column was not found in the ${metadata.name} entity.`);
67
-
68
- const columns = metadata.findColumnsWithPropertyPath(`${select}`);
69
-
70
- for (const column of columns) {
71
- qb.addSelect(qb.alias + "." + column.propertyPath);
72
- }
73
- });
74
- }
75
-
76
- if (options.relations) {
77
- // Copy because `applyRelationsRecursively` modifies it
78
- const allRelations = [...options.relations];
79
- this.applyRelationsRecursively(qb, allRelations, qb.expressionMap.mainAlias!.name, qb.expressionMap.mainAlias!.metadata, "");
80
- // recursive removes found relations from allRelations array
81
- // if there are relations left in this array it means those relations were not found in the entity structure
82
- // so, we give an exception about not found relations
83
- if (allRelations.length > 0)
84
- throw new FindRelationsNotFoundError(allRelations);
85
- }
86
-
87
- if (options.join) {
88
- if (options.join.leftJoin)
89
- Object.keys(options.join.leftJoin).forEach(key => {
90
- qb.leftJoin(options.join!.leftJoin![key], key);
91
- });
92
-
93
- if (options.join.innerJoin)
94
- Object.keys(options.join.innerJoin).forEach(key => {
95
- qb.innerJoin(options.join!.innerJoin![key], key);
96
- });
97
-
98
- if (options.join.leftJoinAndSelect)
99
- Object.keys(options.join.leftJoinAndSelect).forEach(key => {
100
- qb.leftJoinAndSelect(options.join!.leftJoinAndSelect![key], key);
101
- });
102
-
103
- if (options.join.innerJoinAndSelect)
104
- Object.keys(options.join.innerJoinAndSelect).forEach(key => {
105
- qb.innerJoinAndSelect(options.join!.innerJoinAndSelect![key], key);
106
- });
107
- }
108
-
109
- if (options.cache) {
110
- if (options.cache instanceof Object) {
111
- const cache = options.cache as { id: any, milliseconds: number };
112
- qb.cache(cache.id, cache.milliseconds);
113
- } else {
114
- qb.cache(options.cache);
115
- }
116
- }
117
-
118
- if (options.lock) {
119
- if (options.lock.mode === "optimistic") {
120
- qb.setLock(options.lock.mode, options.lock.version);
121
- } else if (
122
- options.lock.mode === "pessimistic_read" ||
123
- options.lock.mode === "pessimistic_write" ||
124
- options.lock.mode === "dirty_read" ||
125
- options.lock.mode === "pessimistic_partial_write" ||
126
- options.lock.mode === "pessimistic_write_or_fail" ||
127
- options.lock.mode === "for_no_key_update" ||
128
- options.lock.mode === "for_key_share"
129
- ) {
130
- const tableNames = options.lock.tables ? options.lock.tables.map((table) => {
131
- const tableAlias = qb.expressionMap.aliases.find((alias) => {
132
- return alias.metadata.tableNameWithoutPrefix === table;
133
- });
134
- if (!tableAlias) {
135
- throw new TypeORMError(`"${table}" is not part of this query`);
136
- }
137
- return qb.escape(tableAlias.name);
138
- }) : undefined;
139
- qb.setLock(options.lock.mode, undefined, tableNames);
140
- }
141
- }
142
-
143
- if (options.loadRelationIds === true) {
144
- qb.loadAllRelationIds();
145
-
146
- } else if (options.loadRelationIds instanceof Object) {
147
- qb.loadAllRelationIds(options.loadRelationIds as any);
148
- }
149
-
150
- if (options.where)
151
- qb.where(options.where);
152
-
153
- if ((options as FindManyOptions<T>).skip)
154
- qb.skip((options as FindManyOptions<T>).skip!);
155
-
156
- if ((options as FindManyOptions<T>).take)
157
- qb.take((options as FindManyOptions<T>).take!);
158
-
159
- if (options.order)
160
- Object.keys(options.order).forEach(key => {
161
- const order = ((options as FindOneOptions<T>).order as any)[key as any];
162
-
163
- if (!metadata.findColumnWithPropertyPath(key))
164
- throw new Error(`${key} column was not found in the ${metadata.name} entity.`);
165
-
166
- switch (order) {
167
- case 1:
168
- qb.addOrderBy(qb.alias + "." + key, "ASC");
169
- break;
170
- case -1:
171
- qb.addOrderBy(qb.alias + "." + key, "DESC");
172
- break;
173
- case "ASC":
174
- qb.addOrderBy(qb.alias + "." + key, "ASC");
175
- break;
176
- case "DESC":
177
- qb.addOrderBy(qb.alias + "." + key, "DESC");
178
- break;
179
- }
180
- });
181
-
182
- return qb;
183
- }*/
184
23
  static applyOptionsToTreeQueryBuilder<T extends ObjectLiteral>(qb: SelectQueryBuilder<T>, options?: FindTreeOptions): SelectQueryBuilder<T>;
185
24
  /**
186
25
  * Adds joins for all relations and sub-relations of the given relations provided in the find options.
@@ -58,167 +58,6 @@ export class FindOptionsUtils {
58
58
  return object.join.alias;
59
59
  return undefined;
60
60
  }
61
- /**
62
- * Applies give find many options to the given query builder.
63
-
64
- static applyFindManyOptionsOrConditionsToQueryBuilder<T>(qb: SelectQueryBuilder<T>, options: FindManyOptions<T>|Partial<T>|undefined): SelectQueryBuilder<T> {
65
- if (this.isFindManyOptions(options))
66
- return this.applyOptionsToQueryBuilder(qb, options);
67
-
68
- if (options)
69
- return qb.where(options);
70
-
71
- return qb;
72
- }*/
73
- /**
74
- * Applies give find options to the given query builder.
75
-
76
- static applyOptionsToQueryBuilder<T>(qb: SelectQueryBuilder<T>, options: FindOneOptions<T>|FindManyOptions<T>|undefined): SelectQueryBuilder<T> {
77
-
78
- // if options are not set then simply return query builder. This is made for simplicity of usage.
79
- if (!options || (!this.isFindOneOptions(options) && !this.isFindManyOptions(options)))
80
- return qb;
81
-
82
- if (options.transaction === true) {
83
- qb.expressionMap.useTransaction = true;
84
- }
85
-
86
- if (!qb.expressionMap.mainAlias || !qb.expressionMap.mainAlias.hasMetadata)
87
- return qb;
88
-
89
- const metadata = qb.expressionMap.mainAlias!.metadata;
90
-
91
- // apply all options from FindOptions
92
- if (options.comment) {
93
- qb.comment(options.comment);
94
- }
95
-
96
- if (options.withDeleted) {
97
- qb.withDeleted();
98
- }
99
-
100
- if (options.select) {
101
- qb.select([]);
102
- options.select.forEach(select => {
103
- if (!metadata.hasColumnWithPropertyPath(`${select}`))
104
- throw new TypeORMError(`${select} column was not found in the ${metadata.name} entity.`);
105
-
106
- const columns = metadata.findColumnsWithPropertyPath(`${select}`);
107
-
108
- for (const column of columns) {
109
- qb.addSelect(qb.alias + "." + column.propertyPath);
110
- }
111
- });
112
- }
113
-
114
- if (options.relations) {
115
- // Copy because `applyRelationsRecursively` modifies it
116
- const allRelations = [...options.relations];
117
- this.applyRelationsRecursively(qb, allRelations, qb.expressionMap.mainAlias!.name, qb.expressionMap.mainAlias!.metadata, "");
118
- // recursive removes found relations from allRelations array
119
- // if there are relations left in this array it means those relations were not found in the entity structure
120
- // so, we give an exception about not found relations
121
- if (allRelations.length > 0)
122
- throw new FindRelationsNotFoundError(allRelations);
123
- }
124
-
125
- if (options.join) {
126
- if (options.join.leftJoin)
127
- Object.keys(options.join.leftJoin).forEach(key => {
128
- qb.leftJoin(options.join!.leftJoin![key], key);
129
- });
130
-
131
- if (options.join.innerJoin)
132
- Object.keys(options.join.innerJoin).forEach(key => {
133
- qb.innerJoin(options.join!.innerJoin![key], key);
134
- });
135
-
136
- if (options.join.leftJoinAndSelect)
137
- Object.keys(options.join.leftJoinAndSelect).forEach(key => {
138
- qb.leftJoinAndSelect(options.join!.leftJoinAndSelect![key], key);
139
- });
140
-
141
- if (options.join.innerJoinAndSelect)
142
- Object.keys(options.join.innerJoinAndSelect).forEach(key => {
143
- qb.innerJoinAndSelect(options.join!.innerJoinAndSelect![key], key);
144
- });
145
- }
146
-
147
- if (options.cache) {
148
- if (options.cache instanceof Object) {
149
- const cache = options.cache as { id: any, milliseconds: number };
150
- qb.cache(cache.id, cache.milliseconds);
151
- } else {
152
- qb.cache(options.cache);
153
- }
154
- }
155
-
156
- if (options.lock) {
157
- if (options.lock.mode === "optimistic") {
158
- qb.setLock(options.lock.mode, options.lock.version);
159
- } else if (
160
- options.lock.mode === "pessimistic_read" ||
161
- options.lock.mode === "pessimistic_write" ||
162
- options.lock.mode === "dirty_read" ||
163
- options.lock.mode === "pessimistic_partial_write" ||
164
- options.lock.mode === "pessimistic_write_or_fail" ||
165
- options.lock.mode === "for_no_key_update" ||
166
- options.lock.mode === "for_key_share"
167
- ) {
168
- const tableNames = options.lock.tables ? options.lock.tables.map((table) => {
169
- const tableAlias = qb.expressionMap.aliases.find((alias) => {
170
- return alias.metadata.tableNameWithoutPrefix === table;
171
- });
172
- if (!tableAlias) {
173
- throw new TypeORMError(`"${table}" is not part of this query`);
174
- }
175
- return qb.escape(tableAlias.name);
176
- }) : undefined;
177
- qb.setLock(options.lock.mode, undefined, tableNames);
178
- }
179
- }
180
-
181
- if (options.loadRelationIds === true) {
182
- qb.loadAllRelationIds();
183
-
184
- } else if (options.loadRelationIds instanceof Object) {
185
- qb.loadAllRelationIds(options.loadRelationIds as any);
186
- }
187
-
188
- if (options.where)
189
- qb.where(options.where);
190
-
191
- if ((options as FindManyOptions<T>).skip)
192
- qb.skip((options as FindManyOptions<T>).skip!);
193
-
194
- if ((options as FindManyOptions<T>).take)
195
- qb.take((options as FindManyOptions<T>).take!);
196
-
197
- if (options.order)
198
- Object.keys(options.order).forEach(key => {
199
- const order = ((options as FindOneOptions<T>).order as any)[key as any];
200
-
201
- if (!metadata.findColumnWithPropertyPath(key))
202
- throw new Error(`${key} column was not found in the ${metadata.name} entity.`);
203
-
204
- switch (order) {
205
- case 1:
206
- qb.addOrderBy(qb.alias + "." + key, "ASC");
207
- break;
208
- case -1:
209
- qb.addOrderBy(qb.alias + "." + key, "DESC");
210
- break;
211
- case "ASC":
212
- qb.addOrderBy(qb.alias + "." + key, "ASC");
213
- break;
214
- case "DESC":
215
- qb.addOrderBy(qb.alias + "." + key, "DESC");
216
- break;
217
- }
218
- });
219
-
220
- return qb;
221
- }*/
222
61
  static applyOptionsToTreeQueryBuilder(qb, options) {
223
62
  if (options?.relations) {
224
63
  // Copy because `applyRelationsRecursively` modifies it
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/find-options/FindOptionsUtils.ts"],"names":[],"mappings":"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","file":"FindOptionsUtils.js","sourcesContent":["import { FindManyOptions } from \"./FindManyOptions\"\nimport { FindOneOptions } from \"./FindOneOptions\"\nimport { SelectQueryBuilder } from \"../query-builder/SelectQueryBuilder\"\nimport { FindRelationsNotFoundError } from \"../error\"\nimport { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\nimport { FindTreeOptions } from \"./FindTreeOptions\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { EntityPropertyNotFoundError } from \"../error\"\n\n/**\n * Utilities to work with FindOptions.\n */\nexport class FindOptionsUtils {\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Checks if given object is really instance of FindOneOptions interface.\n */\n static isFindOneOptions<Entity = any>(\n obj: any,\n ): obj is FindOneOptions<Entity> {\n const possibleOptions: FindOneOptions<Entity> = obj\n return (\n possibleOptions &&\n (Array.isArray(possibleOptions.select) ||\n Array.isArray(possibleOptions.relations) ||\n typeof possibleOptions.select === \"object\" ||\n typeof possibleOptions.relations === \"object\" ||\n typeof possibleOptions.where === \"object\" ||\n // typeof possibleOptions.where === \"string\" ||\n typeof possibleOptions.join === \"object\" ||\n typeof possibleOptions.order === \"object\" ||\n typeof possibleOptions.cache === \"object\" ||\n typeof possibleOptions.cache === \"boolean\" ||\n typeof possibleOptions.cache === \"number\" ||\n typeof possibleOptions.comment === \"string\" ||\n typeof possibleOptions.lock === \"object\" ||\n typeof possibleOptions.loadRelationIds === \"object\" ||\n typeof possibleOptions.loadRelationIds === \"boolean\" ||\n typeof possibleOptions.loadEagerRelations === \"boolean\" ||\n typeof possibleOptions.withDeleted === \"boolean\" ||\n typeof possibleOptions.relationLoadStrategy === \"string\" ||\n typeof possibleOptions.transaction === \"boolean\")\n )\n }\n\n /**\n * Checks if given object is really instance of FindManyOptions interface.\n */\n static isFindManyOptions<Entity = any>(\n obj: any,\n ): obj is FindManyOptions<Entity> {\n const possibleOptions: FindManyOptions<Entity> = obj\n return (\n possibleOptions &&\n (this.isFindOneOptions(possibleOptions) ||\n typeof (possibleOptions as FindManyOptions<any>).skip ===\n \"number\" ||\n typeof (possibleOptions as FindManyOptions<any>).take ===\n \"number\" ||\n typeof (possibleOptions as FindManyOptions<any>).skip ===\n \"string\" ||\n typeof (possibleOptions as FindManyOptions<any>).take ===\n \"string\")\n )\n }\n\n /**\n * Checks if given object is really instance of FindOptions interface.\n */\n static extractFindManyOptionsAlias(object: any): string | undefined {\n if (this.isFindManyOptions(object) && object.join)\n return object.join.alias\n\n return undefined\n }\n\n /**\n * Applies give find many options to the given query builder.\n\n static applyFindManyOptionsOrConditionsToQueryBuilder<T>(qb: SelectQueryBuilder<T>, options: FindManyOptions<T>|Partial<T>|undefined): SelectQueryBuilder<T> {\n if (this.isFindManyOptions(options))\n return this.applyOptionsToQueryBuilder(qb, options);\n\n if (options)\n return qb.where(options);\n\n return qb;\n }*/\n\n /**\n * Applies give find options to the given query builder.\n\n static applyOptionsToQueryBuilder<T>(qb: SelectQueryBuilder<T>, options: FindOneOptions<T>|FindManyOptions<T>|undefined): SelectQueryBuilder<T> {\n\n // if options are not set then simply return query builder. This is made for simplicity of usage.\n if (!options || (!this.isFindOneOptions(options) && !this.isFindManyOptions(options)))\n return qb;\n\n if (options.transaction === true) {\n qb.expressionMap.useTransaction = true;\n }\n\n if (!qb.expressionMap.mainAlias || !qb.expressionMap.mainAlias.hasMetadata)\n return qb;\n\n const metadata = qb.expressionMap.mainAlias!.metadata;\n\n // apply all options from FindOptions\n if (options.comment) {\n qb.comment(options.comment);\n }\n\n if (options.withDeleted) {\n qb.withDeleted();\n }\n\n if (options.select) {\n qb.select([]);\n options.select.forEach(select => {\n if (!metadata.hasColumnWithPropertyPath(`${select}`))\n throw new TypeORMError(`${select} column was not found in the ${metadata.name} entity.`);\n\n const columns = metadata.findColumnsWithPropertyPath(`${select}`);\n\n for (const column of columns) {\n qb.addSelect(qb.alias + \".\" + column.propertyPath);\n }\n });\n }\n\n if (options.relations) {\n // Copy because `applyRelationsRecursively` modifies it\n const allRelations = [...options.relations];\n this.applyRelationsRecursively(qb, allRelations, qb.expressionMap.mainAlias!.name, qb.expressionMap.mainAlias!.metadata, \"\");\n // recursive removes found relations from allRelations array\n // if there are relations left in this array it means those relations were not found in the entity structure\n // so, we give an exception about not found relations\n if (allRelations.length > 0)\n throw new FindRelationsNotFoundError(allRelations);\n }\n\n if (options.join) {\n if (options.join.leftJoin)\n Object.keys(options.join.leftJoin).forEach(key => {\n qb.leftJoin(options.join!.leftJoin![key], key);\n });\n\n if (options.join.innerJoin)\n Object.keys(options.join.innerJoin).forEach(key => {\n qb.innerJoin(options.join!.innerJoin![key], key);\n });\n\n if (options.join.leftJoinAndSelect)\n Object.keys(options.join.leftJoinAndSelect).forEach(key => {\n qb.leftJoinAndSelect(options.join!.leftJoinAndSelect![key], key);\n });\n\n if (options.join.innerJoinAndSelect)\n Object.keys(options.join.innerJoinAndSelect).forEach(key => {\n qb.innerJoinAndSelect(options.join!.innerJoinAndSelect![key], key);\n });\n }\n\n if (options.cache) {\n if (options.cache instanceof Object) {\n const cache = options.cache as { id: any, milliseconds: number };\n qb.cache(cache.id, cache.milliseconds);\n } else {\n qb.cache(options.cache);\n }\n }\n\n if (options.lock) {\n if (options.lock.mode === \"optimistic\") {\n qb.setLock(options.lock.mode, options.lock.version);\n } else if (\n options.lock.mode === \"pessimistic_read\" ||\n options.lock.mode === \"pessimistic_write\" ||\n options.lock.mode === \"dirty_read\" ||\n options.lock.mode === \"pessimistic_partial_write\" ||\n options.lock.mode === \"pessimistic_write_or_fail\" ||\n options.lock.mode === \"for_no_key_update\" ||\n options.lock.mode === \"for_key_share\"\n ) {\n const tableNames = options.lock.tables ? options.lock.tables.map((table) => {\n const tableAlias = qb.expressionMap.aliases.find((alias) => {\n return alias.metadata.tableNameWithoutPrefix === table;\n });\n if (!tableAlias) {\n throw new TypeORMError(`\"${table}\" is not part of this query`);\n }\n return qb.escape(tableAlias.name);\n }) : undefined;\n qb.setLock(options.lock.mode, undefined, tableNames);\n }\n }\n\n if (options.loadRelationIds === true) {\n qb.loadAllRelationIds();\n\n } else if (options.loadRelationIds instanceof Object) {\n qb.loadAllRelationIds(options.loadRelationIds as any);\n }\n\n if (options.where)\n qb.where(options.where);\n\n if ((options as FindManyOptions<T>).skip)\n qb.skip((options as FindManyOptions<T>).skip!);\n\n if ((options as FindManyOptions<T>).take)\n qb.take((options as FindManyOptions<T>).take!);\n\n if (options.order)\n Object.keys(options.order).forEach(key => {\n const order = ((options as FindOneOptions<T>).order as any)[key as any];\n\n if (!metadata.findColumnWithPropertyPath(key))\n throw new Error(`${key} column was not found in the ${metadata.name} entity.`);\n\n switch (order) {\n case 1:\n qb.addOrderBy(qb.alias + \".\" + key, \"ASC\");\n break;\n case -1:\n qb.addOrderBy(qb.alias + \".\" + key, \"DESC\");\n break;\n case \"ASC\":\n qb.addOrderBy(qb.alias + \".\" + key, \"ASC\");\n break;\n case \"DESC\":\n qb.addOrderBy(qb.alias + \".\" + key, \"DESC\");\n break;\n }\n });\n\n return qb;\n }*/\n\n static applyOptionsToTreeQueryBuilder<T extends ObjectLiteral>(\n qb: SelectQueryBuilder<T>,\n options?: FindTreeOptions,\n ): SelectQueryBuilder<T> {\n if (options?.relations) {\n // Copy because `applyRelationsRecursively` modifies it\n const allRelations = [...options.relations]\n\n FindOptionsUtils.applyRelationsRecursively(\n qb,\n allRelations,\n qb.expressionMap.mainAlias!.name,\n qb.expressionMap.mainAlias!.metadata,\n \"\",\n )\n\n // recursive removes found relations from allRelations array\n // if there are relations left in this array it means those relations were not found in the entity structure\n // so, we give an exception about not found relations\n if (allRelations.length > 0)\n throw new FindRelationsNotFoundError(allRelations)\n }\n\n return qb\n }\n\n // -------------------------------------------------------------------------\n // Protected Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Adds joins for all relations and sub-relations of the given relations provided in the find options.\n */\n public static applyRelationsRecursively(\n qb: SelectQueryBuilder<any>,\n allRelations: string[],\n alias: string,\n metadata: EntityMetadata,\n prefix: string,\n ): void {\n // find all relations that match given prefix\n let matchedBaseRelations: RelationMetadata[] = []\n if (prefix) {\n const regexp = new RegExp(\"^\" + prefix.replace(\".\", \"\\\\.\") + \"\\\\.\")\n matchedBaseRelations = allRelations\n .filter((relation) => relation.match(regexp))\n .map((relation) =>\n metadata.findRelationWithPropertyPath(\n relation.replace(regexp, \"\"),\n ),\n )\n .filter((entity) => entity) as RelationMetadata[]\n } else {\n matchedBaseRelations = allRelations\n .map((relation) =>\n metadata.findRelationWithPropertyPath(relation),\n )\n .filter((entity) => entity) as RelationMetadata[]\n }\n\n // go through all matched relations and add join for them\n matchedBaseRelations.forEach((relation) => {\n // generate a relation alias\n const relationAlias: string = DriverUtils.buildAlias(\n qb.connection.driver,\n { joiner: \"__\" },\n alias,\n relation.propertyPath,\n )\n\n // add a join for the found relation\n const selection = alias + \".\" + relation.propertyPath\n if (qb.expressionMap.relationLoadStrategy === \"query\") {\n qb.concatRelationMetadata(relation)\n } else {\n qb.leftJoinAndSelect(selection, relationAlias)\n }\n\n // remove added relations from the allRelations array, this is needed to find all not found relations at the end\n allRelations.splice(\n allRelations.indexOf(\n prefix\n ? prefix + \".\" + relation.propertyPath\n : relation.propertyPath,\n ),\n 1,\n )\n\n // try to find sub-relations\n let relationMetadata: EntityMetadata | undefined\n let relationName: string | undefined\n\n if (qb.expressionMap.relationLoadStrategy === \"query\") {\n relationMetadata = relation.inverseEntityMetadata\n relationName = relationAlias\n } else {\n const join = qb.expressionMap.joinAttributes.find(\n (join) => join.entityOrProperty === selection,\n )\n relationMetadata = join!.metadata!\n relationName = join!.alias.name\n }\n\n if (!relationName || !relationMetadata) {\n throw new EntityPropertyNotFoundError(\n relation.propertyPath,\n metadata,\n )\n }\n\n this.applyRelationsRecursively(\n qb,\n allRelations,\n relationName,\n relationMetadata,\n prefix\n ? prefix + \".\" + relation.propertyPath\n : relation.propertyPath,\n )\n\n // join the eager relations of the found relation\n // Only supported for \"join\" relationLoadStrategy\n if (qb.expressionMap.relationLoadStrategy === \"join\") {\n const relMetadata = metadata.relations.find(\n (metadata) =>\n metadata.propertyName === relation.propertyPath,\n )\n if (relMetadata) {\n this.joinEagerRelations(\n qb,\n relationAlias,\n relMetadata.inverseEntityMetadata,\n )\n }\n }\n })\n }\n\n public static joinEagerRelations(\n qb: SelectQueryBuilder<any>,\n alias: string,\n metadata: EntityMetadata,\n ) {\n metadata.eagerRelations.forEach((relation) => {\n // generate a relation alias\n let relationAlias: string = DriverUtils.buildAlias(\n qb.connection.driver,\n { joiner: \"__\" },\n alias,\n relation.propertyName,\n )\n\n // add a join for the relation\n // Checking whether the relation wasn't joined yet.\n let addJoin = true\n // TODO: Review this validation\n for (const join of qb.expressionMap.joinAttributes) {\n if (\n join.condition !== undefined ||\n join.mapToProperty !== undefined ||\n join.isMappingMany !== undefined ||\n join.direction !== \"LEFT\" ||\n join.entityOrProperty !==\n `${alias}.${relation.propertyPath}`\n ) {\n continue\n }\n addJoin = false\n relationAlias = join.alias.name\n break\n }\n\n const joinAlreadyAdded = Boolean(\n qb.expressionMap.joinAttributes.find(\n (joinAttribute) =>\n joinAttribute.alias.name === relationAlias,\n ),\n )\n\n if (addJoin && !joinAlreadyAdded) {\n qb.leftJoin(alias + \".\" + relation.propertyPath, relationAlias)\n }\n\n // Checking whether the relation wasn't selected yet.\n // This check shall be after the join check to detect relationAlias.\n let addSelect = true\n for (const select of qb.expressionMap.selects) {\n if (\n select.aliasName !== undefined ||\n select.virtual !== undefined ||\n select.selection !== relationAlias\n ) {\n continue\n }\n addSelect = false\n break\n }\n\n if (addSelect) {\n qb.addSelect(relationAlias)\n }\n\n // (recursive) join the eager relations\n this.joinEagerRelations(\n qb,\n relationAlias,\n relation.inverseEntityMetadata,\n )\n })\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/find-options/FindOptionsUtils.ts"],"names":[],"mappings":"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","file":"FindOptionsUtils.js","sourcesContent":["import { FindManyOptions } from \"./FindManyOptions\"\nimport { FindOneOptions } from \"./FindOneOptions\"\nimport { SelectQueryBuilder } from \"../query-builder/SelectQueryBuilder\"\nimport { FindRelationsNotFoundError } from \"../error\"\nimport { EntityMetadata } from \"../metadata/EntityMetadata\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\nimport { FindTreeOptions } from \"./FindTreeOptions\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { EntityPropertyNotFoundError } from \"../error\"\n\n/**\n * Utilities to work with FindOptions.\n */\nexport class FindOptionsUtils {\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Checks if given object is really instance of FindOneOptions interface.\n */\n static isFindOneOptions<Entity = any>(\n obj: any,\n ): obj is FindOneOptions<Entity> {\n const possibleOptions: FindOneOptions<Entity> = obj\n return (\n possibleOptions &&\n (Array.isArray(possibleOptions.select) ||\n Array.isArray(possibleOptions.relations) ||\n typeof possibleOptions.select === \"object\" ||\n typeof possibleOptions.relations === \"object\" ||\n typeof possibleOptions.where === \"object\" ||\n // typeof possibleOptions.where === \"string\" ||\n typeof possibleOptions.join === \"object\" ||\n typeof possibleOptions.order === \"object\" ||\n typeof possibleOptions.cache === \"object\" ||\n typeof possibleOptions.cache === \"boolean\" ||\n typeof possibleOptions.cache === \"number\" ||\n typeof possibleOptions.comment === \"string\" ||\n typeof possibleOptions.lock === \"object\" ||\n typeof possibleOptions.loadRelationIds === \"object\" ||\n typeof possibleOptions.loadRelationIds === \"boolean\" ||\n typeof possibleOptions.loadEagerRelations === \"boolean\" ||\n typeof possibleOptions.withDeleted === \"boolean\" ||\n typeof possibleOptions.relationLoadStrategy === \"string\" ||\n typeof possibleOptions.transaction === \"boolean\")\n )\n }\n\n /**\n * Checks if given object is really instance of FindManyOptions interface.\n */\n static isFindManyOptions<Entity = any>(\n obj: any,\n ): obj is FindManyOptions<Entity> {\n const possibleOptions: FindManyOptions<Entity> = obj\n return (\n possibleOptions &&\n (this.isFindOneOptions(possibleOptions) ||\n typeof (possibleOptions as FindManyOptions<any>).skip ===\n \"number\" ||\n typeof (possibleOptions as FindManyOptions<any>).take ===\n \"number\" ||\n typeof (possibleOptions as FindManyOptions<any>).skip ===\n \"string\" ||\n typeof (possibleOptions as FindManyOptions<any>).take ===\n \"string\")\n )\n }\n\n /**\n * Checks if given object is really instance of FindOptions interface.\n */\n static extractFindManyOptionsAlias(object: any): string | undefined {\n if (this.isFindManyOptions(object) && object.join)\n return object.join.alias\n\n return undefined\n }\n\n static applyOptionsToTreeQueryBuilder<T extends ObjectLiteral>(\n qb: SelectQueryBuilder<T>,\n options?: FindTreeOptions,\n ): SelectQueryBuilder<T> {\n if (options?.relations) {\n // Copy because `applyRelationsRecursively` modifies it\n const allRelations = [...options.relations]\n\n FindOptionsUtils.applyRelationsRecursively(\n qb,\n allRelations,\n qb.expressionMap.mainAlias!.name,\n qb.expressionMap.mainAlias!.metadata,\n \"\",\n )\n\n // recursive removes found relations from allRelations array\n // if there are relations left in this array it means those relations were not found in the entity structure\n // so, we give an exception about not found relations\n if (allRelations.length > 0)\n throw new FindRelationsNotFoundError(allRelations)\n }\n\n return qb\n }\n\n // -------------------------------------------------------------------------\n // Protected Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Adds joins for all relations and sub-relations of the given relations provided in the find options.\n */\n public static applyRelationsRecursively(\n qb: SelectQueryBuilder<any>,\n allRelations: string[],\n alias: string,\n metadata: EntityMetadata,\n prefix: string,\n ): void {\n // find all relations that match given prefix\n let matchedBaseRelations: RelationMetadata[] = []\n if (prefix) {\n const regexp = new RegExp(\"^\" + prefix.replace(\".\", \"\\\\.\") + \"\\\\.\")\n matchedBaseRelations = allRelations\n .filter((relation) => relation.match(regexp))\n .map((relation) =>\n metadata.findRelationWithPropertyPath(\n relation.replace(regexp, \"\"),\n ),\n )\n .filter((entity) => entity) as RelationMetadata[]\n } else {\n matchedBaseRelations = allRelations\n .map((relation) =>\n metadata.findRelationWithPropertyPath(relation),\n )\n .filter((entity) => entity) as RelationMetadata[]\n }\n\n // go through all matched relations and add join for them\n matchedBaseRelations.forEach((relation) => {\n // generate a relation alias\n const relationAlias: string = DriverUtils.buildAlias(\n qb.connection.driver,\n { joiner: \"__\" },\n alias,\n relation.propertyPath,\n )\n\n // add a join for the found relation\n const selection = alias + \".\" + relation.propertyPath\n if (qb.expressionMap.relationLoadStrategy === \"query\") {\n qb.concatRelationMetadata(relation)\n } else {\n qb.leftJoinAndSelect(selection, relationAlias)\n }\n\n // remove added relations from the allRelations array, this is needed to find all not found relations at the end\n allRelations.splice(\n allRelations.indexOf(\n prefix\n ? prefix + \".\" + relation.propertyPath\n : relation.propertyPath,\n ),\n 1,\n )\n\n // try to find sub-relations\n let relationMetadata: EntityMetadata | undefined\n let relationName: string | undefined\n\n if (qb.expressionMap.relationLoadStrategy === \"query\") {\n relationMetadata = relation.inverseEntityMetadata\n relationName = relationAlias\n } else {\n const join = qb.expressionMap.joinAttributes.find(\n (join) => join.entityOrProperty === selection,\n )\n relationMetadata = join!.metadata!\n relationName = join!.alias.name\n }\n\n if (!relationName || !relationMetadata) {\n throw new EntityPropertyNotFoundError(\n relation.propertyPath,\n metadata,\n )\n }\n\n this.applyRelationsRecursively(\n qb,\n allRelations,\n relationName,\n relationMetadata,\n prefix\n ? prefix + \".\" + relation.propertyPath\n : relation.propertyPath,\n )\n\n // join the eager relations of the found relation\n // Only supported for \"join\" relationLoadStrategy\n if (qb.expressionMap.relationLoadStrategy === \"join\") {\n const relMetadata = metadata.relations.find(\n (metadata) =>\n metadata.propertyName === relation.propertyPath,\n )\n if (relMetadata) {\n this.joinEagerRelations(\n qb,\n relationAlias,\n relMetadata.inverseEntityMetadata,\n )\n }\n }\n })\n }\n\n public static joinEagerRelations(\n qb: SelectQueryBuilder<any>,\n alias: string,\n metadata: EntityMetadata,\n ) {\n metadata.eagerRelations.forEach((relation) => {\n // generate a relation alias\n let relationAlias: string = DriverUtils.buildAlias(\n qb.connection.driver,\n { joiner: \"__\" },\n alias,\n relation.propertyName,\n )\n\n // add a join for the relation\n // Checking whether the relation wasn't joined yet.\n let addJoin = true\n // TODO: Review this validation\n for (const join of qb.expressionMap.joinAttributes) {\n if (\n join.condition !== undefined ||\n join.mapToProperty !== undefined ||\n join.isMappingMany !== undefined ||\n join.direction !== \"LEFT\" ||\n join.entityOrProperty !==\n `${alias}.${relation.propertyPath}`\n ) {\n continue\n }\n addJoin = false\n relationAlias = join.alias.name\n break\n }\n\n const joinAlreadyAdded = Boolean(\n qb.expressionMap.joinAttributes.find(\n (joinAttribute) =>\n joinAttribute.alias.name === relationAlias,\n ),\n )\n\n if (addJoin && !joinAlreadyAdded) {\n qb.leftJoin(alias + \".\" + relation.propertyPath, relationAlias)\n }\n\n // Checking whether the relation wasn't selected yet.\n // This check shall be after the join check to detect relationAlias.\n let addSelect = true\n for (const select of qb.expressionMap.selects) {\n if (\n select.aliasName !== undefined ||\n select.virtual !== undefined ||\n select.selection !== relationAlias\n ) {\n continue\n }\n addSelect = false\n break\n }\n\n if (addSelect) {\n qb.addSelect(relationAlias)\n }\n\n // (recursive) join the eager relations\n this.joinEagerRelations(\n qb,\n relationAlias,\n relation.inverseEntityMetadata,\n )\n })\n }\n}\n"],"sourceRoot":".."}
@@ -263,7 +263,7 @@ export interface QueryRunner {
263
263
  */
264
264
  createUniqueConstraints(table: Table | string, uniqueConstraints: TableUnique[]): Promise<void>;
265
265
  /**
266
- * Drops an unique constraint.
266
+ * Drops a unique constraint.
267
267
  */
268
268
  dropUniqueConstraint(table: Table | string, uniqueOrName: TableUnique | string): Promise<void>;
269
269
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-runner/QueryRunner.ts"],"names":[],"mappings":"","file":"QueryRunner.js","sourcesContent":["import { TableColumn } from \"../schema-builder/table/TableColumn\"\nimport { Table } from \"../schema-builder/table/Table\"\nimport { TableForeignKey } from \"../schema-builder/table/TableForeignKey\"\nimport { TableIndex } from \"../schema-builder/table/TableIndex\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { ReadStream } from \"../platform/PlatformTools\"\nimport { EntityManager } from \"../entity-manager/EntityManager\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { SqlInMemory } from \"../driver/SqlInMemory\"\nimport { TableUnique } from \"../schema-builder/table/TableUnique\"\nimport { View } from \"../schema-builder/view/View\"\nimport { Broadcaster } from \"../subscriber/Broadcaster\"\nimport { TableCheck } from \"../schema-builder/table/TableCheck\"\nimport { IsolationLevel } from \"../driver/types/IsolationLevel\"\nimport { TableExclusion } from \"../schema-builder/table/TableExclusion\"\nimport { QueryResult } from \"./QueryResult\"\nimport { ReplicationMode } from \"../driver/types/ReplicationMode\"\n\n/**\n * Runs queries on a single database connection.\n */\nexport interface QueryRunner {\n /**\n * Connection used by this query runner.\n */\n readonly connection: DataSource\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n readonly broadcaster: Broadcaster\n\n /**\n * Entity manager working only with this query runner.\n */\n readonly manager: EntityManager\n\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n */\n readonly isReleased: boolean\n\n /**\n * Indicates if transaction is in progress.\n */\n readonly isTransactionActive: boolean\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data: ObjectLiteral\n\n /**\n * All synchronized tables in the database.\n *\n * @deprecated Call `getTables()`\n */\n loadedTables: Table[]\n\n /**\n * All synchronized views in the database.\n *\n * @deprecated Call `getViews()`\n */\n loadedViews: View[]\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n connect(): Promise<any>\n\n /**\n * Called before migrations are run.\n */\n beforeMigration(): Promise<void>\n\n /**\n * Called after migrations are run.\n */\n afterMigration(): Promise<void>\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods after connection is released.\n */\n release(): Promise<void>\n\n /**\n * Removes all tables from the currently connected database.\n * Be careful with using this method and avoid using it in production or migrations\n * (because it can clear all your database).\n */\n clearDatabase(database?: string): Promise<void>\n\n /**\n * Starts transaction.\n */\n startTransaction(isolationLevel?: IsolationLevel): Promise<void>\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n commitTransaction(): Promise<void>\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n rollbackTransaction(): Promise<void>\n\n /**\n * Executes a given SQL query and returns raw database results.\n */\n query(\n query: string,\n parameters: any[] | undefined,\n useStructuredResult: true,\n ): Promise<QueryResult>\n\n /**\n * Executes a given SQL query and returns raw database results.\n */\n query(query: string, parameters?: any[]): Promise<any>\n\n /**\n * Tagged template function that executes raw SQL query and returns raw database results.\n * Template expressions are automatically transformed into database parameters.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n * Note: Don't call this as a regular function, it is meant to be used with backticks to tag a template literal.\n * Example: queryRunner.sql`SELECT * FROM table_name WHERE id = ${id}`\n */\n sql<T = any>(\n strings: TemplateStringsArray,\n ...values: unknown[]\n ): Promise<T>\n\n /**\n * Returns raw data stream.\n */\n stream(\n query: string,\n parameters?: any[],\n onEnd?: Function,\n onError?: Function,\n ): Promise<ReadStream>\n\n /**\n * Returns all available database names including system databases.\n */\n getDatabases(): Promise<string[]>\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n * Useful for SQLServer and Postgres only.\n */\n getSchemas(database?: string): Promise<string[]>\n\n /**\n * Loads a table by a given name from the database.\n */\n getTable(tablePath: string): Promise<Table | undefined>\n\n /**\n * Loads all tables from the database and returns them.\n */\n getTables(tablePaths?: string[]): Promise<Table[]>\n\n /**\n * Loads a view by a given name from the database.\n */\n getView(viewPath: string): Promise<View | undefined>\n\n /**\n * Loads all views from the database and returns them.\n */\n getViews(viewPaths?: string[]): Promise<View[]>\n\n /**\n * Returns replication mode (ex: `master` or `slave`).\n */\n getReplicationMode(): ReplicationMode\n\n /**\n * Checks if a database with the given name exist.\n */\n hasDatabase(database: string): Promise<boolean>\n\n /**\n * Loads currently using database\n */\n getCurrentDatabase(): Promise<string | undefined>\n\n /**\n * Checks if a schema with the given name exist.\n */\n hasSchema(schema: string): Promise<boolean>\n\n /**\n * Loads currently using database schema\n */\n getCurrentSchema(): Promise<string | undefined>\n\n /**\n * Checks if a table with the given name exist.\n */\n hasTable(table: Table | string): Promise<boolean>\n\n /**\n * Checks if a column exist in the table.\n */\n hasColumn(table: Table | string, columnName: string): Promise<boolean>\n\n /**\n * Creates a new database.\n */\n createDatabase(database: string, ifNotExist?: boolean): Promise<void>\n\n /**\n * Drops database.\n */\n dropDatabase(database: string, ifExist?: boolean): Promise<void>\n\n /**\n * Creates a new table schema.\n */\n createSchema(schemaPath: string, ifNotExist?: boolean): Promise<void>\n\n /**\n * Drops table schema.\n * For SqlServer can accept schema path (e.g. 'dbName.schemaName') as parameter.\n * If schema path passed, it will drop schema in specified database.\n */\n dropSchema(\n schemaPath: string,\n ifExist?: boolean,\n isCascade?: boolean,\n ): Promise<void>\n\n /**\n * Creates a new table.\n */\n createTable(\n table: Table,\n ifNotExist?: boolean,\n createForeignKeys?: boolean,\n createIndices?: boolean,\n ): Promise<void>\n\n /**\n * Drops a table.\n */\n dropTable(\n table: Table | string,\n ifExist?: boolean,\n dropForeignKeys?: boolean,\n dropIndices?: boolean,\n ): Promise<void>\n\n /**\n * Creates a new view.\n */\n createView(\n view: View,\n syncWithMetadata?: boolean,\n oldView?: View,\n ): Promise<void>\n\n /**\n * Drops a view.\n */\n dropView(view: View | string): Promise<void>\n\n /**\n * Renames a table.\n */\n renameTable(\n oldTableOrName: Table | string,\n newTableName: string,\n ): Promise<void>\n\n /**\n * Change table comment. Only supports MySQL and MariaDB\n */\n changeTableComment(\n tableOrName: Table | string,\n comment?: string,\n ): Promise<void>\n\n /**\n * Adds a new column.\n */\n addColumn(table: Table | string, column: TableColumn): Promise<void>\n\n /**\n * Adds new columns.\n */\n addColumns(table: Table | string, columns: TableColumn[]): Promise<void>\n\n /**\n * Renames a column.\n */\n renameColumn(\n table: Table | string,\n oldColumnOrName: TableColumn | string,\n newColumnOrName: TableColumn | string,\n ): Promise<void>\n\n /**\n * Changes a column in the table.\n */\n changeColumn(\n table: Table | string,\n oldColumn: TableColumn | string,\n newColumn: TableColumn,\n ): Promise<void>\n\n /**\n * Changes columns in the table.\n */\n changeColumns(\n table: Table | string,\n changedColumns: { oldColumn: TableColumn; newColumn: TableColumn }[],\n ): Promise<void>\n\n /**\n * Drops a column in the table.\n */\n dropColumn(\n table: Table | string,\n column: TableColumn | string,\n ): Promise<void>\n\n /**\n * Drops columns in the table.\n */\n dropColumns(\n table: Table | string,\n columns: TableColumn[] | string[],\n ): Promise<void>\n\n /**\n * Creates a new primary key.\n */\n createPrimaryKey(\n table: Table | string,\n columnNames: string[],\n constraintName?: string,\n ): Promise<void>\n\n /**\n * Updates composite primary keys.\n */\n updatePrimaryKeys(\n table: Table | string,\n columns: TableColumn[],\n ): Promise<void>\n\n /**\n * Drops a primary key.\n */\n dropPrimaryKey(\n table: Table | string,\n constraintName?: string,\n ): Promise<void>\n\n /**\n * Creates a new unique constraint.\n */\n createUniqueConstraint(\n table: Table | string,\n uniqueConstraint: TableUnique,\n ): Promise<void>\n\n /**\n * Creates new unique constraints.\n */\n createUniqueConstraints(\n table: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void>\n\n /**\n * Drops an unique constraint.\n */\n dropUniqueConstraint(\n table: Table | string,\n uniqueOrName: TableUnique | string,\n ): Promise<void>\n\n /**\n * Drops unique constraints.\n */\n dropUniqueConstraints(\n table: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void>\n\n /**\n * Creates a new check constraint.\n */\n createCheckConstraint(\n table: Table | string,\n checkConstraint: TableCheck,\n ): Promise<void>\n\n /**\n * Creates new check constraints.\n */\n createCheckConstraints(\n table: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void>\n\n /**\n * Drops a check constraint.\n */\n dropCheckConstraint(\n table: Table | string,\n checkOrName: TableCheck | string,\n ): Promise<void>\n\n /**\n * Drops check constraints.\n */\n dropCheckConstraints(\n table: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void>\n\n /**\n * Creates a new exclusion constraint.\n */\n createExclusionConstraint(\n table: Table | string,\n exclusionConstraint: TableExclusion,\n ): Promise<void>\n\n /**\n * Creates new exclusion constraints.\n */\n createExclusionConstraints(\n table: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void>\n\n /**\n * Drops a exclusion constraint.\n */\n dropExclusionConstraint(\n table: Table | string,\n exclusionOrName: TableExclusion | string,\n ): Promise<void>\n\n /**\n * Drops exclusion constraints.\n */\n dropExclusionConstraints(\n table: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void>\n\n /**\n * Creates a new foreign key.\n */\n createForeignKey(\n table: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void>\n\n /**\n * Creates new foreign keys.\n */\n createForeignKeys(\n table: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void>\n\n /**\n * Drops a foreign key.\n */\n dropForeignKey(\n table: Table | string,\n foreignKeyOrName: TableForeignKey | string,\n ): Promise<void>\n\n /**\n * Drops foreign keys.\n */\n dropForeignKeys(\n table: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void>\n\n /**\n * Creates a new index.\n */\n createIndex(table: Table | string, index: TableIndex): Promise<void>\n\n /**\n * Creates new indices.\n */\n createIndices(table: Table | string, indices: TableIndex[]): Promise<void>\n\n /**\n * Drops an index.\n */\n dropIndex(table: Table | string, index: TableIndex | string): Promise<void>\n\n /**\n * Drops indices.\n */\n dropIndices(table: Table | string, indices: TableIndex[]): Promise<void>\n\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n clearTable(tableName: string): Promise<void>\n\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n enableSqlMemory(): void\n\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n disableSqlMemory(): void\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory\n\n /**\n * Executes up sql queries.\n */\n executeMemoryUpSql(): Promise<void>\n\n /**\n * Executes down sql queries.\n */\n executeMemoryDownSql(): Promise<void>\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-runner/QueryRunner.ts"],"names":[],"mappings":"","file":"QueryRunner.js","sourcesContent":["import { TableColumn } from \"../schema-builder/table/TableColumn\"\nimport { Table } from \"../schema-builder/table/Table\"\nimport { TableForeignKey } from \"../schema-builder/table/TableForeignKey\"\nimport { TableIndex } from \"../schema-builder/table/TableIndex\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { ReadStream } from \"../platform/PlatformTools\"\nimport { EntityManager } from \"../entity-manager/EntityManager\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { SqlInMemory } from \"../driver/SqlInMemory\"\nimport { TableUnique } from \"../schema-builder/table/TableUnique\"\nimport { View } from \"../schema-builder/view/View\"\nimport { Broadcaster } from \"../subscriber/Broadcaster\"\nimport { TableCheck } from \"../schema-builder/table/TableCheck\"\nimport { IsolationLevel } from \"../driver/types/IsolationLevel\"\nimport { TableExclusion } from \"../schema-builder/table/TableExclusion\"\nimport { QueryResult } from \"./QueryResult\"\nimport { ReplicationMode } from \"../driver/types/ReplicationMode\"\n\n/**\n * Runs queries on a single database connection.\n */\nexport interface QueryRunner {\n /**\n * Connection used by this query runner.\n */\n readonly connection: DataSource\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n readonly broadcaster: Broadcaster\n\n /**\n * Entity manager working only with this query runner.\n */\n readonly manager: EntityManager\n\n /**\n * Indicates if connection for this query runner is released.\n * Once its released, query runner cannot run queries anymore.\n */\n readonly isReleased: boolean\n\n /**\n * Indicates if transaction is in progress.\n */\n readonly isTransactionActive: boolean\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data: ObjectLiteral\n\n /**\n * All synchronized tables in the database.\n *\n * @deprecated Call `getTables()`\n */\n loadedTables: Table[]\n\n /**\n * All synchronized views in the database.\n *\n * @deprecated Call `getViews()`\n */\n loadedViews: View[]\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n connect(): Promise<any>\n\n /**\n * Called before migrations are run.\n */\n beforeMigration(): Promise<void>\n\n /**\n * Called after migrations are run.\n */\n afterMigration(): Promise<void>\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods after connection is released.\n */\n release(): Promise<void>\n\n /**\n * Removes all tables from the currently connected database.\n * Be careful with using this method and avoid using it in production or migrations\n * (because it can clear all your database).\n */\n clearDatabase(database?: string): Promise<void>\n\n /**\n * Starts transaction.\n */\n startTransaction(isolationLevel?: IsolationLevel): Promise<void>\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n commitTransaction(): Promise<void>\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n rollbackTransaction(): Promise<void>\n\n /**\n * Executes a given SQL query and returns raw database results.\n */\n query(\n query: string,\n parameters: any[] | undefined,\n useStructuredResult: true,\n ): Promise<QueryResult>\n\n /**\n * Executes a given SQL query and returns raw database results.\n */\n query(query: string, parameters?: any[]): Promise<any>\n\n /**\n * Tagged template function that executes raw SQL query and returns raw database results.\n * Template expressions are automatically transformed into database parameters.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n * Note: Don't call this as a regular function, it is meant to be used with backticks to tag a template literal.\n * Example: queryRunner.sql`SELECT * FROM table_name WHERE id = ${id}`\n */\n sql<T = any>(\n strings: TemplateStringsArray,\n ...values: unknown[]\n ): Promise<T>\n\n /**\n * Returns raw data stream.\n */\n stream(\n query: string,\n parameters?: any[],\n onEnd?: Function,\n onError?: Function,\n ): Promise<ReadStream>\n\n /**\n * Returns all available database names including system databases.\n */\n getDatabases(): Promise<string[]>\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n * Useful for SQLServer and Postgres only.\n */\n getSchemas(database?: string): Promise<string[]>\n\n /**\n * Loads a table by a given name from the database.\n */\n getTable(tablePath: string): Promise<Table | undefined>\n\n /**\n * Loads all tables from the database and returns them.\n */\n getTables(tablePaths?: string[]): Promise<Table[]>\n\n /**\n * Loads a view by a given name from the database.\n */\n getView(viewPath: string): Promise<View | undefined>\n\n /**\n * Loads all views from the database and returns them.\n */\n getViews(viewPaths?: string[]): Promise<View[]>\n\n /**\n * Returns replication mode (ex: `master` or `slave`).\n */\n getReplicationMode(): ReplicationMode\n\n /**\n * Checks if a database with the given name exist.\n */\n hasDatabase(database: string): Promise<boolean>\n\n /**\n * Loads currently using database\n */\n getCurrentDatabase(): Promise<string | undefined>\n\n /**\n * Checks if a schema with the given name exist.\n */\n hasSchema(schema: string): Promise<boolean>\n\n /**\n * Loads currently using database schema\n */\n getCurrentSchema(): Promise<string | undefined>\n\n /**\n * Checks if a table with the given name exist.\n */\n hasTable(table: Table | string): Promise<boolean>\n\n /**\n * Checks if a column exist in the table.\n */\n hasColumn(table: Table | string, columnName: string): Promise<boolean>\n\n /**\n * Creates a new database.\n */\n createDatabase(database: string, ifNotExist?: boolean): Promise<void>\n\n /**\n * Drops database.\n */\n dropDatabase(database: string, ifExist?: boolean): Promise<void>\n\n /**\n * Creates a new table schema.\n */\n createSchema(schemaPath: string, ifNotExist?: boolean): Promise<void>\n\n /**\n * Drops table schema.\n * For SqlServer can accept schema path (e.g. 'dbName.schemaName') as parameter.\n * If schema path passed, it will drop schema in specified database.\n */\n dropSchema(\n schemaPath: string,\n ifExist?: boolean,\n isCascade?: boolean,\n ): Promise<void>\n\n /**\n * Creates a new table.\n */\n createTable(\n table: Table,\n ifNotExist?: boolean,\n createForeignKeys?: boolean,\n createIndices?: boolean,\n ): Promise<void>\n\n /**\n * Drops a table.\n */\n dropTable(\n table: Table | string,\n ifExist?: boolean,\n dropForeignKeys?: boolean,\n dropIndices?: boolean,\n ): Promise<void>\n\n /**\n * Creates a new view.\n */\n createView(\n view: View,\n syncWithMetadata?: boolean,\n oldView?: View,\n ): Promise<void>\n\n /**\n * Drops a view.\n */\n dropView(view: View | string): Promise<void>\n\n /**\n * Renames a table.\n */\n renameTable(\n oldTableOrName: Table | string,\n newTableName: string,\n ): Promise<void>\n\n /**\n * Change table comment. Only supports MySQL and MariaDB\n */\n changeTableComment(\n tableOrName: Table | string,\n comment?: string,\n ): Promise<void>\n\n /**\n * Adds a new column.\n */\n addColumn(table: Table | string, column: TableColumn): Promise<void>\n\n /**\n * Adds new columns.\n */\n addColumns(table: Table | string, columns: TableColumn[]): Promise<void>\n\n /**\n * Renames a column.\n */\n renameColumn(\n table: Table | string,\n oldColumnOrName: TableColumn | string,\n newColumnOrName: TableColumn | string,\n ): Promise<void>\n\n /**\n * Changes a column in the table.\n */\n changeColumn(\n table: Table | string,\n oldColumn: TableColumn | string,\n newColumn: TableColumn,\n ): Promise<void>\n\n /**\n * Changes columns in the table.\n */\n changeColumns(\n table: Table | string,\n changedColumns: { oldColumn: TableColumn; newColumn: TableColumn }[],\n ): Promise<void>\n\n /**\n * Drops a column in the table.\n */\n dropColumn(\n table: Table | string,\n column: TableColumn | string,\n ): Promise<void>\n\n /**\n * Drops columns in the table.\n */\n dropColumns(\n table: Table | string,\n columns: TableColumn[] | string[],\n ): Promise<void>\n\n /**\n * Creates a new primary key.\n */\n createPrimaryKey(\n table: Table | string,\n columnNames: string[],\n constraintName?: string,\n ): Promise<void>\n\n /**\n * Updates composite primary keys.\n */\n updatePrimaryKeys(\n table: Table | string,\n columns: TableColumn[],\n ): Promise<void>\n\n /**\n * Drops a primary key.\n */\n dropPrimaryKey(\n table: Table | string,\n constraintName?: string,\n ): Promise<void>\n\n /**\n * Creates a new unique constraint.\n */\n createUniqueConstraint(\n table: Table | string,\n uniqueConstraint: TableUnique,\n ): Promise<void>\n\n /**\n * Creates new unique constraints.\n */\n createUniqueConstraints(\n table: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void>\n\n /**\n * Drops a unique constraint.\n */\n dropUniqueConstraint(\n table: Table | string,\n uniqueOrName: TableUnique | string,\n ): Promise<void>\n\n /**\n * Drops unique constraints.\n */\n dropUniqueConstraints(\n table: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void>\n\n /**\n * Creates a new check constraint.\n */\n createCheckConstraint(\n table: Table | string,\n checkConstraint: TableCheck,\n ): Promise<void>\n\n /**\n * Creates new check constraints.\n */\n createCheckConstraints(\n table: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void>\n\n /**\n * Drops a check constraint.\n */\n dropCheckConstraint(\n table: Table | string,\n checkOrName: TableCheck | string,\n ): Promise<void>\n\n /**\n * Drops check constraints.\n */\n dropCheckConstraints(\n table: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void>\n\n /**\n * Creates a new exclusion constraint.\n */\n createExclusionConstraint(\n table: Table | string,\n exclusionConstraint: TableExclusion,\n ): Promise<void>\n\n /**\n * Creates new exclusion constraints.\n */\n createExclusionConstraints(\n table: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void>\n\n /**\n * Drops a exclusion constraint.\n */\n dropExclusionConstraint(\n table: Table | string,\n exclusionOrName: TableExclusion | string,\n ): Promise<void>\n\n /**\n * Drops exclusion constraints.\n */\n dropExclusionConstraints(\n table: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void>\n\n /**\n * Creates a new foreign key.\n */\n createForeignKey(\n table: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void>\n\n /**\n * Creates new foreign keys.\n */\n createForeignKeys(\n table: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void>\n\n /**\n * Drops a foreign key.\n */\n dropForeignKey(\n table: Table | string,\n foreignKeyOrName: TableForeignKey | string,\n ): Promise<void>\n\n /**\n * Drops foreign keys.\n */\n dropForeignKeys(\n table: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void>\n\n /**\n * Creates a new index.\n */\n createIndex(table: Table | string, index: TableIndex): Promise<void>\n\n /**\n * Creates new indices.\n */\n createIndices(table: Table | string, indices: TableIndex[]): Promise<void>\n\n /**\n * Drops an index.\n */\n dropIndex(table: Table | string, index: TableIndex | string): Promise<void>\n\n /**\n * Drops indices.\n */\n dropIndices(table: Table | string, indices: TableIndex[]): Promise<void>\n\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n clearTable(tableName: string): Promise<void>\n\n /**\n * Enables special query runner mode in which sql queries won't be executed,\n * instead they will be memorized into a special variable inside query runner.\n * You can get memorized sql using getMemorySql() method.\n */\n enableSqlMemory(): void\n\n /**\n * Disables special query runner mode in which sql queries won't be executed\n * started by calling enableSqlMemory() method.\n *\n * Previously memorized sql will be flushed.\n */\n disableSqlMemory(): void\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory\n\n /**\n * Executes up sql queries.\n */\n executeMemoryUpSql(): Promise<void>\n\n /**\n * Executes down sql queries.\n */\n executeMemoryDownSql(): Promise<void>\n}\n"],"sourceRoot":".."}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Marks a entity property as a children of the tree.
2
+ * Marks an entity property as a children of the tree.
3
3
  * "Tree children" will contain all children (bind) of this entity.
4
4
  */
5
5
  export declare function TreeChildren(options?: {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TreeChildren = TreeChildren;
4
4
  const globals_1 = require("../../globals");
5
5
  /**
6
- * Marks a entity property as a children of the tree.
6
+ * Marks an entity property as a children of the tree.
7
7
  * "Tree children" will contain all children (bind) of this entity.
8
8
  */
9
9
  function TreeChildren(options) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/decorator/tree/TreeChildren.ts"],"names":[],"mappings":";;AAQA,oCA8BC;AAtCD,2CAAsD;AAItD;;;GAGG;AACH,SAAgB,YAAY,CAAC,OAI5B;IACG,OAAO,UAAU,MAAc,EAAE,YAAoB;QACjD,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,EAAqB,CAAA;QAE7C,4CAA4C;QAC5C,MAAM,aAAa,GACf,OAAO,IAAK,OAAe,CAAC,WAAW;YACnC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC;YAC1D,CAAC,CAAC,SAAS,CAAA;QACnB,MAAM,MAAM,GACR,CAAC,aAAa;YACV,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ;YACtC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC;YACnD,KAAK,CAAA;QAET,oCAAoC;QACpC,IAAA,gCAAsB,GAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YACpC,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,MAAM,EAAE,MAAM;YACd,YAAY,EAAE,aAAa;YAC3B,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW;YAC9B,OAAO,EAAE,OAAO;SACK,CAAC,CAAA;IAC9B,CAAC,CAAA;AACL,CAAC","file":"TreeChildren.js","sourcesContent":["import { getMetadataArgsStorage } from \"../../globals\"\nimport { RelationMetadataArgs } from \"../../metadata-args/RelationMetadataArgs\"\nimport { RelationOptions } from \"../options/RelationOptions\"\n\n/**\n * Marks a entity property as a children of the tree.\n * \"Tree children\" will contain all children (bind) of this entity.\n */\nexport function TreeChildren(options?: {\n cascade?:\n | boolean\n | (\"insert\" | \"update\" | \"remove\" | \"soft-remove\" | \"recover\")[]\n}): PropertyDecorator {\n return function (object: Object, propertyName: string) {\n if (!options) options = {} as RelationOptions\n\n // now try to determine it its lazy relation\n const reflectedType =\n Reflect && (Reflect as any).getMetadata\n ? Reflect.getMetadata(\"design:type\", object, propertyName)\n : undefined\n const isLazy =\n (reflectedType &&\n typeof reflectedType.name === \"string\" &&\n reflectedType.name.toLowerCase() === \"promise\") ||\n false\n\n // add one-to-many relation for this\n getMetadataArgsStorage().relations.push({\n isTreeChildren: true,\n target: object.constructor,\n propertyName: propertyName,\n isLazy: isLazy,\n relationType: \"one-to-many\",\n type: () => object.constructor,\n options: options,\n } as RelationMetadataArgs)\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/decorator/tree/TreeChildren.ts"],"names":[],"mappings":";;AAQA,oCA8BC;AAtCD,2CAAsD;AAItD;;;GAGG;AACH,SAAgB,YAAY,CAAC,OAI5B;IACG,OAAO,UAAU,MAAc,EAAE,YAAoB;QACjD,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,EAAqB,CAAA;QAE7C,4CAA4C;QAC5C,MAAM,aAAa,GACf,OAAO,IAAK,OAAe,CAAC,WAAW;YACnC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC;YAC1D,CAAC,CAAC,SAAS,CAAA;QACnB,MAAM,MAAM,GACR,CAAC,aAAa;YACV,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ;YACtC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC;YACnD,KAAK,CAAA;QAET,oCAAoC;QACpC,IAAA,gCAAsB,GAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YACpC,cAAc,EAAE,IAAI;YACpB,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,MAAM,EAAE,MAAM;YACd,YAAY,EAAE,aAAa;YAC3B,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW;YAC9B,OAAO,EAAE,OAAO;SACK,CAAC,CAAA;IAC9B,CAAC,CAAA;AACL,CAAC","file":"TreeChildren.js","sourcesContent":["import { getMetadataArgsStorage } from \"../../globals\"\nimport { RelationMetadataArgs } from \"../../metadata-args/RelationMetadataArgs\"\nimport { RelationOptions } from \"../options/RelationOptions\"\n\n/**\n * Marks an entity property as a children of the tree.\n * \"Tree children\" will contain all children (bind) of this entity.\n */\nexport function TreeChildren(options?: {\n cascade?:\n | boolean\n | (\"insert\" | \"update\" | \"remove\" | \"soft-remove\" | \"recover\")[]\n}): PropertyDecorator {\n return function (object: Object, propertyName: string) {\n if (!options) options = {} as RelationOptions\n\n // now try to determine it its lazy relation\n const reflectedType =\n Reflect && (Reflect as any).getMetadata\n ? Reflect.getMetadata(\"design:type\", object, propertyName)\n : undefined\n const isLazy =\n (reflectedType &&\n typeof reflectedType.name === \"string\" &&\n reflectedType.name.toLowerCase() === \"promise\") ||\n false\n\n // add one-to-many relation for this\n getMetadataArgsStorage().relations.push({\n isTreeChildren: true,\n target: object.constructor,\n propertyName: propertyName,\n isLazy: isLazy,\n relationType: \"one-to-many\",\n type: () => object.constructor,\n options: options,\n } as RelationMetadataArgs)\n }\n}\n"],"sourceRoot":"../.."}
@@ -1,6 +1,6 @@
1
1
  import { OnDeleteType } from "../../metadata/types/OnDeleteType";
2
2
  /**
3
- * Marks a entity property as a parent of the tree.
3
+ * Marks an entity property as a parent of the tree.
4
4
  * "Tree parent" indicates who owns (is a parent) of this entity in tree structure.
5
5
  */
6
6
  export declare function TreeParent(options?: {
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TreeParent = TreeParent;
4
4
  const globals_1 = require("../../globals");
5
5
  /**
6
- * Marks a entity property as a parent of the tree.
6
+ * Marks an entity property as a parent of the tree.
7
7
  * "Tree parent" indicates who owns (is a parent) of this entity in tree structure.
8
8
  */
9
9
  function TreeParent(options) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/decorator/tree/TreeParent.ts"],"names":[],"mappings":";;AASA,gCA2BC;AApCD,2CAAsD;AAKtD;;;GAGG;AACH,SAAgB,UAAU,CAAC,OAE1B;IACG,OAAO,UAAU,MAAc,EAAE,YAAoB;QACjD,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,EAAqB,CAAA;QAE7C,4CAA4C;QAC5C,MAAM,aAAa,GACf,OAAO,IAAK,OAAe,CAAC,WAAW;YACnC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC;YAC1D,CAAC,CAAC,SAAS,CAAA;QACnB,MAAM,MAAM,GACR,CAAC,aAAa;YACV,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ;YACtC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC;YACnD,KAAK,CAAA;QAET,IAAA,gCAAsB,GAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YACpC,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,MAAM,EAAE,MAAM;YACd,YAAY,EAAE,aAAa;YAC3B,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW;YAC9B,OAAO,EAAE,OAAO;SACK,CAAC,CAAA;IAC9B,CAAC,CAAA;AACL,CAAC","file":"TreeParent.js","sourcesContent":["import { getMetadataArgsStorage } from \"../../globals\"\nimport { RelationMetadataArgs } from \"../../metadata-args/RelationMetadataArgs\"\nimport { OnDeleteType } from \"../../metadata/types/OnDeleteType\"\nimport { RelationOptions } from \"../options/RelationOptions\"\n\n/**\n * Marks a entity property as a parent of the tree.\n * \"Tree parent\" indicates who owns (is a parent) of this entity in tree structure.\n */\nexport function TreeParent(options?: {\n onDelete?: OnDeleteType\n}): PropertyDecorator {\n return function (object: Object, propertyName: string) {\n if (!options) options = {} as RelationOptions\n\n // now try to determine it its lazy relation\n const reflectedType =\n Reflect && (Reflect as any).getMetadata\n ? Reflect.getMetadata(\"design:type\", object, propertyName)\n : undefined\n const isLazy =\n (reflectedType &&\n typeof reflectedType.name === \"string\" &&\n reflectedType.name.toLowerCase() === \"promise\") ||\n false\n\n getMetadataArgsStorage().relations.push({\n isTreeParent: true,\n target: object.constructor,\n propertyName: propertyName,\n isLazy: isLazy,\n relationType: \"many-to-one\",\n type: () => object.constructor,\n options: options,\n } as RelationMetadataArgs)\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/decorator/tree/TreeParent.ts"],"names":[],"mappings":";;AASA,gCA2BC;AApCD,2CAAsD;AAKtD;;;GAGG;AACH,SAAgB,UAAU,CAAC,OAE1B;IACG,OAAO,UAAU,MAAc,EAAE,YAAoB;QACjD,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,EAAqB,CAAA;QAE7C,4CAA4C;QAC5C,MAAM,aAAa,GACf,OAAO,IAAK,OAAe,CAAC,WAAW;YACnC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC;YAC1D,CAAC,CAAC,SAAS,CAAA;QACnB,MAAM,MAAM,GACR,CAAC,aAAa;YACV,OAAO,aAAa,CAAC,IAAI,KAAK,QAAQ;YACtC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC;YACnD,KAAK,CAAA;QAET,IAAA,gCAAsB,GAAE,CAAC,SAAS,CAAC,IAAI,CAAC;YACpC,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,MAAM,EAAE,MAAM;YACd,YAAY,EAAE,aAAa;YAC3B,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW;YAC9B,OAAO,EAAE,OAAO;SACK,CAAC,CAAA;IAC9B,CAAC,CAAA;AACL,CAAC","file":"TreeParent.js","sourcesContent":["import { getMetadataArgsStorage } from \"../../globals\"\nimport { RelationMetadataArgs } from \"../../metadata-args/RelationMetadataArgs\"\nimport { OnDeleteType } from \"../../metadata/types/OnDeleteType\"\nimport { RelationOptions } from \"../options/RelationOptions\"\n\n/**\n * Marks an entity property as a parent of the tree.\n * \"Tree parent\" indicates who owns (is a parent) of this entity in tree structure.\n */\nexport function TreeParent(options?: {\n onDelete?: OnDeleteType\n}): PropertyDecorator {\n return function (object: Object, propertyName: string) {\n if (!options) options = {} as RelationOptions\n\n // now try to determine it its lazy relation\n const reflectedType =\n Reflect && (Reflect as any).getMetadata\n ? Reflect.getMetadata(\"design:type\", object, propertyName)\n : undefined\n const isLazy =\n (reflectedType &&\n typeof reflectedType.name === \"string\" &&\n reflectedType.name.toLowerCase() === \"promise\") ||\n false\n\n getMetadataArgsStorage().relations.push({\n isTreeParent: true,\n target: object.constructor,\n propertyName: propertyName,\n isLazy: isLazy,\n relationType: \"many-to-one\",\n type: () => object.constructor,\n options: options,\n } as RelationMetadataArgs)\n }\n}\n"],"sourceRoot":"../.."}
@@ -179,11 +179,11 @@ export declare class AuroraMysqlQueryRunner extends BaseQueryRunner implements Q
179
179
  */
180
180
  createUniqueConstraints(tableOrName: Table | string, uniqueConstraints: TableUnique[]): Promise<void>;
181
181
  /**
182
- * Drops an unique constraint.
182
+ * Drops a unique constraint.
183
183
  */
184
184
  dropUniqueConstraint(tableOrName: Table | string, uniqueOrName: TableUnique | string): Promise<void>;
185
185
  /**
186
- * Drops an unique constraints.
186
+ * Drops a unique constraints.
187
187
  */
188
188
  dropUniqueConstraints(tableOrName: Table | string, uniqueConstraints: TableUnique[]): Promise<void>;
189
189
  /**
@@ -872,13 +872,13 @@ class AuroraMysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
872
872
  throw new error_1.TypeORMError(`MySql does not support unique constraints. Use unique index instead.`);
873
873
  }
874
874
  /**
875
- * Drops an unique constraint.
875
+ * Drops a unique constraint.
876
876
  */
877
877
  async dropUniqueConstraint(tableOrName, uniqueOrName) {
878
878
  throw new error_1.TypeORMError(`MySql does not support unique constraints. Use unique index instead.`);
879
879
  }
880
880
  /**
881
- * Drops an unique constraints.
881
+ * Drops a unique constraints.
882
882
  */
883
883
  async dropUniqueConstraints(tableOrName, uniqueConstraints) {
884
884
  throw new error_1.TypeORMError(`MySql does not support unique constraints. Use unique index instead.`);