typeorm 0.2.40-dev.ae858ad → 0.2.41-dev.15ad5ac

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 (203) hide show
  1. package/browser/cache/DbQueryResultCache.js +12 -3
  2. package/browser/cache/DbQueryResultCache.js.map +1 -1
  3. package/browser/decorator/columns/PrimaryGeneratedColumn.d.ts +1 -0
  4. package/browser/decorator/columns/PrimaryGeneratedColumn.js +1 -1
  5. package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  6. package/browser/decorator/options/ColumnCommonOptions.d.ts +1 -1
  7. package/browser/decorator/options/ColumnCommonOptions.js.map +1 -1
  8. package/browser/driver/Driver.d.ts +5 -0
  9. package/browser/driver/Driver.js.map +1 -1
  10. package/browser/driver/aurora-data-api/AuroraDataApiDriver.d.ts +4 -0
  11. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +4 -0
  12. package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  13. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +33 -39
  14. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  15. package/browser/driver/cockroachdb/CockroachDriver.d.ts +4 -0
  16. package/browser/driver/cockroachdb/CockroachDriver.js +4 -0
  17. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  18. package/browser/driver/cockroachdb/CockroachQueryRunner.js +24 -30
  19. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  20. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  21. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  22. package/browser/driver/mongodb/MongoQueryRunner.d.ts +2 -0
  23. package/browser/driver/mongodb/MongoQueryRunner.js +3 -0
  24. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  25. package/browser/driver/mysql/MysqlDriver.d.ts +4 -0
  26. package/browser/driver/mysql/MysqlDriver.js +10 -3
  27. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  28. package/browser/driver/mysql/MysqlQueryRunner.js +37 -39
  29. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  30. package/browser/driver/oracle/OracleDriver.js +1 -1
  31. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  32. package/browser/driver/oracle/OracleQueryRunner.js +13 -24
  33. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  34. package/browser/driver/postgres/PostgresDriver.d.ts +5 -0
  35. package/browser/driver/postgres/PostgresDriver.js +20 -7
  36. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  37. package/browser/driver/postgres/PostgresQueryRunner.d.ts +5 -0
  38. package/browser/driver/postgres/PostgresQueryRunner.js +333 -143
  39. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  40. package/browser/driver/sap/SapQueryRunner.js +36 -42
  41. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  42. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +4 -0
  43. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -0
  44. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  45. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +8 -14
  46. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  47. package/browser/driver/sqlserver/SqlServerQueryRunner.js +31 -33
  48. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  49. package/browser/driver/types/MetadataTableType.d.ts +5 -0
  50. package/browser/driver/types/MetadataTableType.js +8 -0
  51. package/browser/driver/types/MetadataTableType.js.map +1 -0
  52. package/browser/driver/types/UpsertType.d.ts +1 -0
  53. package/browser/driver/types/UpsertType.js +3 -0
  54. package/browser/driver/types/UpsertType.js.map +1 -0
  55. package/browser/entity-manager/EntityManager.d.ts +2 -0
  56. package/browser/entity-manager/EntityManager.js +42 -1
  57. package/browser/entity-manager/EntityManager.js.map +1 -1
  58. package/browser/find-options/FindConditions.d.ts +6 -2
  59. package/browser/find-options/FindConditions.js.map +1 -1
  60. package/browser/find-options/FindTreeOptions.d.ts +5 -1
  61. package/browser/find-options/FindTreeOptions.js.map +1 -1
  62. package/browser/metadata/EntityMetadata.d.ts +4 -0
  63. package/browser/metadata/EntityMetadata.js +14 -0
  64. package/browser/metadata/EntityMetadata.js.map +1 -1
  65. package/browser/migration/MigrationExecutor.js +55 -48
  66. package/browser/migration/MigrationExecutor.js.map +1 -1
  67. package/browser/query-builder/InsertQueryBuilder.js +8 -2
  68. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  69. package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
  70. package/browser/query-builder/SelectQueryBuilder.js +4 -20
  71. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  72. package/browser/query-runner/BaseQueryRunner.d.ts +23 -0
  73. package/browser/query-runner/BaseQueryRunner.js +37 -0
  74. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  75. package/browser/query-runner/QueryRunner.d.ts +5 -0
  76. package/browser/query-runner/QueryRunner.js.map +1 -1
  77. package/browser/repository/BaseEntity.d.ts +7 -0
  78. package/browser/repository/BaseEntity.js +8 -0
  79. package/browser/repository/BaseEntity.js.map +1 -1
  80. package/browser/repository/FindTreesOptions.d.ts +9 -0
  81. package/browser/repository/FindTreesOptions.js +3 -0
  82. package/browser/repository/FindTreesOptions.js.map +1 -0
  83. package/browser/repository/Repository.d.ts +7 -0
  84. package/browser/repository/Repository.js +8 -0
  85. package/browser/repository/Repository.js.map +1 -1
  86. package/browser/repository/TreeRepository.d.ts +4 -1
  87. package/browser/repository/TreeRepository.js +8 -4
  88. package/browser/repository/TreeRepository.js.map +1 -1
  89. package/browser/repository/UpsertOptions.d.ts +6 -0
  90. package/browser/repository/UpsertOptions.js +3 -0
  91. package/browser/repository/UpsertOptions.js.map +1 -0
  92. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +5 -1
  93. package/browser/schema-builder/RdbmsSchemaBuilder.js +58 -49
  94. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  95. package/browser/schema-builder/options/TableColumnOptions.d.ts +1 -1
  96. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  97. package/browser/schema-builder/table/TableColumn.d.ts +1 -1
  98. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  99. package/browser/util/OrmUtils.d.ts +1 -0
  100. package/browser/util/OrmUtils.js +11 -0
  101. package/browser/util/OrmUtils.js.map +1 -1
  102. package/cache/DbQueryResultCache.js +12 -3
  103. package/cache/DbQueryResultCache.js.map +1 -1
  104. package/decorator/columns/PrimaryGeneratedColumn.d.ts +1 -0
  105. package/decorator/columns/PrimaryGeneratedColumn.js +1 -1
  106. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  107. package/decorator/options/ColumnCommonOptions.d.ts +1 -1
  108. package/decorator/options/ColumnCommonOptions.js.map +1 -1
  109. package/driver/Driver.d.ts +5 -0
  110. package/driver/Driver.js.map +1 -1
  111. package/driver/aurora-data-api/AuroraDataApiDriver.d.ts +4 -0
  112. package/driver/aurora-data-api/AuroraDataApiDriver.js +4 -0
  113. package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
  114. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +33 -39
  115. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  116. package/driver/cockroachdb/CockroachDriver.d.ts +4 -0
  117. package/driver/cockroachdb/CockroachDriver.js +4 -0
  118. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  119. package/driver/cockroachdb/CockroachQueryRunner.js +24 -30
  120. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  121. package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  122. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  123. package/driver/mongodb/MongoQueryRunner.d.ts +2 -0
  124. package/driver/mongodb/MongoQueryRunner.js +3 -0
  125. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  126. package/driver/mysql/MysqlDriver.d.ts +4 -0
  127. package/driver/mysql/MysqlDriver.js +10 -3
  128. package/driver/mysql/MysqlDriver.js.map +1 -1
  129. package/driver/mysql/MysqlQueryRunner.js +37 -39
  130. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  131. package/driver/oracle/OracleDriver.js +1 -1
  132. package/driver/oracle/OracleDriver.js.map +1 -1
  133. package/driver/oracle/OracleQueryRunner.js +13 -24
  134. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  135. package/driver/postgres/PostgresDriver.d.ts +5 -0
  136. package/driver/postgres/PostgresDriver.js +20 -7
  137. package/driver/postgres/PostgresDriver.js.map +1 -1
  138. package/driver/postgres/PostgresQueryRunner.d.ts +5 -0
  139. package/driver/postgres/PostgresQueryRunner.js +333 -143
  140. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  141. package/driver/sap/SapQueryRunner.js +36 -42
  142. package/driver/sap/SapQueryRunner.js.map +1 -1
  143. package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +4 -0
  144. package/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -0
  145. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  146. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +8 -14
  147. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  148. package/driver/sqlserver/SqlServerQueryRunner.js +31 -33
  149. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  150. package/driver/types/MetadataTableType.d.ts +5 -0
  151. package/driver/types/MetadataTableType.js +11 -0
  152. package/driver/types/MetadataTableType.js.map +1 -0
  153. package/driver/types/UpsertType.d.ts +1 -0
  154. package/driver/types/UpsertType.js +4 -0
  155. package/driver/types/UpsertType.js.map +1 -0
  156. package/entity-manager/EntityManager.d.ts +2 -0
  157. package/entity-manager/EntityManager.js +41 -0
  158. package/entity-manager/EntityManager.js.map +1 -1
  159. package/find-options/FindConditions.d.ts +6 -2
  160. package/find-options/FindConditions.js.map +1 -1
  161. package/find-options/FindTreeOptions.d.ts +5 -1
  162. package/find-options/FindTreeOptions.js.map +1 -1
  163. package/metadata/EntityMetadata.d.ts +4 -0
  164. package/metadata/EntityMetadata.js +14 -0
  165. package/metadata/EntityMetadata.js.map +1 -1
  166. package/migration/MigrationExecutor.js +55 -48
  167. package/migration/MigrationExecutor.js.map +1 -1
  168. package/package.json +1 -1
  169. package/query-builder/InsertQueryBuilder.js +11 -5
  170. package/query-builder/InsertQueryBuilder.js.map +1 -1
  171. package/query-builder/SelectQueryBuilder.d.ts +1 -1
  172. package/query-builder/SelectQueryBuilder.js +4 -20
  173. package/query-builder/SelectQueryBuilder.js.map +1 -1
  174. package/query-runner/BaseQueryRunner.d.ts +23 -0
  175. package/query-runner/BaseQueryRunner.js +37 -0
  176. package/query-runner/BaseQueryRunner.js.map +1 -1
  177. package/query-runner/QueryRunner.d.ts +5 -0
  178. package/query-runner/QueryRunner.js.map +1 -1
  179. package/repository/BaseEntity.d.ts +7 -0
  180. package/repository/BaseEntity.js +8 -0
  181. package/repository/BaseEntity.js.map +1 -1
  182. package/repository/FindTreesOptions.d.ts +9 -0
  183. package/repository/FindTreesOptions.js +4 -0
  184. package/repository/FindTreesOptions.js.map +1 -0
  185. package/repository/Repository.d.ts +7 -0
  186. package/repository/Repository.js +8 -0
  187. package/repository/Repository.js.map +1 -1
  188. package/repository/TreeRepository.d.ts +4 -1
  189. package/repository/TreeRepository.js +7 -3
  190. package/repository/TreeRepository.js.map +1 -1
  191. package/repository/UpsertOptions.d.ts +6 -0
  192. package/repository/UpsertOptions.js +4 -0
  193. package/repository/UpsertOptions.js.map +1 -0
  194. package/schema-builder/RdbmsSchemaBuilder.d.ts +5 -1
  195. package/schema-builder/RdbmsSchemaBuilder.js +58 -49
  196. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  197. package/schema-builder/options/TableColumnOptions.d.ts +1 -1
  198. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  199. package/schema-builder/table/TableColumn.d.ts +1 -1
  200. package/schema-builder/table/TableColumn.js.map +1 -1
  201. package/util/OrmUtils.d.ts +1 -0
  202. package/util/OrmUtils.js +11 -0
  203. package/util/OrmUtils.js.map +1 -1
@@ -9,6 +9,7 @@ import { Broadcaster } from "../subscriber/Broadcaster";
9
9
  import { ReplicationMode } from "../driver/types/ReplicationMode";
10
10
  import { EntityMetadata } from "../metadata/EntityMetadata";
11
11
  import { TableForeignKey } from "../schema-builder/table/TableForeignKey";
12
+ import { MetadataTableType } from "../driver/types/MetadataTableType";
12
13
  export declare abstract class BaseQueryRunner {
13
14
  /**
14
15
  * Connection used by this query runner.
@@ -114,6 +115,7 @@ export declare abstract class BaseQueryRunner {
114
115
  * Executes down sql queries.
115
116
  */
116
117
  executeMemoryDownSql(): Promise<void>;
118
+ getReplicationMode(): ReplicationMode;
117
119
  /**
118
120
  * Gets view from previously loaded views, otherwise loads it from database.
119
121
  */
@@ -128,6 +130,27 @@ export declare abstract class BaseQueryRunner {
128
130
  protected replaceCachedTable(table: Table, changedTable: Table): void;
129
131
  protected getTablePath(target: EntityMetadata | Table | View | TableForeignKey | string): string;
130
132
  protected getTypeormMetadataTableName(): string;
133
+ /**
134
+ * Generates SQL query to insert a record into "typeorm_metadata" table.
135
+ */
136
+ protected insertTypeormMetadataSql({ database, schema, table, type, name, value }: {
137
+ database?: string;
138
+ schema?: string;
139
+ table?: string;
140
+ type: MetadataTableType;
141
+ name: string;
142
+ value?: string;
143
+ }): Query;
144
+ /**
145
+ * Generates SQL query to delete a record from "typeorm_metadata" table.
146
+ */
147
+ protected deleteTypeormMetadataSql({ database, schema, table, type, name }: {
148
+ database?: string;
149
+ schema?: string;
150
+ table?: string;
151
+ type: MetadataTableType;
152
+ name: string;
153
+ }): Query;
131
154
  /**
132
155
  * Checks if at least one of column properties was changed.
133
156
  * Does not checks column type, length and autoincrement, because these properties changes separately.
@@ -231,6 +231,9 @@ var BaseQueryRunner = /** @class */ (function () {
231
231
  });
232
232
  });
233
233
  };
234
+ BaseQueryRunner.prototype.getReplicationMode = function () {
235
+ return this.mode;
236
+ };
234
237
  // -------------------------------------------------------------------------
235
238
  // Protected Methods
236
239
  // -------------------------------------------------------------------------
@@ -346,6 +349,40 @@ var BaseQueryRunner = /** @class */ (function () {
346
349
  var options = this.connection.driver.options;
347
350
  return this.connection.driver.buildTableName("typeorm_metadata", options.schema, options.database);
348
351
  };
352
+ /**
353
+ * Generates SQL query to insert a record into "typeorm_metadata" table.
354
+ */
355
+ BaseQueryRunner.prototype.insertTypeormMetadataSql = function (_a) {
356
+ var database = _a.database, schema = _a.schema, table = _a.table, type = _a.type, name = _a.name, value = _a.value;
357
+ var _b = __read(this.connection.createQueryBuilder()
358
+ .insert()
359
+ .into(this.getTypeormMetadataTableName())
360
+ .values({ database: database, schema: schema, table: table, type: type, name: name, value: value })
361
+ .getQueryAndParameters(), 2), query = _b[0], parameters = _b[1];
362
+ return new Query(query, parameters);
363
+ };
364
+ /**
365
+ * Generates SQL query to delete a record from "typeorm_metadata" table.
366
+ */
367
+ BaseQueryRunner.prototype.deleteTypeormMetadataSql = function (_a) {
368
+ var database = _a.database, schema = _a.schema, table = _a.table, type = _a.type, name = _a.name;
369
+ var qb = this.connection.createQueryBuilder();
370
+ var deleteQb = qb.delete()
371
+ .from(this.getTypeormMetadataTableName())
372
+ .where(qb.escape("type") + " = :type", { type: type })
373
+ .andWhere(qb.escape("name") + " = :name", { name: name });
374
+ if (database) {
375
+ deleteQb.andWhere(qb.escape("database") + " = :database", { database: database });
376
+ }
377
+ if (schema) {
378
+ deleteQb.andWhere(qb.escape("schema") + " = :schema", { schema: schema });
379
+ }
380
+ if (table) {
381
+ deleteQb.andWhere(qb.escape("table") + " = :table", { table: table });
382
+ }
383
+ var _b = __read(deleteQb.getQueryAndParameters(), 2), query = _b[0], parameters = _b[1];
384
+ return new Query(query, parameters);
385
+ };
349
386
  /**
350
387
  * Checks if at least one of column properties was changed.
351
388
  * Does not checks column type, length and autoincrement, because these properties changes separately.
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/query-runner/BaseQueryRunner.ts"],"names":[],"mappings":"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","file":"BaseQueryRunner.js","sourcesContent":["import {PostgresConnectionOptions} from \"../driver/postgres/PostgresConnectionOptions\";\nimport {Query} from \"../driver/Query\";\nimport {SqlInMemory} from \"../driver/SqlInMemory\";\nimport {SqlServerConnectionOptions} from \"../driver/sqlserver/SqlServerConnectionOptions\";\nimport {View} from \"../schema-builder/view/View\";\nimport {Connection} from \"../connection/Connection\";\nimport {Table} from \"../schema-builder/table/Table\";\nimport {EntityManager} from \"../entity-manager/EntityManager\";\nimport {TableColumn} from \"../schema-builder/table/TableColumn\";\nimport {Broadcaster} from \"../subscriber/Broadcaster\";\nimport {ReplicationMode} from \"../driver/types/ReplicationMode\";\nimport { TypeORMError } from \"../error/TypeORMError\";\nimport { EntityMetadata } from \"../metadata/EntityMetadata\";\nimport { TableForeignKey } from \"../schema-builder/table/TableForeignKey\";\nimport { OrmUtils } from \"../util/OrmUtils\";\n\nexport abstract class BaseQueryRunner {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used by this query runner.\n */\n connection: Connection;\n\n /**\n * Entity manager working only with current query runner.\n */\n 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 isReleased = false;\n\n /**\n * Indicates if transaction is in progress.\n */\n isTransactionActive = false;\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data = {};\n\n /**\n * All synchronized tables in the database.\n */\n loadedTables: Table[] = [];\n\n /**\n * All synchronized views in the database.\n */\n loadedViews: View[] = [];\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n broadcaster: Broadcaster;\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Real database connection from a connection pool used to perform queries.\n */\n protected databaseConnection: any;\n\n /**\n * Indicates if special query runner mode in which sql queries won't be executed is enabled.\n */\n protected sqlMemoryMode: boolean = false;\n\n /**\n * Sql-s stored if \"sql in memory\" mode is enabled.\n */\n protected sqlInMemory: SqlInMemory = new SqlInMemory();\n\n /**\n * Mode in which query runner executes.\n * Used for replication.\n * If replication is not setup its value is ignored.\n */\n protected mode: ReplicationMode;\n\n private cachedTablePaths: Record<string, string> = {};\n\n // -------------------------------------------------------------------------\n // Public Abstract Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes a given SQL query.\n */\n abstract query(query: string, parameters?: any[], useStructuredResult?: boolean): Promise<any>;\n\n // -------------------------------------------------------------------------\n // Protected Abstract Methods\n // -------------------------------------------------------------------------\n\n protected abstract loadTables(tablePaths?: string[]): Promise<Table[]>;\n\n protected abstract loadViews(tablePaths?: string[]): Promise<View[]>;\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads given table's data from the database.\n */\n async getTable(tablePath: string): Promise<Table|undefined> {\n this.loadedTables = await this.loadTables([tablePath]);\n return this.loadedTables.length > 0 ? this.loadedTables[0] : undefined;\n }\n\n /**\n * Loads all tables (with given names) from the database.\n */\n async getTables(tableNames?: string[]): Promise<Table[]> {\n if (!tableNames) {\n // Don't cache in this case.\n // This is the new case & isn't used anywhere else anyway.\n return await this.loadTables(tableNames);\n }\n\n this.loadedTables = await this.loadTables(tableNames);\n return this.loadedTables;\n }\n\n /**\n * Loads given view's data from the database.\n */\n async getView(viewPath: string): Promise<View|undefined> {\n this.loadedViews = await this.loadViews([viewPath]);\n return this.loadedViews.length > 0 ? this.loadedViews[0] : undefined;\n }\n\n /**\n * Loads given view's data from the database.\n */\n async getViews(viewPaths?: string[]): Promise<View[]> {\n this.loadedViews = await this.loadViews(viewPaths);\n return this.loadedViews;\n }\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 this.sqlInMemory = new SqlInMemory();\n this.sqlMemoryMode = true;\n }\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 this.sqlInMemory = new SqlInMemory();\n this.sqlMemoryMode = false;\n }\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory();\n }\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory {\n return this.sqlInMemory;\n }\n\n /**\n * Executes up sql queries.\n */\n async executeMemoryUpSql(): Promise<void> {\n for (const {query, parameters} of this.sqlInMemory.upQueries) {\n await this.query(query, parameters);\n }\n }\n\n /**\n * Executes down sql queries.\n */\n async executeMemoryDownSql(): Promise<void> {\n for (const {query, parameters} of this.sqlInMemory.downQueries.reverse()) {\n await this.query(query, parameters);\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets view from previously loaded views, otherwise loads it from database.\n */\n protected async getCachedView(viewName: string): Promise<View> {\n const view = this.loadedViews.find(view => view.name === viewName);\n if (view) return view;\n\n const foundViews = await this.loadViews([viewName]);\n if (foundViews.length > 0) {\n this.loadedViews.push(foundViews[0]);\n return foundViews[0];\n } else {\n throw new TypeORMError(`View \"${viewName}\" does not exist.`);\n }\n }\n\n /**\n * Gets table from previously loaded tables, otherwise loads it from database.\n */\n protected async getCachedTable(tableName: string): Promise<Table> {\n if (tableName in this.cachedTablePaths) {\n const tablePath = this.cachedTablePaths[tableName];\n const table = this.loadedTables.find(table => this.getTablePath(table) === tablePath);\n\n if (table) {\n return table;\n }\n }\n\n const foundTables = await this.loadTables([tableName]);\n\n if (foundTables.length > 0) {\n const foundTablePath = this.getTablePath(foundTables[0]);\n\n const cachedTable = this.loadedTables.find((table) => this.getTablePath(table) === foundTablePath);\n\n if (!cachedTable) {\n this.cachedTablePaths[tableName] = this.getTablePath(foundTables[0]);\n this.loadedTables.push(foundTables[0]);\n return foundTables[0];\n } else {\n return cachedTable;\n }\n } else {\n throw new TypeORMError(`Table \"${tableName}\" does not exist.`);\n }\n }\n\n /**\n * Replaces loaded table with given changed table.\n */\n protected replaceCachedTable(table: Table, changedTable: Table): void {\n const oldTablePath = this.getTablePath(table);\n const foundTable = this.loadedTables.find(loadedTable => this.getTablePath(loadedTable) === oldTablePath);\n\n // Clean up the lookup cache..\n for (const [key, cachedPath] of Object.entries(this.cachedTablePaths)) {\n if (cachedPath === oldTablePath) {\n this.cachedTablePaths[key] = this.getTablePath(changedTable);\n }\n }\n\n if (foundTable) {\n foundTable.database = changedTable.database;\n foundTable.schema = changedTable.schema;\n foundTable.name = changedTable.name;\n foundTable.columns = changedTable.columns;\n foundTable.indices = changedTable.indices;\n foundTable.foreignKeys = changedTable.foreignKeys;\n foundTable.uniques = changedTable.uniques;\n foundTable.checks = changedTable.checks;\n foundTable.justCreated = changedTable.justCreated;\n foundTable.engine = changedTable.engine;\n }\n }\n\n protected getTablePath(target: EntityMetadata | Table | View | TableForeignKey | string): string {\n const parsed = this.connection.driver.parseTableName(target);\n\n return this.connection.driver.buildTableName(\n parsed.tableName,\n parsed.schema,\n parsed.database\n );\n }\n\n protected getTypeormMetadataTableName(): string {\n const options = <SqlServerConnectionOptions|PostgresConnectionOptions>this.connection.driver.options;\n return this.connection.driver.buildTableName(\"typeorm_metadata\", options.schema, options.database);\n }\n\n /**\n * Checks if at least one of column properties was changed.\n * Does not checks column type, length and autoincrement, because these properties changes separately.\n */\n protected isColumnChanged(oldColumn: TableColumn, newColumn: TableColumn, checkDefault?: boolean, checkComment?: boolean): boolean {\n // this logs need to debug issues in column change detection. Do not delete it!\n\n // console.log(\"charset ---------------\");\n // console.log(oldColumn.charset !== newColumn.charset);\n // console.log(oldColumn.charset, newColumn.charset);\n // console.log(\"collation ---------------\");\n // console.log(oldColumn.collation !== newColumn.collation);\n // console.log(oldColumn.collation, newColumn.collation);\n // console.log(\"precision ---------------\");\n // console.log(oldColumn.precision !== newColumn.precision);\n // console.log(oldColumn.precision, newColumn.precision);\n // console.log(\"scale ---------------\");\n // console.log(oldColumn.scale !== newColumn.scale);\n // console.log(oldColumn.scale, newColumn.scale);\n // console.log(\"default ---------------\");\n // console.log((checkDefault && oldColumn.default !== newColumn.default));\n // console.log(oldColumn.default, newColumn.default);\n // console.log(\"isNullable ---------------\");\n // console.log(oldColumn.isNullable !== newColumn.isNullable);\n // console.log(oldColumn.isNullable, newColumn.isNullable);\n // console.log(\"comment ---------------\");\n // console.log((checkComment && oldColumn.comment !== newColumn.comment));\n // console.log(oldColumn.comment, newColumn.comment);\n // console.log(\"enum ---------------\");\n // console.log(!OrmUtils.isArraysEqual(oldColumn.enum || [], newColumn.enum || []));\n // console.log(oldColumn.enum, newColumn.enum);\n\n return oldColumn.charset !== newColumn.charset\n || oldColumn.collation !== newColumn.collation\n || oldColumn.precision !== newColumn.precision\n || oldColumn.scale !== newColumn.scale\n || oldColumn.width !== newColumn.width // MySQL only\n || oldColumn.zerofill !== newColumn.zerofill // MySQL only\n || oldColumn.unsigned !== newColumn.unsigned // MySQL only\n || oldColumn.asExpression !== newColumn.asExpression // MySQL only\n || (checkDefault && oldColumn.default !== newColumn.default)\n || oldColumn.onUpdate !== newColumn.onUpdate // MySQL only\n || oldColumn.isNullable !== newColumn.isNullable\n || (checkComment && oldColumn.comment !== newColumn.comment)\n || !OrmUtils.isArraysEqual(oldColumn.enum || [], newColumn.enum || []);\n }\n\n /**\n * Checks if column length is by default.\n */\n protected isDefaultColumnLength(table: Table, column: TableColumn, length: string): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n\n if (columnMetadata) {\n const columnMetadataLength = this.connection.driver.getColumnLength(columnMetadata);\n if (columnMetadataLength)\n return false;\n }\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].length) {\n return this.connection.driver.dataTypeDefaults[column.type].length!.toString() === length.toString();\n }\n\n return false;\n }\n\n /**\n * Checks if column precision is by default.\n */\n protected isDefaultColumnPrecision(table: Table, column: TableColumn, precision: number): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.precision !== null && columnMetadata.precision !== undefined)\n return false;\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].precision !== null\n && this.connection.driver.dataTypeDefaults[column.type].precision !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].precision === precision;\n\n return false;\n }\n\n /**\n * Checks if column scale is by default.\n */\n protected isDefaultColumnScale(table: Table, column: TableColumn, scale: number): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.scale !== null && columnMetadata.scale !== undefined)\n return false;\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].scale !== null\n && this.connection.driver.dataTypeDefaults[column.type].scale !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].scale === scale;\n\n return false;\n }\n\n /**\n * Executes sql used special for schema build.\n */\n protected async executeQueries(upQueries: Query|Query[], downQueries: Query|Query[]): Promise<void> {\n if (upQueries instanceof Query)\n upQueries = [upQueries];\n if (downQueries instanceof Query)\n downQueries = [downQueries];\n\n this.sqlInMemory.upQueries.push(...upQueries);\n this.sqlInMemory.downQueries.push(...downQueries);\n\n // if sql-in-memory mode is enabled then simply store sql in memory and return\n if (this.sqlMemoryMode === true)\n return Promise.resolve() as Promise<any>;\n\n for (const {query, parameters} of upQueries) {\n await this.query(query, parameters);\n }\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/query-runner/BaseQueryRunner.ts"],"names":[],"mappings":"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","file":"BaseQueryRunner.js","sourcesContent":["import {PostgresConnectionOptions} from \"../driver/postgres/PostgresConnectionOptions\";\nimport {Query} from \"../driver/Query\";\nimport {SqlInMemory} from \"../driver/SqlInMemory\";\nimport {SqlServerConnectionOptions} from \"../driver/sqlserver/SqlServerConnectionOptions\";\nimport {View} from \"../schema-builder/view/View\";\nimport {Connection} from \"../connection/Connection\";\nimport {Table} from \"../schema-builder/table/Table\";\nimport {EntityManager} from \"../entity-manager/EntityManager\";\nimport {TableColumn} from \"../schema-builder/table/TableColumn\";\nimport {Broadcaster} from \"../subscriber/Broadcaster\";\nimport {ReplicationMode} from \"../driver/types/ReplicationMode\";\nimport { TypeORMError } from \"../error/TypeORMError\";\nimport { EntityMetadata } from \"../metadata/EntityMetadata\";\nimport { TableForeignKey } from \"../schema-builder/table/TableForeignKey\";\nimport { OrmUtils } from \"../util/OrmUtils\";\nimport {MetadataTableType} from \"../driver/types/MetadataTableType\";\n\nexport abstract class BaseQueryRunner {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used by this query runner.\n */\n connection: Connection;\n\n /**\n * Entity manager working only with current query runner.\n */\n 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 isReleased = false;\n\n /**\n * Indicates if transaction is in progress.\n */\n isTransactionActive = false;\n\n /**\n * Stores temporarily user data.\n * Useful for sharing data with subscribers.\n */\n data = {};\n\n /**\n * All synchronized tables in the database.\n */\n loadedTables: Table[] = [];\n\n /**\n * All synchronized views in the database.\n */\n loadedViews: View[] = [];\n\n /**\n * Broadcaster used on this query runner to broadcast entity events.\n */\n broadcaster: Broadcaster;\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Real database connection from a connection pool used to perform queries.\n */\n protected databaseConnection: any;\n\n /**\n * Indicates if special query runner mode in which sql queries won't be executed is enabled.\n */\n protected sqlMemoryMode: boolean = false;\n\n /**\n * Sql-s stored if \"sql in memory\" mode is enabled.\n */\n protected sqlInMemory: SqlInMemory = new SqlInMemory();\n\n /**\n * Mode in which query runner executes.\n * Used for replication.\n * If replication is not setup its value is ignored.\n */\n protected mode: ReplicationMode;\n\n private cachedTablePaths: Record<string, string> = {};\n\n // -------------------------------------------------------------------------\n // Public Abstract Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes a given SQL query.\n */\n abstract query(query: string, parameters?: any[], useStructuredResult?: boolean): Promise<any>;\n\n // -------------------------------------------------------------------------\n // Protected Abstract Methods\n // -------------------------------------------------------------------------\n\n protected abstract loadTables(tablePaths?: string[]): Promise<Table[]>;\n\n protected abstract loadViews(tablePaths?: string[]): Promise<View[]>;\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads given table's data from the database.\n */\n async getTable(tablePath: string): Promise<Table|undefined> {\n this.loadedTables = await this.loadTables([tablePath]);\n return this.loadedTables.length > 0 ? this.loadedTables[0] : undefined;\n }\n\n /**\n * Loads all tables (with given names) from the database.\n */\n async getTables(tableNames?: string[]): Promise<Table[]> {\n if (!tableNames) {\n // Don't cache in this case.\n // This is the new case & isn't used anywhere else anyway.\n return await this.loadTables(tableNames);\n }\n\n this.loadedTables = await this.loadTables(tableNames);\n return this.loadedTables;\n }\n\n /**\n * Loads given view's data from the database.\n */\n async getView(viewPath: string): Promise<View|undefined> {\n this.loadedViews = await this.loadViews([viewPath]);\n return this.loadedViews.length > 0 ? this.loadedViews[0] : undefined;\n }\n\n /**\n * Loads given view's data from the database.\n */\n async getViews(viewPaths?: string[]): Promise<View[]> {\n this.loadedViews = await this.loadViews(viewPaths);\n return this.loadedViews;\n }\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 this.sqlInMemory = new SqlInMemory();\n this.sqlMemoryMode = true;\n }\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 this.sqlInMemory = new SqlInMemory();\n this.sqlMemoryMode = false;\n }\n\n /**\n * Flushes all memorized sqls.\n */\n clearSqlMemory(): void {\n this.sqlInMemory = new SqlInMemory();\n }\n\n /**\n * Gets sql stored in the memory. Parameters in the sql are already replaced.\n */\n getMemorySql(): SqlInMemory {\n return this.sqlInMemory;\n }\n\n /**\n * Executes up sql queries.\n */\n async executeMemoryUpSql(): Promise<void> {\n for (const {query, parameters} of this.sqlInMemory.upQueries) {\n await this.query(query, parameters);\n }\n }\n\n /**\n * Executes down sql queries.\n */\n async executeMemoryDownSql(): Promise<void> {\n for (const {query, parameters} of this.sqlInMemory.downQueries.reverse()) {\n await this.query(query, parameters);\n }\n }\n\n getReplicationMode(): ReplicationMode {\n return this.mode;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets view from previously loaded views, otherwise loads it from database.\n */\n protected async getCachedView(viewName: string): Promise<View> {\n const view = this.loadedViews.find(view => view.name === viewName);\n if (view) return view;\n\n const foundViews = await this.loadViews([viewName]);\n if (foundViews.length > 0) {\n this.loadedViews.push(foundViews[0]);\n return foundViews[0];\n } else {\n throw new TypeORMError(`View \"${viewName}\" does not exist.`);\n }\n }\n\n /**\n * Gets table from previously loaded tables, otherwise loads it from database.\n */\n protected async getCachedTable(tableName: string): Promise<Table> {\n if (tableName in this.cachedTablePaths) {\n const tablePath = this.cachedTablePaths[tableName];\n const table = this.loadedTables.find(table => this.getTablePath(table) === tablePath);\n\n if (table) {\n return table;\n }\n }\n\n const foundTables = await this.loadTables([tableName]);\n\n if (foundTables.length > 0) {\n const foundTablePath = this.getTablePath(foundTables[0]);\n\n const cachedTable = this.loadedTables.find((table) => this.getTablePath(table) === foundTablePath);\n\n if (!cachedTable) {\n this.cachedTablePaths[tableName] = this.getTablePath(foundTables[0]);\n this.loadedTables.push(foundTables[0]);\n return foundTables[0];\n } else {\n return cachedTable;\n }\n } else {\n throw new TypeORMError(`Table \"${tableName}\" does not exist.`);\n }\n }\n\n /**\n * Replaces loaded table with given changed table.\n */\n protected replaceCachedTable(table: Table, changedTable: Table): void {\n const oldTablePath = this.getTablePath(table);\n const foundTable = this.loadedTables.find(loadedTable => this.getTablePath(loadedTable) === oldTablePath);\n\n // Clean up the lookup cache..\n for (const [key, cachedPath] of Object.entries(this.cachedTablePaths)) {\n if (cachedPath === oldTablePath) {\n this.cachedTablePaths[key] = this.getTablePath(changedTable);\n }\n }\n\n if (foundTable) {\n foundTable.database = changedTable.database;\n foundTable.schema = changedTable.schema;\n foundTable.name = changedTable.name;\n foundTable.columns = changedTable.columns;\n foundTable.indices = changedTable.indices;\n foundTable.foreignKeys = changedTable.foreignKeys;\n foundTable.uniques = changedTable.uniques;\n foundTable.checks = changedTable.checks;\n foundTable.justCreated = changedTable.justCreated;\n foundTable.engine = changedTable.engine;\n }\n }\n\n protected getTablePath(target: EntityMetadata | Table | View | TableForeignKey | string): string {\n const parsed = this.connection.driver.parseTableName(target);\n\n return this.connection.driver.buildTableName(\n parsed.tableName,\n parsed.schema,\n parsed.database\n );\n }\n\n protected getTypeormMetadataTableName(): string {\n const options = <SqlServerConnectionOptions|PostgresConnectionOptions>this.connection.driver.options;\n return this.connection.driver.buildTableName(\"typeorm_metadata\", options.schema, options.database);\n }\n\n /**\n * Generates SQL query to insert a record into \"typeorm_metadata\" table.\n */\n protected insertTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name,\n value\n }: {\n database?: string,\n schema?: string,\n table?: string,\n type: MetadataTableType\n name: string,\n value?: string\n }): Query {\n const [query, parameters] = this.connection.createQueryBuilder()\n .insert()\n .into(this.getTypeormMetadataTableName())\n .values({ database: database, schema: schema, table: table, type: type, name: name, value: value })\n .getQueryAndParameters();\n\n return new Query(query, parameters);\n }\n\n /**\n * Generates SQL query to delete a record from \"typeorm_metadata\" table.\n */\n protected deleteTypeormMetadataSql({\n database,\n schema,\n table,\n type,\n name\n }: {\n database?: string,\n schema?: string,\n table?: string,\n type: MetadataTableType,\n name: string\n }): Query {\n\n const qb = this.connection.createQueryBuilder();\n const deleteQb = qb.delete()\n .from(this.getTypeormMetadataTableName())\n .where(`${qb.escape(\"type\")} = :type`, { type })\n .andWhere(`${qb.escape(\"name\")} = :name`, { name });\n\n if (database) {\n deleteQb.andWhere(`${qb.escape(\"database\")} = :database`, { database });\n }\n\n if (schema) {\n deleteQb.andWhere(`${qb.escape(\"schema\")} = :schema`, { schema });\n }\n\n if (table) {\n deleteQb.andWhere(`${qb.escape(\"table\")} = :table`, { table });\n }\n\n const [query, parameters] = deleteQb.getQueryAndParameters();\n return new Query(query, parameters);\n }\n\n /**\n * Checks if at least one of column properties was changed.\n * Does not checks column type, length and autoincrement, because these properties changes separately.\n */\n protected isColumnChanged(oldColumn: TableColumn, newColumn: TableColumn, checkDefault?: boolean, checkComment?: boolean): boolean {\n // this logs need to debug issues in column change detection. Do not delete it!\n\n // console.log(\"charset ---------------\");\n // console.log(oldColumn.charset !== newColumn.charset);\n // console.log(oldColumn.charset, newColumn.charset);\n // console.log(\"collation ---------------\");\n // console.log(oldColumn.collation !== newColumn.collation);\n // console.log(oldColumn.collation, newColumn.collation);\n // console.log(\"precision ---------------\");\n // console.log(oldColumn.precision !== newColumn.precision);\n // console.log(oldColumn.precision, newColumn.precision);\n // console.log(\"scale ---------------\");\n // console.log(oldColumn.scale !== newColumn.scale);\n // console.log(oldColumn.scale, newColumn.scale);\n // console.log(\"default ---------------\");\n // console.log((checkDefault && oldColumn.default !== newColumn.default));\n // console.log(oldColumn.default, newColumn.default);\n // console.log(\"isNullable ---------------\");\n // console.log(oldColumn.isNullable !== newColumn.isNullable);\n // console.log(oldColumn.isNullable, newColumn.isNullable);\n // console.log(\"comment ---------------\");\n // console.log((checkComment && oldColumn.comment !== newColumn.comment));\n // console.log(oldColumn.comment, newColumn.comment);\n // console.log(\"enum ---------------\");\n // console.log(!OrmUtils.isArraysEqual(oldColumn.enum || [], newColumn.enum || []));\n // console.log(oldColumn.enum, newColumn.enum);\n\n return oldColumn.charset !== newColumn.charset\n || oldColumn.collation !== newColumn.collation\n || oldColumn.precision !== newColumn.precision\n || oldColumn.scale !== newColumn.scale\n || oldColumn.width !== newColumn.width // MySQL only\n || oldColumn.zerofill !== newColumn.zerofill // MySQL only\n || oldColumn.unsigned !== newColumn.unsigned // MySQL only\n || oldColumn.asExpression !== newColumn.asExpression // MySQL only\n || (checkDefault && oldColumn.default !== newColumn.default)\n || oldColumn.onUpdate !== newColumn.onUpdate // MySQL only\n || oldColumn.isNullable !== newColumn.isNullable\n || (checkComment && oldColumn.comment !== newColumn.comment)\n || !OrmUtils.isArraysEqual(oldColumn.enum || [], newColumn.enum || []);\n }\n\n /**\n * Checks if column length is by default.\n */\n protected isDefaultColumnLength(table: Table, column: TableColumn, length: string): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n\n if (columnMetadata) {\n const columnMetadataLength = this.connection.driver.getColumnLength(columnMetadata);\n if (columnMetadataLength)\n return false;\n }\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].length) {\n return this.connection.driver.dataTypeDefaults[column.type].length!.toString() === length.toString();\n }\n\n return false;\n }\n\n /**\n * Checks if column precision is by default.\n */\n protected isDefaultColumnPrecision(table: Table, column: TableColumn, precision: number): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.precision !== null && columnMetadata.precision !== undefined)\n return false;\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].precision !== null\n && this.connection.driver.dataTypeDefaults[column.type].precision !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].precision === precision;\n\n return false;\n }\n\n /**\n * Checks if column scale is by default.\n */\n protected isDefaultColumnScale(table: Table, column: TableColumn, scale: number): boolean {\n // if table have metadata, we check if length is specified in column metadata\n if (this.connection.hasMetadata(table.name)) {\n const metadata = this.connection.getMetadata(table.name);\n const columnMetadata = metadata.findColumnWithDatabaseName(column.name);\n if (columnMetadata && columnMetadata.scale !== null && columnMetadata.scale !== undefined)\n return false;\n }\n\n if (this.connection.driver.dataTypeDefaults\n && this.connection.driver.dataTypeDefaults[column.type]\n && this.connection.driver.dataTypeDefaults[column.type].scale !== null\n && this.connection.driver.dataTypeDefaults[column.type].scale !== undefined)\n return this.connection.driver.dataTypeDefaults[column.type].scale === scale;\n\n return false;\n }\n\n /**\n * Executes sql used special for schema build.\n */\n protected async executeQueries(upQueries: Query|Query[], downQueries: Query|Query[]): Promise<void> {\n if (upQueries instanceof Query)\n upQueries = [upQueries];\n if (downQueries instanceof Query)\n downQueries = [downQueries];\n\n this.sqlInMemory.upQueries.push(...upQueries);\n this.sqlInMemory.downQueries.push(...downQueries);\n\n // if sql-in-memory mode is enabled then simply store sql in memory and return\n if (this.sqlMemoryMode === true)\n return Promise.resolve() as Promise<any>;\n\n for (const {query, parameters} of upQueries) {\n await this.query(query, parameters);\n }\n }\n\n}\n"],"sourceRoot":".."}
@@ -15,6 +15,7 @@ import { TableCheck } from "../schema-builder/table/TableCheck";
15
15
  import { IsolationLevel } from "../driver/types/IsolationLevel";
16
16
  import { TableExclusion } from "../schema-builder/table/TableExclusion";
17
17
  import { QueryResult } from "./QueryResult";
18
+ import { ReplicationMode } from "../driver/types/ReplicationMode";
18
19
  /**
19
20
  * Runs queries on a single database connection.
20
21
  */
@@ -125,6 +126,10 @@ export interface QueryRunner {
125
126
  * Loads all views from the database and returns them.
126
127
  */
127
128
  getViews(viewPaths?: string[]): Promise<View[]>;
129
+ /**
130
+ * Returns replication mode (ex: `master` or `slave`).
131
+ */
132
+ getReplicationMode(): ReplicationMode;
128
133
  /**
129
134
  * Checks if a database with the given name exist.
130
135
  */
@@ -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 {Connection} from \"../connection/Connection\";\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\";\n\n/**\n * Runs queries on a single database connection.\n */\nexport interface QueryRunner {\n\n /**\n * Connection used by this query runner.\n */\n readonly connection: Connection;\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 * 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(query: string, parameters: any[] | undefined, useStructuredResult: true): 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 * Returns raw data stream.\n */\n stream(query: string, parameters?: any[], onEnd?: Function, onError?: Function): 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 * 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(schemaPath: string, ifExist?: boolean, isCascade?: boolean): Promise<void>;\n\n /**\n * Creates a new table.\n */\n createTable(table: Table, ifNotExist?: boolean, createForeignKeys?: boolean, createIndices?: boolean): Promise<void>;\n\n /**\n * Drops a table.\n */\n dropTable(table: Table|string, ifExist?: boolean, dropForeignKeys?: boolean, dropIndices?: boolean): Promise<void>;\n\n /**\n * Creates a new view.\n */\n createView(view: View, oldView?: View): 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(oldTableOrName: Table|string, newTableName: string): 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(table: Table|string, oldColumnOrName: TableColumn|string, newColumnOrName: TableColumn|string): Promise<void>;\n\n /**\n * Changes a column in the table.\n */\n changeColumn(table: Table|string, oldColumn: TableColumn|string, newColumn: TableColumn): Promise<void>;\n\n /**\n * Changes columns in the table.\n */\n changeColumns(table: Table|string, changedColumns: { oldColumn: TableColumn, newColumn: TableColumn }[]): Promise<void>;\n\n /**\n * Drops a column in the table.\n */\n dropColumn(table: Table|string, column: TableColumn|string): Promise<void>;\n\n /**\n * Drops columns in the table.\n */\n dropColumns(table: Table|string, columns: TableColumn[]|string[]): Promise<void>;\n\n /**\n * Creates a new primary key.\n */\n createPrimaryKey(table: Table|string, columnNames: string[]): Promise<void>;\n\n /**\n * Updates composite primary keys.\n */\n updatePrimaryKeys(table: Table|string, columns: TableColumn[]): Promise<void>;\n\n /**\n * Drops a primary key.\n */\n dropPrimaryKey(table: Table|string): Promise<void>;\n\n /**\n * Creates a new unique constraint.\n */\n createUniqueConstraint(table: Table|string, uniqueConstraint: TableUnique): Promise<void>;\n\n /**\n * Creates new unique constraints.\n */\n createUniqueConstraints(table: Table|string, uniqueConstraints: TableUnique[]): Promise<void>;\n\n /**\n * Drops an unique constraint.\n */\n dropUniqueConstraint(table: Table|string, uniqueOrName: TableUnique|string): Promise<void>;\n\n /**\n * Drops unique constraints.\n */\n dropUniqueConstraints(table: Table|string, uniqueConstraints: TableUnique[]): Promise<void>;\n\n /**\n * Creates a new check constraint.\n */\n createCheckConstraint(table: Table|string, checkConstraint: TableCheck): Promise<void>;\n\n /**\n * Creates new check constraints.\n */\n createCheckConstraints(table: Table|string, checkConstraints: TableCheck[]): Promise<void>;\n\n /**\n * Drops a check constraint.\n */\n dropCheckConstraint(table: Table|string, checkOrName: TableCheck|string): Promise<void>;\n\n /**\n * Drops check constraints.\n */\n dropCheckConstraints(table: Table|string, checkConstraints: TableCheck[]): Promise<void>;\n\n /**\n * Creates a new exclusion constraint.\n */\n createExclusionConstraint(table: Table|string, exclusionConstraint: TableExclusion): Promise<void>;\n\n /**\n * Creates new exclusion constraints.\n */\n createExclusionConstraints(table: Table|string, exclusionConstraints: TableExclusion[]): Promise<void>;\n\n /**\n * Drops a exclusion constraint.\n */\n dropExclusionConstraint(table: Table|string, exclusionOrName: TableExclusion|string): Promise<void>;\n\n /**\n * Drops exclusion constraints.\n */\n dropExclusionConstraints(table: Table|string, exclusionConstraints: TableExclusion[]): Promise<void>;\n\n /**\n * Creates a new foreign key.\n */\n createForeignKey(table: Table|string, foreignKey: TableForeignKey): Promise<void>;\n\n /**\n * Creates new foreign keys.\n */\n createForeignKeys(table: Table|string, foreignKeys: TableForeignKey[]): Promise<void>;\n\n /**\n * Drops a foreign key.\n */\n dropForeignKey(table: Table|string, foreignKeyOrName: TableForeignKey|string): Promise<void>;\n\n /**\n * Drops foreign keys.\n */\n dropForeignKeys(table: Table|string, foreignKeys: TableForeignKey[]): 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}\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 {Connection} from \"../connection/Connection\";\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 /**\n * Connection used by this query runner.\n */\n readonly connection: Connection;\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 * 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(query: string, parameters: any[] | undefined, useStructuredResult: true): 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 * Returns raw data stream.\n */\n stream(query: string, parameters?: any[], onEnd?: Function, onError?: Function): 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(schemaPath: string, ifExist?: boolean, isCascade?: boolean): Promise<void>;\n\n /**\n * Creates a new table.\n */\n createTable(table: Table, ifNotExist?: boolean, createForeignKeys?: boolean, createIndices?: boolean): Promise<void>;\n\n /**\n * Drops a table.\n */\n dropTable(table: Table|string, ifExist?: boolean, dropForeignKeys?: boolean, dropIndices?: boolean): Promise<void>;\n\n /**\n * Creates a new view.\n */\n createView(view: View, oldView?: View): 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(oldTableOrName: Table|string, newTableName: string): 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(table: Table|string, oldColumnOrName: TableColumn|string, newColumnOrName: TableColumn|string): Promise<void>;\n\n /**\n * Changes a column in the table.\n */\n changeColumn(table: Table|string, oldColumn: TableColumn|string, newColumn: TableColumn): Promise<void>;\n\n /**\n * Changes columns in the table.\n */\n changeColumns(table: Table|string, changedColumns: { oldColumn: TableColumn, newColumn: TableColumn }[]): Promise<void>;\n\n /**\n * Drops a column in the table.\n */\n dropColumn(table: Table|string, column: TableColumn|string): Promise<void>;\n\n /**\n * Drops columns in the table.\n */\n dropColumns(table: Table|string, columns: TableColumn[]|string[]): Promise<void>;\n\n /**\n * Creates a new primary key.\n */\n createPrimaryKey(table: Table|string, columnNames: string[]): Promise<void>;\n\n /**\n * Updates composite primary keys.\n */\n updatePrimaryKeys(table: Table|string, columns: TableColumn[]): Promise<void>;\n\n /**\n * Drops a primary key.\n */\n dropPrimaryKey(table: Table|string): Promise<void>;\n\n /**\n * Creates a new unique constraint.\n */\n createUniqueConstraint(table: Table|string, uniqueConstraint: TableUnique): Promise<void>;\n\n /**\n * Creates new unique constraints.\n */\n createUniqueConstraints(table: Table|string, uniqueConstraints: TableUnique[]): Promise<void>;\n\n /**\n * Drops an unique constraint.\n */\n dropUniqueConstraint(table: Table|string, uniqueOrName: TableUnique|string): Promise<void>;\n\n /**\n * Drops unique constraints.\n */\n dropUniqueConstraints(table: Table|string, uniqueConstraints: TableUnique[]): Promise<void>;\n\n /**\n * Creates a new check constraint.\n */\n createCheckConstraint(table: Table|string, checkConstraint: TableCheck): Promise<void>;\n\n /**\n * Creates new check constraints.\n */\n createCheckConstraints(table: Table|string, checkConstraints: TableCheck[]): Promise<void>;\n\n /**\n * Drops a check constraint.\n */\n dropCheckConstraint(table: Table|string, checkOrName: TableCheck|string): Promise<void>;\n\n /**\n * Drops check constraints.\n */\n dropCheckConstraints(table: Table|string, checkConstraints: TableCheck[]): Promise<void>;\n\n /**\n * Creates a new exclusion constraint.\n */\n createExclusionConstraint(table: Table|string, exclusionConstraint: TableExclusion): Promise<void>;\n\n /**\n * Creates new exclusion constraints.\n */\n createExclusionConstraints(table: Table|string, exclusionConstraints: TableExclusion[]): Promise<void>;\n\n /**\n * Drops a exclusion constraint.\n */\n dropExclusionConstraint(table: Table|string, exclusionOrName: TableExclusion|string): Promise<void>;\n\n /**\n * Drops exclusion constraints.\n */\n dropExclusionConstraints(table: Table|string, exclusionConstraints: TableExclusion[]): Promise<void>;\n\n /**\n * Creates a new foreign key.\n */\n createForeignKey(table: Table|string, foreignKey: TableForeignKey): Promise<void>;\n\n /**\n * Creates new foreign keys.\n */\n createForeignKeys(table: Table|string, foreignKeys: TableForeignKey[]): Promise<void>;\n\n /**\n * Drops a foreign key.\n */\n dropForeignKey(table: Table|string, foreignKeyOrName: TableForeignKey|string): Promise<void>;\n\n /**\n * Drops foreign keys.\n */\n dropForeignKeys(table: Table|string, foreignKeys: TableForeignKey[]): 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}\n"],"sourceRoot":".."}
@@ -13,6 +13,7 @@ import { UpdateResult } from "../query-builder/result/UpdateResult";
13
13
  import { DeleteResult } from "../query-builder/result/DeleteResult";
14
14
  import { ObjectID } from "../driver/mongodb/typings";
15
15
  import { QueryDeepPartialEntity } from "../query-builder/QueryPartialEntity";
16
+ import { UpsertOptions } from "./UpsertOptions";
16
17
  /**
17
18
  * Base abstract entity for all entities, used in ActiveRecord patterns.
18
19
  */
@@ -142,6 +143,12 @@ export declare class BaseEntity {
142
143
  * Does not check if entity exist in the database.
143
144
  */
144
145
  static update<T extends BaseEntity>(this: ObjectType<T>, criteria: string | string[] | number | number[] | Date | Date[] | ObjectID | ObjectID[] | FindConditions<T>, partialEntity: QueryDeepPartialEntity<T>, options?: SaveOptions): Promise<UpdateResult>;
146
+ /**
147
+ * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity
148
+ * Unlike save method executes a primitive operation without cascades, relations and other operations included.
149
+ * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.
150
+ */
151
+ static upsert<T extends BaseEntity>(this: ObjectType<T> & typeof BaseEntity, entityOrEntities: QueryDeepPartialEntity<T> | (QueryDeepPartialEntity<T>[]), conflictPathsOrOptions: string[] | UpsertOptions<T>): Promise<InsertResult>;
145
152
  /**
146
153
  * Deletes entities by a given criteria.
147
154
  * Unlike remove method executes a primitive operation without cascades, relations and other operations included.
@@ -174,6 +174,14 @@ var BaseEntity = /** @class */ (function () {
174
174
  BaseEntity.update = function (criteria, partialEntity, options) {
175
175
  return this.getRepository().update(criteria, partialEntity, options);
176
176
  };
177
+ /**
178
+ * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity
179
+ * Unlike save method executes a primitive operation without cascades, relations and other operations included.
180
+ * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.
181
+ */
182
+ BaseEntity.upsert = function (entityOrEntities, conflictPathsOrOptions) {
183
+ return this.getRepository().upsert(entityOrEntities, conflictPathsOrOptions);
184
+ };
177
185
  /**
178
186
  * Deletes entities by a given criteria.
179
187
  * Unlike remove method executes a primitive operation without cascades, relations and other operations included.
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/repository/BaseEntity.ts"],"names":[],"mappings":"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","file":"BaseEntity.js","sourcesContent":["import {Repository} from \"./Repository\";\nimport {getConnection} from \"../globals\";\nimport {FindConditions} from \"../find-options/FindConditions\";\nimport {DeepPartial} from \"../common/DeepPartial\";\nimport {SaveOptions} from \"./SaveOptions\";\nimport {FindOneOptions} from \"../find-options/FindOneOptions\";\nimport {RemoveOptions} from \"./RemoveOptions\";\nimport {FindManyOptions} from \"../find-options/FindManyOptions\";\nimport {Connection} from \"../connection/Connection\";\nimport {ObjectType} from \"../common/ObjectType\";\nimport {SelectQueryBuilder} from \"../query-builder/SelectQueryBuilder\";\nimport {InsertResult} from \"../query-builder/result/InsertResult\";\nimport {UpdateResult} from \"../query-builder/result/UpdateResult\";\nimport {DeleteResult} from \"../query-builder/result/DeleteResult\";\nimport {ObjectID} from \"../driver/mongodb/typings\";\nimport {ObjectUtils} from \"../util/ObjectUtils\";\nimport {QueryDeepPartialEntity} from \"../query-builder/QueryPartialEntity\";\n\n/**\n * Base abstract entity for all entities, used in ActiveRecord patterns.\n */\nexport class BaseEntity {\n\n // -------------------------------------------------------------------------\n // Private Static Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used in all static methods of the BaseEntity.\n */\n // @ts-ignore: Unused variable which is actually used\n private static usedConnection?: Connection;\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n hasId(): boolean {\n return (this.constructor as any).getRepository().hasId(this);\n }\n\n /**\n * Saves current entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n save(options?: SaveOptions): Promise<this> {\n return (this.constructor as any).getRepository().save(this, options);\n }\n\n /**\n * Removes current entity from the database.\n */\n remove(options?: RemoveOptions): Promise<this> {\n return (this.constructor as any).getRepository().remove(this, options);\n }\n\n /**\n * Records the delete date of current entity.\n */\n softRemove(options?: SaveOptions): Promise<this> {\n return (this.constructor as any).getRepository().softRemove(this, options);\n }\n\n /**\n * Recovers a given entity in the database.\n */\n recover(options?: SaveOptions): Promise<this> {\n return (this.constructor as any).getRepository().recover(this, options);\n }\n\n /**\n * Reloads entity data from the database.\n */\n async reload(): Promise<void> {\n const base: any = this.constructor;\n const newestEntity: BaseEntity = await base.getRepository().findOneOrFail(base.getId(this));\n\n ObjectUtils.assign(this, newestEntity);\n }\n\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Sets connection to be used by entity.\n */\n static useConnection(connection: Connection) {\n this.usedConnection = connection;\n }\n\n /**\n * Gets current entity's Repository.\n */\n static getRepository<T extends BaseEntity>(this: ObjectType<T>): Repository<T> {\n const connection: Connection = (this as any).usedConnection || getConnection();\n return connection.getRepository<T>(this);\n }\n\n /**\n * Returns object that is managed by this repository.\n * If this repository manages entity from schema,\n * then it returns a name of that schema instead.\n */\n static get target(): Function|string {\n return this.getRepository().target;\n }\n\n /**\n * Checks entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n static hasId(entity: BaseEntity): boolean {\n return this.getRepository().hasId(entity);\n }\n\n /**\n * Gets entity mixed id.\n */\n static getId<T extends BaseEntity>(this: ObjectType<T>, entity: T): any {\n return (this as any).getRepository().getId(entity);\n }\n\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n static createQueryBuilder<T extends BaseEntity>(this: ObjectType<T>, alias?: string): SelectQueryBuilder<T> {\n return (this as any).getRepository().createQueryBuilder(alias);\n }\n\n /**\n * Creates a new entity instance.\n */\n static create<T extends BaseEntity>(this: ObjectType<T>): T;\n\n /**\n * Creates a new entities and copies all entity properties from given objects into their new entities.\n * Note that it copies only properties that present in entity schema.\n */\n static create<T extends BaseEntity>(this: ObjectType<T>, entityLikeArray: DeepPartial<T>[]): T[];\n\n /**\n * Creates a new entity instance and copies all entity properties from this object into a new entity.\n * Note that it copies only properties that present in entity schema.\n */\n static create<T extends BaseEntity>(this: ObjectType<T>, entityLike: DeepPartial<T>): T;\n /**\n * Creates a new entity instance and copies all entity properties from this object into a new entity.\n * Note that it copies only properties that present in entity schema.\n */\n static create<T extends BaseEntity>(this: ObjectType<T>, entityOrEntities?: any): T {\n return (this as any).getRepository().create(entityOrEntities);\n }\n\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n static merge<T extends BaseEntity>(this: ObjectType<T>, mergeIntoEntity: T, ...entityLikes: DeepPartial<T>[]): T {\n return (this as any).getRepository().merge(mergeIntoEntity, ...entityLikes);\n }\n\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n static preload<T extends BaseEntity>(this: ObjectType<T>, entityLike: DeepPartial<T>): Promise<T|undefined> {\n return (this as any).getRepository().preload(entityLike);\n }\n\n /**\n * Saves all given entities in the database.\n * If entities do not exist in the database then inserts, otherwise updates.\n */\n static save<T extends BaseEntity>(this: ObjectType<T>, entities: T[], options?: SaveOptions): Promise<T[]>;\n\n /**\n * Saves a given entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n static save<T extends BaseEntity>(this: ObjectType<T>, entity: T, options?: SaveOptions): Promise<T>;\n\n /**\n * Saves one or many given entities.\n */\n static save<T extends BaseEntity>(this: ObjectType<T>, entityOrEntities: T|T[], options?: SaveOptions): Promise<T|T[]> {\n return (this as any).getRepository().save(entityOrEntities as any, options);\n }\n\n /**\n * Removes a given entities from the database.\n */\n static remove<T extends BaseEntity>(this: ObjectType<T>, entities: T[], options?: RemoveOptions): Promise<T[]>;\n\n /**\n * Removes a given entity from the database.\n */\n static remove<T extends BaseEntity>(this: ObjectType<T>, entity: T, options?: RemoveOptions): Promise<T>;\n\n /**\n * Removes one or many given entities.\n */\n static remove<T extends BaseEntity>(this: ObjectType<T>, entityOrEntities: T|T[], options?: RemoveOptions): Promise<T|T[]> {\n return (this as any).getRepository().remove(entityOrEntities as any, options);\n }\n\n /**\n * Records the delete date of all given entities.\n */\n static softRemove<T extends BaseEntity>(this: ObjectType<T>, entities: T[], options?: SaveOptions): Promise<T[]>;\n\n /**\n * Records the delete date of a given entity.\n */\n static softRemove<T extends BaseEntity>(this: ObjectType<T>, entity: T, options?: SaveOptions): Promise<T>;\n\n /**\n * Records the delete date of one or many given entities.\n */\n static softRemove<T extends BaseEntity>(this: ObjectType<T>, entityOrEntities: T|T[], options?: SaveOptions): Promise<T|T[]> {\n return (this as any).getRepository().softRemove(entityOrEntities as any, options);\n }\n\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n static insert<T extends BaseEntity>(this: ObjectType<T>, entity: QueryDeepPartialEntity<T>|QueryDeepPartialEntity<T>[], options?: SaveOptions): Promise<InsertResult> {\n return (this as any).getRepository().insert(entity, options);\n }\n\n /**\n * Updates entity partially. Entity can be found by a given conditions.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient UPDATE query.\n * Does not check if entity exist in the database.\n */\n static update<T extends BaseEntity>(this: ObjectType<T>, criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<T>, partialEntity: QueryDeepPartialEntity<T>, options?: SaveOptions): Promise<UpdateResult> {\n return (this as any).getRepository().update(criteria, partialEntity, options);\n }\n\n /**\n * Deletes entities by a given criteria.\n * Unlike remove method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n */\n static delete<T extends BaseEntity>(this: ObjectType<T>, criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<T>, options?: RemoveOptions): Promise<DeleteResult> {\n return (this as any).getRepository().delete(criteria, options);\n }\n\n /**\n * Counts entities that match given options.\n */\n static count<T extends BaseEntity>(this: ObjectType<T>, options?: FindManyOptions<T>): Promise<number>;\n\n /**\n * Counts entities that match given conditions.\n */\n static count<T extends BaseEntity>(this: ObjectType<T>, conditions?: FindConditions<T>): Promise<number>;\n\n /**\n * Counts entities that match given find options or conditions.\n */\n static count<T extends BaseEntity>(this: ObjectType<T>, optionsOrConditions?: FindManyOptions<T>|FindConditions<T>): Promise<number> {\n return (this as any).getRepository().count(optionsOrConditions as any);\n }\n\n /**\n * Finds entities that match given options.\n */\n static find<T extends BaseEntity>(this: ObjectType<T>, options?: FindManyOptions<T>): Promise<T[]>;\n\n /**\n * Finds entities that match given conditions.\n */\n static find<T extends BaseEntity>(this: ObjectType<T>, conditions?: FindConditions<T>): Promise<T[]>;\n\n /**\n * Finds entities that match given find options or conditions.\n */\n static find<T extends BaseEntity>(this: ObjectType<T>, optionsOrConditions?: FindManyOptions<T>|FindConditions<T>): Promise<T[]> {\n return (this as any).getRepository().find(optionsOrConditions as any);\n }\n\n /**\n * Finds entities that match given find options.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n static findAndCount<T extends BaseEntity>(this: ObjectType<T>, options?: FindManyOptions<T>): Promise<[ T[], number ]>;\n\n /**\n * Finds entities that match given conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n static findAndCount<T extends BaseEntity>(this: ObjectType<T>, conditions?: FindConditions<T>): Promise<[ T[], number ]>;\n\n /**\n * Finds entities that match given find options or conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n static findAndCount<T extends BaseEntity>(this: ObjectType<T>, optionsOrConditions?: FindManyOptions<T>|FindConditions<T>): Promise<[ T[], number ]> {\n return (this as any).getRepository().findAndCount(optionsOrConditions as any);\n }\n\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n static findByIds<T extends BaseEntity>(this: ObjectType<T>, ids: any[], options?: FindManyOptions<T>): Promise<T[]>;\n\n /**\n * Finds entities by ids.\n * Optionally conditions can be applied.\n */\n static findByIds<T extends BaseEntity>(this: ObjectType<T>, ids: any[], conditions?: FindConditions<T>): Promise<T[]>;\n\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n static findByIds<T extends BaseEntity>(this: ObjectType<T>, ids: any[], optionsOrConditions?: FindManyOptions<T>|FindConditions<T>): Promise<T[]> {\n return (this as any).getRepository().findByIds(ids, optionsOrConditions as any);\n }\n\n /**\n * Finds first entity that matches given options.\n */\n static findOne<T extends BaseEntity>(this: ObjectType<T>, id?: string|number|Date|ObjectID, options?: FindOneOptions<T>): Promise<T|undefined>;\n\n /**\n * Finds first entity that matches given options.\n */\n static findOne<T extends BaseEntity>(this: ObjectType<T>, options?: FindOneOptions<T>): Promise<T|undefined>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n static findOne<T extends BaseEntity>(this: ObjectType<T>, conditions?: FindConditions<T>, options?: FindOneOptions<T>): Promise<T|undefined>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n static findOne<T extends BaseEntity>(this: ObjectType<T>, optionsOrConditions?: string|number|Date|ObjectID|FindOneOptions<T>|FindConditions<T>, maybeOptions?: FindOneOptions<T>): Promise<T|undefined> {\n return (this as any).getRepository().findOne(optionsOrConditions as any, maybeOptions);\n }\n\n /**\n * Finds first entity that matches given options.\n */\n static findOneOrFail<T extends BaseEntity>(this: ObjectType<T>, id?: string|number|Date|ObjectID, options?: FindOneOptions<T>): Promise<T>;\n\n /**\n * Finds first entity that matches given options.\n */\n static findOneOrFail<T extends BaseEntity>(this: ObjectType<T>, options?: FindOneOptions<T>): Promise<T>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n static findOneOrFail<T extends BaseEntity>(this: ObjectType<T>, conditions?: FindConditions<T>, options?: FindOneOptions<T>): Promise<T>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n static findOneOrFail<T extends BaseEntity>(this: ObjectType<T>, optionsOrConditions?: string|number|Date|ObjectID|FindOneOptions<T>|FindConditions<T>, maybeOptions?: FindOneOptions<T>): Promise<T> {\n return (this as any).getRepository().findOneOrFail(optionsOrConditions as any, maybeOptions);\n }\n\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n static query<T extends BaseEntity>(this: ObjectType<T>, query: string, parameters?: any[]): Promise<any> {\n return (this as any).getRepository().query(query, parameters);\n }\n\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n */\n static clear<T extends BaseEntity>(this: ObjectType<T>, ): Promise<void> {\n return (this as any).getRepository().clear();\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/repository/BaseEntity.ts"],"names":[],"mappings":";AACA,OAAO,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAczC,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAIhD;;GAEG;AACH;IAAA;IAmYA,CAAC;IAvXG,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;;OAGG;IACH,0BAAK,GAAL;QACI,OAAQ,IAAI,CAAC,WAAmB,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,yBAAI,GAAJ,UAAK,OAAqB;QACtB,OAAQ,IAAI,CAAC,WAAmB,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACH,2BAAM,GAAN,UAAO,OAAuB;QAC1B,OAAQ,IAAI,CAAC,WAAmB,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,+BAAU,GAAV,UAAW,OAAqB;QAC5B,OAAQ,IAAI,CAAC,WAAmB,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/E,CAAC;IAED;;OAEG;IACH,4BAAO,GAAP,UAAQ,OAAqB;QACzB,OAAQ,IAAI,CAAC,WAAmB,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACG,2BAAM,GAAZ;;;;;;wBACU,IAAI,GAAQ,IAAI,CAAC,WAAW,CAAC;wBACF,qBAAM,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAA;;wBAArF,YAAY,GAAe,SAA0D;wBAE3F,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;;;;;KAC1C;IAED,4EAA4E;IAC5E,wBAAwB;IACxB,4EAA4E;IAE5E;;OAEG;IACI,wBAAa,GAApB,UAAqB,UAAsB;QACvC,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,wBAAa,GAApB;QACI,IAAM,UAAU,GAAgB,IAAY,CAAC,cAAc,IAAI,aAAa,EAAE,CAAC;QAC/E,OAAO,UAAU,CAAC,aAAa,CAAI,IAAI,CAAC,CAAC;IAC7C,CAAC;IAOD,sBAAW,oBAAM;QALjB;;;;WAIG;aACH;YACI,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;QACvC,CAAC;;;OAAA;IAED;;;OAGG;IACI,gBAAK,GAAZ,UAAa,MAAkB;QAC3B,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,gBAAK,GAAZ,UAAwD,MAAS;QAC7D,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,6BAAkB,GAAzB,UAAqE,KAAc;QAC/E,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IAkBF;;;QAGI;IACI,iBAAM,GAAb,UAAyD,gBAAsB;QAC3E,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,gBAAK,GAAZ,UAAwD,eAAkB;;QAAE,qBAAgC;aAAhC,UAAgC,EAAhC,qBAAgC,EAAhC,IAAgC;YAAhC,oCAAgC;;QACxG,OAAO,CAAA,KAAC,IAAY,CAAC,aAAa,EAAE,CAAA,CAAC,KAAK,0BAAC,eAAe,UAAK,WAAW,WAAE;IAChF,CAAC;IAED;;;;;;;;OAQG;IACI,kBAAO,GAAd,UAA0D,UAA0B;QAChF,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IAcD;;OAEG;IACI,eAAI,GAAX,UAAuD,gBAAuB,EAAE,OAAqB;QACjG,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,gBAAuB,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IAYD;;OAEG;IACI,iBAAM,GAAb,UAAyD,gBAAuB,EAAE,OAAuB;QACrG,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,gBAAuB,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IAYD;;OAEG;IACI,qBAAU,GAAjB,UAA6D,gBAAuB,EAAE,OAAqB;QACvG,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,UAAU,CAAC,gBAAuB,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED;;;;;OAKG;IACI,iBAAM,GAAb,UAAyD,MAA6D,EAAE,OAAqB;QACzI,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACI,iBAAM,GAAb,UAAyD,QAA2F,EAAE,aAAwC,EAAE,OAAqB;QACjN,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IAED;;;;OAIG;IACI,iBAAM,GAAb,UACI,gBAA2E,EAC3E,sBAAmD;QACnD,OAAO,IAAI,CAAC,aAAa,EAAK,CAAC,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,CAAC,CAAC;IACpF,CAAC;IAED;;;;;OAKG;IACI,iBAAM,GAAb,UAAyD,QAA2F,EAAE,OAAuB;QACzK,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAYD;;OAEG;IACI,gBAAK,GAAZ,UAAwD,mBAA0D;QAC9G,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,mBAA0B,CAAC,CAAC;IAC3E,CAAC;IAYD;;OAEG;IACI,eAAI,GAAX,UAAuD,mBAA0D;QAC7G,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,mBAA0B,CAAC,CAAC;IAC1E,CAAC;IAgBD;;;;OAIG;IACI,uBAAY,GAAnB,UAA+D,mBAA0D;QACrH,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,YAAY,CAAC,mBAA0B,CAAC,CAAC;IAClF,CAAC;IAcD;;;OAGG;IACI,oBAAS,GAAhB,UAA4D,GAAU,EAAE,mBAA0D;QAC9H,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,mBAA0B,CAAC,CAAC;IACpF,CAAC;IAiBD;;OAEG;IACI,kBAAO,GAAd,UAA0D,mBAAqF,EAAE,YAAgC;QAC7K,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,mBAA0B,EAAE,YAAY,CAAC,CAAC;IAC3F,CAAC;IAiBD;;OAEG;IACI,wBAAa,GAApB,UAAgE,mBAAqF,EAAE,YAAgC;QACnL,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,mBAA0B,EAAE,YAAY,CAAC,CAAC;IACjG,CAAC;IAED;;;OAGG;IACI,gBAAK,GAAZ,UAAwD,KAAa,EAAE,UAAkB;QACrF,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACI,gBAAK,GAAZ;QACI,OAAQ,IAAY,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAEL,iBAAC;AAAD,CAnYA,AAmYC,IAAA","file":"BaseEntity.js","sourcesContent":["import {Repository} from \"./Repository\";\nimport {getConnection} from \"../globals\";\nimport {FindConditions} from \"../find-options/FindConditions\";\nimport {DeepPartial} from \"../common/DeepPartial\";\nimport {SaveOptions} from \"./SaveOptions\";\nimport {FindOneOptions} from \"../find-options/FindOneOptions\";\nimport {RemoveOptions} from \"./RemoveOptions\";\nimport {FindManyOptions} from \"../find-options/FindManyOptions\";\nimport {Connection} from \"../connection/Connection\";\nimport {ObjectType} from \"../common/ObjectType\";\nimport {SelectQueryBuilder} from \"../query-builder/SelectQueryBuilder\";\nimport {InsertResult} from \"../query-builder/result/InsertResult\";\nimport {UpdateResult} from \"../query-builder/result/UpdateResult\";\nimport {DeleteResult} from \"../query-builder/result/DeleteResult\";\nimport {ObjectID} from \"../driver/mongodb/typings\";\nimport {ObjectUtils} from \"../util/ObjectUtils\";\nimport {QueryDeepPartialEntity} from \"../query-builder/QueryPartialEntity\";\nimport {UpsertOptions} from \"./UpsertOptions\";\n\n/**\n * Base abstract entity for all entities, used in ActiveRecord patterns.\n */\nexport class BaseEntity {\n\n // -------------------------------------------------------------------------\n // Private Static Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used in all static methods of the BaseEntity.\n */\n // @ts-ignore: Unused variable which is actually used\n private static usedConnection?: Connection;\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Checks if entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n hasId(): boolean {\n return (this.constructor as any).getRepository().hasId(this);\n }\n\n /**\n * Saves current entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n save(options?: SaveOptions): Promise<this> {\n return (this.constructor as any).getRepository().save(this, options);\n }\n\n /**\n * Removes current entity from the database.\n */\n remove(options?: RemoveOptions): Promise<this> {\n return (this.constructor as any).getRepository().remove(this, options);\n }\n\n /**\n * Records the delete date of current entity.\n */\n softRemove(options?: SaveOptions): Promise<this> {\n return (this.constructor as any).getRepository().softRemove(this, options);\n }\n\n /**\n * Recovers a given entity in the database.\n */\n recover(options?: SaveOptions): Promise<this> {\n return (this.constructor as any).getRepository().recover(this, options);\n }\n\n /**\n * Reloads entity data from the database.\n */\n async reload(): Promise<void> {\n const base: any = this.constructor;\n const newestEntity: BaseEntity = await base.getRepository().findOneOrFail(base.getId(this));\n\n ObjectUtils.assign(this, newestEntity);\n }\n\n // -------------------------------------------------------------------------\n // Public Static Methods\n // -------------------------------------------------------------------------\n\n /**\n * Sets connection to be used by entity.\n */\n static useConnection(connection: Connection) {\n this.usedConnection = connection;\n }\n\n /**\n * Gets current entity's Repository.\n */\n static getRepository<T extends BaseEntity>(this: ObjectType<T>): Repository<T> {\n const connection: Connection = (this as any).usedConnection || getConnection();\n return connection.getRepository<T>(this);\n }\n\n /**\n * Returns object that is managed by this repository.\n * If this repository manages entity from schema,\n * then it returns a name of that schema instead.\n */\n static get target(): Function|string {\n return this.getRepository().target;\n }\n\n /**\n * Checks entity has an id.\n * If entity composite compose ids, it will check them all.\n */\n static hasId(entity: BaseEntity): boolean {\n return this.getRepository().hasId(entity);\n }\n\n /**\n * Gets entity mixed id.\n */\n static getId<T extends BaseEntity>(this: ObjectType<T>, entity: T): any {\n return (this as any).getRepository().getId(entity);\n }\n\n /**\n * Creates a new query builder that can be used to build a sql query.\n */\n static createQueryBuilder<T extends BaseEntity>(this: ObjectType<T>, alias?: string): SelectQueryBuilder<T> {\n return (this as any).getRepository().createQueryBuilder(alias);\n }\n\n /**\n * Creates a new entity instance.\n */\n static create<T extends BaseEntity>(this: ObjectType<T>): T;\n\n /**\n * Creates a new entities and copies all entity properties from given objects into their new entities.\n * Note that it copies only properties that present in entity schema.\n */\n static create<T extends BaseEntity>(this: ObjectType<T>, entityLikeArray: DeepPartial<T>[]): T[];\n\n /**\n * Creates a new entity instance and copies all entity properties from this object into a new entity.\n * Note that it copies only properties that present in entity schema.\n */\n static create<T extends BaseEntity>(this: ObjectType<T>, entityLike: DeepPartial<T>): T;\n /**\n * Creates a new entity instance and copies all entity properties from this object into a new entity.\n * Note that it copies only properties that present in entity schema.\n */\n static create<T extends BaseEntity>(this: ObjectType<T>, entityOrEntities?: any): T {\n return (this as any).getRepository().create(entityOrEntities);\n }\n\n /**\n * Merges multiple entities (or entity-like objects) into a given entity.\n */\n static merge<T extends BaseEntity>(this: ObjectType<T>, mergeIntoEntity: T, ...entityLikes: DeepPartial<T>[]): T {\n return (this as any).getRepository().merge(mergeIntoEntity, ...entityLikes);\n }\n\n /**\n * Creates a new entity from the given plain javascript object. If entity already exist in the database, then\n * it loads it (and everything related to it), replaces all values with the new ones from the given object\n * and returns this new entity. This new entity is actually a loaded from the db entity with all properties\n * replaced from the new object.\n *\n * Note that given entity-like object must have an entity id / primary key to find entity by.\n * Returns undefined if entity with given id was not found.\n */\n static preload<T extends BaseEntity>(this: ObjectType<T>, entityLike: DeepPartial<T>): Promise<T|undefined> {\n return (this as any).getRepository().preload(entityLike);\n }\n\n /**\n * Saves all given entities in the database.\n * If entities do not exist in the database then inserts, otherwise updates.\n */\n static save<T extends BaseEntity>(this: ObjectType<T>, entities: T[], options?: SaveOptions): Promise<T[]>;\n\n /**\n * Saves a given entity in the database.\n * If entity does not exist in the database then inserts, otherwise updates.\n */\n static save<T extends BaseEntity>(this: ObjectType<T>, entity: T, options?: SaveOptions): Promise<T>;\n\n /**\n * Saves one or many given entities.\n */\n static save<T extends BaseEntity>(this: ObjectType<T>, entityOrEntities: T|T[], options?: SaveOptions): Promise<T|T[]> {\n return (this as any).getRepository().save(entityOrEntities as any, options);\n }\n\n /**\n * Removes a given entities from the database.\n */\n static remove<T extends BaseEntity>(this: ObjectType<T>, entities: T[], options?: RemoveOptions): Promise<T[]>;\n\n /**\n * Removes a given entity from the database.\n */\n static remove<T extends BaseEntity>(this: ObjectType<T>, entity: T, options?: RemoveOptions): Promise<T>;\n\n /**\n * Removes one or many given entities.\n */\n static remove<T extends BaseEntity>(this: ObjectType<T>, entityOrEntities: T|T[], options?: RemoveOptions): Promise<T|T[]> {\n return (this as any).getRepository().remove(entityOrEntities as any, options);\n }\n\n /**\n * Records the delete date of all given entities.\n */\n static softRemove<T extends BaseEntity>(this: ObjectType<T>, entities: T[], options?: SaveOptions): Promise<T[]>;\n\n /**\n * Records the delete date of a given entity.\n */\n static softRemove<T extends BaseEntity>(this: ObjectType<T>, entity: T, options?: SaveOptions): Promise<T>;\n\n /**\n * Records the delete date of one or many given entities.\n */\n static softRemove<T extends BaseEntity>(this: ObjectType<T>, entityOrEntities: T|T[], options?: SaveOptions): Promise<T|T[]> {\n return (this as any).getRepository().softRemove(entityOrEntities as any, options);\n }\n\n /**\n * Inserts a given entity into the database.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT query.\n * Does not check if entity exist in the database, so query will fail if duplicate entity is being inserted.\n */\n static insert<T extends BaseEntity>(this: ObjectType<T>, entity: QueryDeepPartialEntity<T>|QueryDeepPartialEntity<T>[], options?: SaveOptions): Promise<InsertResult> {\n return (this as any).getRepository().insert(entity, options);\n }\n\n /**\n * Updates entity partially. Entity can be found by a given conditions.\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient UPDATE query.\n * Does not check if entity exist in the database.\n */\n static update<T extends BaseEntity>(this: ObjectType<T>, criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<T>, partialEntity: QueryDeepPartialEntity<T>, options?: SaveOptions): Promise<UpdateResult> {\n return (this as any).getRepository().update(criteria, partialEntity, options);\n }\n\n /**\n * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity\n * Unlike save method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.\n */\n static upsert<T extends BaseEntity>(this: ObjectType<T> & typeof BaseEntity, \n entityOrEntities: QueryDeepPartialEntity<T> | (QueryDeepPartialEntity<T>[]),\n conflictPathsOrOptions: string[] | UpsertOptions<T>): Promise<InsertResult> {\n return this.getRepository<T>().upsert(entityOrEntities, conflictPathsOrOptions);\n }\n\n /**\n * Deletes entities by a given criteria.\n * Unlike remove method executes a primitive operation without cascades, relations and other operations included.\n * Executes fast and efficient DELETE query.\n * Does not check if entity exist in the database.\n */\n static delete<T extends BaseEntity>(this: ObjectType<T>, criteria: string|string[]|number|number[]|Date|Date[]|ObjectID|ObjectID[]|FindConditions<T>, options?: RemoveOptions): Promise<DeleteResult> {\n return (this as any).getRepository().delete(criteria, options);\n }\n\n /**\n * Counts entities that match given options.\n */\n static count<T extends BaseEntity>(this: ObjectType<T>, options?: FindManyOptions<T>): Promise<number>;\n\n /**\n * Counts entities that match given conditions.\n */\n static count<T extends BaseEntity>(this: ObjectType<T>, conditions?: FindConditions<T>): Promise<number>;\n\n /**\n * Counts entities that match given find options or conditions.\n */\n static count<T extends BaseEntity>(this: ObjectType<T>, optionsOrConditions?: FindManyOptions<T>|FindConditions<T>): Promise<number> {\n return (this as any).getRepository().count(optionsOrConditions as any);\n }\n\n /**\n * Finds entities that match given options.\n */\n static find<T extends BaseEntity>(this: ObjectType<T>, options?: FindManyOptions<T>): Promise<T[]>;\n\n /**\n * Finds entities that match given conditions.\n */\n static find<T extends BaseEntity>(this: ObjectType<T>, conditions?: FindConditions<T>): Promise<T[]>;\n\n /**\n * Finds entities that match given find options or conditions.\n */\n static find<T extends BaseEntity>(this: ObjectType<T>, optionsOrConditions?: FindManyOptions<T>|FindConditions<T>): Promise<T[]> {\n return (this as any).getRepository().find(optionsOrConditions as any);\n }\n\n /**\n * Finds entities that match given find options.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n static findAndCount<T extends BaseEntity>(this: ObjectType<T>, options?: FindManyOptions<T>): Promise<[ T[], number ]>;\n\n /**\n * Finds entities that match given conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n static findAndCount<T extends BaseEntity>(this: ObjectType<T>, conditions?: FindConditions<T>): Promise<[ T[], number ]>;\n\n /**\n * Finds entities that match given find options or conditions.\n * Also counts all entities that match given conditions,\n * but ignores pagination settings (from and take options).\n */\n static findAndCount<T extends BaseEntity>(this: ObjectType<T>, optionsOrConditions?: FindManyOptions<T>|FindConditions<T>): Promise<[ T[], number ]> {\n return (this as any).getRepository().findAndCount(optionsOrConditions as any);\n }\n\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n static findByIds<T extends BaseEntity>(this: ObjectType<T>, ids: any[], options?: FindManyOptions<T>): Promise<T[]>;\n\n /**\n * Finds entities by ids.\n * Optionally conditions can be applied.\n */\n static findByIds<T extends BaseEntity>(this: ObjectType<T>, ids: any[], conditions?: FindConditions<T>): Promise<T[]>;\n\n /**\n * Finds entities by ids.\n * Optionally find options can be applied.\n */\n static findByIds<T extends BaseEntity>(this: ObjectType<T>, ids: any[], optionsOrConditions?: FindManyOptions<T>|FindConditions<T>): Promise<T[]> {\n return (this as any).getRepository().findByIds(ids, optionsOrConditions as any);\n }\n\n /**\n * Finds first entity that matches given options.\n */\n static findOne<T extends BaseEntity>(this: ObjectType<T>, id?: string|number|Date|ObjectID, options?: FindOneOptions<T>): Promise<T|undefined>;\n\n /**\n * Finds first entity that matches given options.\n */\n static findOne<T extends BaseEntity>(this: ObjectType<T>, options?: FindOneOptions<T>): Promise<T|undefined>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n static findOne<T extends BaseEntity>(this: ObjectType<T>, conditions?: FindConditions<T>, options?: FindOneOptions<T>): Promise<T|undefined>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n static findOne<T extends BaseEntity>(this: ObjectType<T>, optionsOrConditions?: string|number|Date|ObjectID|FindOneOptions<T>|FindConditions<T>, maybeOptions?: FindOneOptions<T>): Promise<T|undefined> {\n return (this as any).getRepository().findOne(optionsOrConditions as any, maybeOptions);\n }\n\n /**\n * Finds first entity that matches given options.\n */\n static findOneOrFail<T extends BaseEntity>(this: ObjectType<T>, id?: string|number|Date|ObjectID, options?: FindOneOptions<T>): Promise<T>;\n\n /**\n * Finds first entity that matches given options.\n */\n static findOneOrFail<T extends BaseEntity>(this: ObjectType<T>, options?: FindOneOptions<T>): Promise<T>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n static findOneOrFail<T extends BaseEntity>(this: ObjectType<T>, conditions?: FindConditions<T>, options?: FindOneOptions<T>): Promise<T>;\n\n /**\n * Finds first entity that matches given conditions.\n */\n static findOneOrFail<T extends BaseEntity>(this: ObjectType<T>, optionsOrConditions?: string|number|Date|ObjectID|FindOneOptions<T>|FindConditions<T>, maybeOptions?: FindOneOptions<T>): Promise<T> {\n return (this as any).getRepository().findOneOrFail(optionsOrConditions as any, maybeOptions);\n }\n\n /**\n * Executes a raw SQL query and returns a raw database results.\n * Raw query execution is supported only by relational databases (MongoDB is not supported).\n */\n static query<T extends BaseEntity>(this: ObjectType<T>, query: string, parameters?: any[]): Promise<any> {\n return (this as any).getRepository().query(query, parameters);\n }\n\n /**\n * Clears all the data from the given table/collection (truncates/drops it).\n */\n static clear<T extends BaseEntity>(this: ObjectType<T>, ): Promise<void> {\n return (this as any).getRepository().clear();\n }\n\n}\n"],"sourceRoot":".."}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Special options passed to TreeRepository#findTrees
3
+ */
4
+ export interface FindTreesOptions {
5
+ /**
6
+ * When loading a tree from a TreeRepository, limits the depth of the descendents loaded
7
+ */
8
+ depth?: number;
9
+ }
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=FindTreesOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../browser/src/repository/FindTreesOptions.ts"],"names":[],"mappings":"","file":"FindTreesOptions.js","sourcesContent":["/**\n * Special options passed to TreeRepository#findTrees\n */\nexport interface FindTreesOptions {\n\n /**\n * When loading a tree from a TreeRepository, limits the depth of the descendents loaded\n */\n depth?: number;\n\n}\n"],"sourceRoot":".."}
@@ -14,6 +14,7 @@ import { InsertResult } from "../query-builder/result/InsertResult";
14
14
  import { QueryDeepPartialEntity } from "../query-builder/QueryPartialEntity";
15
15
  import { ObjectID } from "../driver/mongodb/typings";
16
16
  import { FindConditions } from "../find-options/FindConditions";
17
+ import { UpsertOptions } from "./UpsertOptions";
17
18
  /**
18
19
  * Repository is supposed to work with your entity objects. Find entities, insert, update, delete, etc.
19
20
  */
@@ -163,6 +164,12 @@ export declare class Repository<Entity extends ObjectLiteral> {
163
164
  * Does not check if entity exist in the database.
164
165
  */
165
166
  update(criteria: string | string[] | number | number[] | Date | Date[] | ObjectID | ObjectID[] | FindConditions<Entity>, partialEntity: QueryDeepPartialEntity<Entity>): Promise<UpdateResult>;
167
+ /**
168
+ * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity
169
+ * Unlike save method executes a primitive operation without cascades, relations and other operations included.
170
+ * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.
171
+ */
172
+ upsert(entityOrEntities: QueryDeepPartialEntity<Entity> | (QueryDeepPartialEntity<Entity>[]), conflictPathsOrOptions: string[] | UpsertOptions<Entity>): Promise<InsertResult>;
166
173
  /**
167
174
  * Deletes entities by a given criteria.
168
175
  * Unlike save method executes a primitive operation without cascades, relations and other operations included.
@@ -111,6 +111,14 @@ var Repository = /** @class */ (function () {
111
111
  Repository.prototype.update = function (criteria, partialEntity) {
112
112
  return this.manager.update(this.metadata.target, criteria, partialEntity);
113
113
  };
114
+ /**
115
+ * Inserts a given entity into the database, unless a unique constraint conflicts then updates the entity
116
+ * Unlike save method executes a primitive operation without cascades, relations and other operations included.
117
+ * Executes fast and efficient INSERT ... ON CONFLICT DO UPDATE/ON DUPLICATE KEY UPDATE query.
118
+ */
119
+ Repository.prototype.upsert = function (entityOrEntities, conflictPathsOrOptions) {
120
+ return this.manager.upsert(this.metadata.target, entityOrEntities, conflictPathsOrOptions);
121
+ };
114
122
  /**
115
123
  * Deletes entities by a given criteria.
116
124
  * Unlike save method executes a primitive operation without cascades, relations and other operations included.