typeorm 0.3.21-dev.fdbb013 → 0.3.21

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 (1213) hide show
  1. package/README.md +1315 -1325
  2. package/browser/cache/DbQueryResultCache.js.map +1 -1
  3. package/browser/cache/QueryResultCache.d.ts +4 -2
  4. package/browser/cache/QueryResultCache.js.map +1 -1
  5. package/browser/cache/QueryResultCacheFactory.js.map +1 -1
  6. package/browser/cache/QueryResultCacheOptions.js.map +1 -1
  7. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  8. package/browser/cli-ts-node-commonjs.js.map +1 -1
  9. package/browser/cli-ts-node-esm.js.map +1 -1
  10. package/browser/common/DeepPartial.js.map +1 -1
  11. package/browser/common/EntityTarget.js.map +1 -1
  12. package/browser/common/MixedList.js.map +1 -1
  13. package/browser/common/NonNever.js.map +1 -1
  14. package/browser/common/ObjectLiteral.js.map +1 -1
  15. package/browser/common/ObjectType.js.map +1 -1
  16. package/browser/common/PickKeysByType.js.map +1 -1
  17. package/browser/common/RelationType.js.map +1 -1
  18. package/browser/connection/BaseConnectionOptions.js.map +1 -1
  19. package/browser/connection/Connection.js.map +1 -1
  20. package/browser/connection/ConnectionManager.js.map +1 -1
  21. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  22. package/browser/connection/ConnectionOptions.js.map +1 -1
  23. package/browser/connection/ConnectionOptionsReader.d.ts +4 -4
  24. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  25. package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  26. package/browser/container.js.map +1 -1
  27. package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
  28. package/browser/data-source/DataSource.d.ts +2 -0
  29. package/browser/data-source/DataSource.js +2 -0
  30. package/browser/data-source/DataSource.js.map +1 -1
  31. package/browser/data-source/DataSourceOptions.js.map +1 -1
  32. package/browser/data-source/index.js.map +1 -1
  33. package/browser/decorator/Check.js.map +1 -1
  34. package/browser/decorator/EntityRepository.js.map +1 -1
  35. package/browser/decorator/Exclusion.js.map +1 -1
  36. package/browser/decorator/Generated.js.map +1 -1
  37. package/browser/decorator/Index.js.map +1 -1
  38. package/browser/decorator/Unique.js.map +1 -1
  39. package/browser/decorator/columns/Column.js.map +1 -1
  40. package/browser/decorator/columns/CreateDateColumn.js.map +1 -1
  41. package/browser/decorator/columns/DeleteDateColumn.js.map +1 -1
  42. package/browser/decorator/columns/ObjectIdColumn.js.map +1 -1
  43. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  44. package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  45. package/browser/decorator/columns/UpdateDateColumn.js.map +1 -1
  46. package/browser/decorator/columns/VersionColumn.js.map +1 -1
  47. package/browser/decorator/columns/ViewColumn.js.map +1 -1
  48. package/browser/decorator/columns/VirtualColumn.js.map +1 -1
  49. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  50. package/browser/decorator/entity/Entity.js.map +1 -1
  51. package/browser/decorator/entity/TableInheritance.js.map +1 -1
  52. package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
  53. package/browser/decorator/listeners/AfterInsert.js.map +1 -1
  54. package/browser/decorator/listeners/AfterLoad.js.map +1 -1
  55. package/browser/decorator/listeners/AfterRecover.js.map +1 -1
  56. package/browser/decorator/listeners/AfterRemove.js.map +1 -1
  57. package/browser/decorator/listeners/AfterSoftRemove.js.map +1 -1
  58. package/browser/decorator/listeners/AfterUpdate.js.map +1 -1
  59. package/browser/decorator/listeners/BeforeInsert.js.map +1 -1
  60. package/browser/decorator/listeners/BeforeRecover.js.map +1 -1
  61. package/browser/decorator/listeners/BeforeRemove.js.map +1 -1
  62. package/browser/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  63. package/browser/decorator/listeners/BeforeUpdate.js.map +1 -1
  64. package/browser/decorator/listeners/EventSubscriber.js.map +1 -1
  65. package/browser/decorator/options/ColumnCommonOptions.js.map +1 -1
  66. package/browser/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
  67. package/browser/decorator/options/ColumnEnumOptions.js.map +1 -1
  68. package/browser/decorator/options/ColumnHstoreOptions.js.map +1 -1
  69. package/browser/decorator/options/ColumnNumericOptions.js.map +1 -1
  70. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  71. package/browser/decorator/options/ColumnWithLengthOptions.js.map +1 -1
  72. package/browser/decorator/options/ColumnWithWidthOptions.js.map +1 -1
  73. package/browser/decorator/options/EntityOptions.js.map +1 -1
  74. package/browser/decorator/options/IndexOptions.js.map +1 -1
  75. package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
  76. package/browser/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  77. package/browser/decorator/options/JoinTableOptions.js.map +1 -1
  78. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  79. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  80. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  81. package/browser/decorator/options/RelationOptions.js.map +1 -1
  82. package/browser/decorator/options/SpatialColumnOptions.js.map +1 -1
  83. package/browser/decorator/options/TransactionOptions.js.map +1 -1
  84. package/browser/decorator/options/UniqueOptions.js.map +1 -1
  85. package/browser/decorator/options/ValueTransformer.js.map +1 -1
  86. package/browser/decorator/options/ViewColumnOptions.js.map +1 -1
  87. package/browser/decorator/options/ViewEntityOptions.js.map +1 -1
  88. package/browser/decorator/options/VirtualColumnOptions.js.map +1 -1
  89. package/browser/decorator/relations/JoinColumn.js.map +1 -1
  90. package/browser/decorator/relations/JoinTable.js.map +1 -1
  91. package/browser/decorator/relations/ManyToMany.js.map +1 -1
  92. package/browser/decorator/relations/ManyToOne.js.map +1 -1
  93. package/browser/decorator/relations/OneToMany.js.map +1 -1
  94. package/browser/decorator/relations/OneToOne.d.ts +4 -4
  95. package/browser/decorator/relations/OneToOne.js +2 -2
  96. package/browser/decorator/relations/OneToOne.js.map +1 -1
  97. package/browser/decorator/relations/RelationCount.js.map +1 -1
  98. package/browser/decorator/relations/RelationId.js.map +1 -1
  99. package/browser/decorator/tree/Tree.js.map +1 -1
  100. package/browser/decorator/tree/TreeChildren.js.map +1 -1
  101. package/browser/decorator/tree/TreeLevelColumn.js.map +1 -1
  102. package/browser/decorator/tree/TreeParent.js.map +1 -1
  103. package/browser/driver/Driver.js.map +1 -1
  104. package/browser/driver/DriverFactory.js.map +1 -1
  105. package/browser/driver/DriverUtils.js.map +1 -1
  106. package/browser/driver/Query.js.map +1 -1
  107. package/browser/driver/SqlInMemory.js.map +1 -1
  108. package/browser/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
  109. package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +1 -1
  110. package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  111. package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  112. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  113. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +0 -1
  114. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  115. package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
  116. package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  117. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  118. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  119. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +2 -2
  120. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  121. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +4 -0
  122. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  123. package/browser/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
  124. package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
  125. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  126. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +1 -2
  127. package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  128. package/browser/driver/cockroachdb/CockroachConnectionOptions.d.ts +1 -1
  129. package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  130. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  131. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +0 -1
  132. package/browser/driver/cockroachdb/CockroachQueryRunner.js +5 -3
  133. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  134. package/browser/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  135. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  136. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  137. package/browser/driver/expo/ExpoConnectionOptions.js.map +1 -1
  138. package/browser/driver/expo/ExpoDriver.js.map +1 -1
  139. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  140. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +1 -2
  141. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  142. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  143. package/browser/driver/mongodb/MongoQueryRunner.d.ts +0 -1
  144. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  145. package/browser/driver/mongodb/bson.typings.js.map +1 -1
  146. package/browser/driver/mongodb/typings.d.ts +0 -8
  147. package/browser/driver/mongodb/typings.js +0 -1
  148. package/browser/driver/mongodb/typings.js.map +1 -1
  149. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +1 -1
  150. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  151. package/browser/driver/mysql/MysqlConnectionOptions.d.ts +1 -1
  152. package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  153. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  154. package/browser/driver/mysql/MysqlQueryRunner.d.ts +0 -1
  155. package/browser/driver/mysql/MysqlQueryRunner.js +71 -71
  156. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  157. package/browser/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
  158. package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
  159. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  160. package/browser/driver/oracle/OracleConnectionCredentialsOptions.d.ts +1 -1
  161. package/browser/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
  162. package/browser/driver/oracle/OracleConnectionOptions.d.ts +1 -1
  163. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  164. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  165. package/browser/driver/oracle/OracleQueryRunner.d.ts +0 -1
  166. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  167. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -2
  168. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  169. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +1 -1
  170. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  171. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  172. package/browser/driver/postgres/PostgresQueryRunner.d.ts +0 -1
  173. package/browser/driver/postgres/PostgresQueryRunner.js +5 -1
  174. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  175. package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  176. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  177. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  178. package/browser/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
  179. package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
  180. package/browser/driver/sap/SapDriver.js.map +1 -1
  181. package/browser/driver/sap/SapQueryRunner.d.ts +0 -1
  182. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  183. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +1 -1
  184. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  185. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +1 -1
  186. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  187. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  188. package/browser/driver/spanner/SpannerQueryRunner.d.ts +0 -1
  189. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  190. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  191. package/browser/driver/sqlite/SqliteDriver.js +2 -2
  192. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  193. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  194. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  195. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +0 -1
  196. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  197. package/browser/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  198. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  199. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  200. package/browser/driver/sqlserver/MssqlParameter.js.map +1 -1
  201. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +1 -1
  202. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  203. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +1 -1
  204. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  205. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  206. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +0 -1
  207. package/browser/driver/sqlserver/SqlServerQueryRunner.js +26 -26
  208. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  209. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  210. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -1
  211. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  212. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  213. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  214. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
  215. package/browser/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
  216. package/browser/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
  217. package/browser/driver/types/ColumnTypes.js.map +1 -1
  218. package/browser/driver/types/CteCapabilities.js.map +1 -1
  219. package/browser/driver/types/DataTypeDefaults.js.map +1 -1
  220. package/browser/driver/types/DatabaseType.js.map +1 -1
  221. package/browser/driver/types/GeoJsonTypes.js.map +1 -1
  222. package/browser/driver/types/IsolationLevel.js.map +1 -1
  223. package/browser/driver/types/MappedColumnTypes.js.map +1 -1
  224. package/browser/driver/types/MetadataTableType.js.map +1 -1
  225. package/browser/driver/types/ReplicationMode.js.map +1 -1
  226. package/browser/driver/types/UpsertType.js.map +1 -1
  227. package/browser/entity-manager/EntityManager.d.ts +2 -0
  228. package/browser/entity-manager/EntityManager.js +4 -2
  229. package/browser/entity-manager/EntityManager.js.map +1 -1
  230. package/browser/entity-manager/EntityManagerFactory.js.map +1 -1
  231. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  232. package/browser/entity-manager/SqljsEntityManager.js.map +1 -1
  233. package/browser/entity-schema/EntitySchema.js.map +1 -1
  234. package/browser/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
  235. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  236. package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  237. package/browser/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  238. package/browser/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
  239. package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  240. package/browser/entity-schema/EntitySchemaInheritanceOptions.js.map +1 -1
  241. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  242. package/browser/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
  243. package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  244. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  245. package/browser/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  246. package/browser/error/AlreadyHasActiveConnectionError.js.map +1 -1
  247. package/browser/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  248. package/browser/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  249. package/browser/error/CannotCreateEntityIdMapError.js.map +1 -1
  250. package/browser/error/CannotDetermineEntityError.js.map +1 -1
  251. package/browser/error/CannotExecuteNotConnectedError.js.map +1 -1
  252. package/browser/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  253. package/browser/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  254. package/browser/error/CircularRelationsError.js.map +1 -1
  255. package/browser/error/ColumnTypeUndefinedError.js.map +1 -1
  256. package/browser/error/ConnectionIsNotSetError.js.map +1 -1
  257. package/browser/error/ConnectionNotFoundError.js.map +1 -1
  258. package/browser/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  259. package/browser/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  260. package/browser/error/CustomRepositoryNotFoundError.js.map +1 -1
  261. package/browser/error/DataTypeNotSupportedError.js.map +1 -1
  262. package/browser/error/DriverOptionNotSetError.js.map +1 -1
  263. package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
  264. package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
  265. package/browser/error/EntityNotFoundError.js.map +1 -1
  266. package/browser/error/EntityPropertyNotFoundError.js.map +1 -1
  267. package/browser/error/FindRelationsNotFoundError.js.map +1 -1
  268. package/browser/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  269. package/browser/error/InitializedRelationError.js.map +1 -1
  270. package/browser/error/InsertValuesMissingError.js.map +1 -1
  271. package/browser/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  272. package/browser/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  273. package/browser/error/MetadataAlreadyExistsError.js.map +1 -1
  274. package/browser/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  275. package/browser/error/MissingDeleteDateColumnError.js.map +1 -1
  276. package/browser/error/MissingDriverError.js.map +1 -1
  277. package/browser/error/MissingJoinColumnError.js.map +1 -1
  278. package/browser/error/MissingJoinTableError.js.map +1 -1
  279. package/browser/error/MissingPrimaryColumnError.js.map +1 -1
  280. package/browser/error/MustBeEntityError.js.map +1 -1
  281. package/browser/error/NamingStrategyNotFoundError.js.map +1 -1
  282. package/browser/error/NestedSetMultipleRootError.js.map +1 -1
  283. package/browser/error/NoConnectionForRepositoryError.js.map +1 -1
  284. package/browser/error/NoConnectionOptionError.js.map +1 -1
  285. package/browser/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  286. package/browser/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  287. package/browser/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  288. package/browser/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  289. package/browser/error/OptimisticLockVersionMismatchError.js.map +1 -1
  290. package/browser/error/PersistedEntityNotFoundError.js.map +1 -1
  291. package/browser/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  292. package/browser/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  293. package/browser/error/QueryFailedError.js.map +1 -1
  294. package/browser/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  295. package/browser/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  296. package/browser/error/RepositoryNotTreeError.js.map +1 -1
  297. package/browser/error/ReturningStatementNotSupportedError.js.map +1 -1
  298. package/browser/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  299. package/browser/error/SubjectWithoutIdentifierError.js.map +1 -1
  300. package/browser/error/TransactionAlreadyStartedError.js.map +1 -1
  301. package/browser/error/TransactionNotStartedError.js.map +1 -1
  302. package/browser/error/TreeRepositoryNotSupportedError.js.map +1 -1
  303. package/browser/error/TypeORMError.js.map +1 -1
  304. package/browser/error/UpdateValuesMissingError.js.map +1 -1
  305. package/browser/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  306. package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  307. package/browser/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  308. package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  309. package/browser/error/index.js.map +1 -1
  310. package/browser/find-options/EqualOperator.js.map +1 -1
  311. package/browser/find-options/FindManyOptions.js.map +1 -1
  312. package/browser/find-options/FindOneOptions.js.map +1 -1
  313. package/browser/find-options/FindOperator.js.map +1 -1
  314. package/browser/find-options/FindOperatorType.js.map +1 -1
  315. package/browser/find-options/FindOptionsOrder.d.ts +0 -1
  316. package/browser/find-options/FindOptionsOrder.js.map +1 -1
  317. package/browser/find-options/FindOptionsRelations.d.ts +0 -1
  318. package/browser/find-options/FindOptionsRelations.js.map +1 -1
  319. package/browser/find-options/FindOptionsSelect.d.ts +0 -1
  320. package/browser/find-options/FindOptionsSelect.js.map +1 -1
  321. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  322. package/browser/find-options/FindOptionsWhere.d.ts +0 -1
  323. package/browser/find-options/FindOptionsWhere.js.map +1 -1
  324. package/browser/find-options/FindTreeOptions.js.map +1 -1
  325. package/browser/find-options/JoinOptions.js.map +1 -1
  326. package/browser/find-options/OrderByCondition.js.map +1 -1
  327. package/browser/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  328. package/browser/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
  329. package/browser/find-options/operator/And.js.map +1 -1
  330. package/browser/find-options/operator/Any.js.map +1 -1
  331. package/browser/find-options/operator/ArrayContainedBy.js.map +1 -1
  332. package/browser/find-options/operator/ArrayContains.js.map +1 -1
  333. package/browser/find-options/operator/ArrayOverlap.js.map +1 -1
  334. package/browser/find-options/operator/Between.js.map +1 -1
  335. package/browser/find-options/operator/Equal.js.map +1 -1
  336. package/browser/find-options/operator/ILike.js.map +1 -1
  337. package/browser/find-options/operator/In.js.map +1 -1
  338. package/browser/find-options/operator/IsNull.js.map +1 -1
  339. package/browser/find-options/operator/JsonContains.js.map +1 -1
  340. package/browser/find-options/operator/LessThan.js.map +1 -1
  341. package/browser/find-options/operator/LessThanOrEqual.js.map +1 -1
  342. package/browser/find-options/operator/Like.js.map +1 -1
  343. package/browser/find-options/operator/MoreThan.js.map +1 -1
  344. package/browser/find-options/operator/MoreThanOrEqual.js.map +1 -1
  345. package/browser/find-options/operator/Not.js.map +1 -1
  346. package/browser/find-options/operator/Or.js.map +1 -1
  347. package/browser/find-options/operator/Raw.js.map +1 -1
  348. package/browser/globals.js.map +1 -1
  349. package/browser/index.js.map +1 -1
  350. package/browser/logger/AbstractLogger.js.map +1 -1
  351. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  352. package/browser/logger/DebugLogger.js.map +1 -1
  353. package/browser/logger/FileLogger.js.map +1 -1
  354. package/browser/logger/Logger.js.map +1 -1
  355. package/browser/logger/LoggerFactory.js.map +1 -1
  356. package/browser/logger/LoggerOptions.js.map +1 -1
  357. package/browser/logger/SimpleConsoleLogger.js.map +1 -1
  358. package/browser/metadata/CheckMetadata.js.map +1 -1
  359. package/browser/metadata/ColumnMetadata.js.map +1 -1
  360. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  361. package/browser/metadata/EntityListenerMetadata.js.map +1 -1
  362. package/browser/metadata/EntityMetadata.js.map +1 -1
  363. package/browser/metadata/ExclusionMetadata.js.map +1 -1
  364. package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
  365. package/browser/metadata/IndexMetadata.js.map +1 -1
  366. package/browser/metadata/RelationCountMetadata.js.map +1 -1
  367. package/browser/metadata/RelationIdMetadata.js.map +1 -1
  368. package/browser/metadata/RelationMetadata.js.map +1 -1
  369. package/browser/metadata/UniqueMetadata.js.map +1 -1
  370. package/browser/metadata/types/ClosureTreeOptions.js.map +1 -1
  371. package/browser/metadata/types/DeferrableType.js.map +1 -1
  372. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  373. package/browser/metadata/types/OnDeleteType.js.map +1 -1
  374. package/browser/metadata/types/OnUpdateType.js.map +1 -1
  375. package/browser/metadata/types/PropertyTypeInFunction.js.map +1 -1
  376. package/browser/metadata/types/RelationTypeInFunction.js.map +1 -1
  377. package/browser/metadata/types/RelationTypes.js.map +1 -1
  378. package/browser/metadata/types/TableTypes.js.map +1 -1
  379. package/browser/metadata/types/TreeTypes.js.map +1 -1
  380. package/browser/metadata-args/CheckMetadataArgs.js.map +1 -1
  381. package/browser/metadata-args/ColumnMetadataArgs.js.map +1 -1
  382. package/browser/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
  383. package/browser/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
  384. package/browser/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
  385. package/browser/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
  386. package/browser/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
  387. package/browser/metadata-args/ExclusionMetadataArgs.js.map +1 -1
  388. package/browser/metadata-args/GeneratedMetadataArgs.js.map +1 -1
  389. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  390. package/browser/metadata-args/InheritanceMetadataArgs.js.map +1 -1
  391. package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  392. package/browser/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  393. package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
  394. package/browser/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
  395. package/browser/metadata-args/RelationCountMetadataArgs.js.map +1 -1
  396. package/browser/metadata-args/RelationIdMetadataArgs.js.map +1 -1
  397. package/browser/metadata-args/RelationMetadataArgs.js.map +1 -1
  398. package/browser/metadata-args/TableMetadataArgs.js.map +1 -1
  399. package/browser/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
  400. package/browser/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
  401. package/browser/metadata-args/TreeMetadataArgs.js.map +1 -1
  402. package/browser/metadata-args/UniqueMetadataArgs.js.map +1 -1
  403. package/browser/metadata-args/types/ColumnMode.js.map +1 -1
  404. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  405. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  406. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  407. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  408. package/browser/metadata-builder/MetadataUtils.js.map +1 -1
  409. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  410. package/browser/migration/Migration.js.map +1 -1
  411. package/browser/migration/MigrationExecutor.js.map +1 -1
  412. package/browser/migration/MigrationInterface.js.map +1 -1
  413. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  414. package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
  415. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  416. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  417. package/browser/persistence/Subject.js.map +1 -1
  418. package/browser/persistence/SubjectChangeMap.js.map +1 -1
  419. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  420. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  421. package/browser/persistence/SubjectExecutor.js +3 -3
  422. package/browser/persistence/SubjectExecutor.js.map +1 -1
  423. package/browser/persistence/{SubjectTopoligicalSorter.d.ts → SubjectTopologicalSorter.d.ts} +1 -1
  424. package/browser/persistence/{SubjectTopoligicalSorter.js → SubjectTopologicalSorter.js} +2 -2
  425. package/browser/persistence/SubjectTopologicalSorter.js.map +1 -0
  426. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  427. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  428. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  429. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  430. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  431. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  432. package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  433. package/browser/platform/BrowserConnectionOptionsReaderDummy.js.map +1 -1
  434. package/browser/platform/BrowserDirectoryExportedClassesLoader.js.map +1 -1
  435. package/browser/platform/BrowserDisabledDriversDummy.js.map +1 -1
  436. package/browser/platform/BrowserFileLoggerDummy.js.map +1 -1
  437. package/browser/platform/BrowserPlatformTools.d.ts +2 -6
  438. package/browser/platform/BrowserPlatformTools.js +2 -8
  439. package/browser/platform/BrowserPlatformTools.js.map +1 -1
  440. package/browser/platform/PlatformTools.d.ts +2 -10
  441. package/browser/platform/PlatformTools.js +28 -36
  442. package/browser/platform/PlatformTools.js.map +1 -1
  443. package/browser/query-builder/Alias.js.map +1 -1
  444. package/browser/query-builder/Brackets.js.map +1 -1
  445. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  446. package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -1
  447. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  448. package/browser/query-builder/JoinAttribute.js.map +1 -1
  449. package/browser/query-builder/JoinOptions.js.map +1 -1
  450. package/browser/query-builder/NotBrackets.js.map +1 -1
  451. package/browser/query-builder/QueryBuilder.js +2 -3
  452. package/browser/query-builder/QueryBuilder.js.map +1 -1
  453. package/browser/query-builder/QueryBuilderCte.js.map +1 -1
  454. package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
  455. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  456. package/browser/query-builder/QueryPartialEntity.js.map +1 -1
  457. package/browser/query-builder/RelationIdLoader.js.map +1 -1
  458. package/browser/query-builder/RelationLoader.js.map +1 -1
  459. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  460. package/browser/query-builder/RelationRemover.js.map +1 -1
  461. package/browser/query-builder/RelationUpdater.js.map +1 -1
  462. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  463. package/browser/query-builder/SelectQuery.js.map +1 -1
  464. package/browser/query-builder/SelectQueryBuilder.d.ts +0 -1
  465. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  466. package/browser/query-builder/SelectQueryBuilderOption.js.map +1 -1
  467. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  468. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  469. package/browser/query-builder/WhereClause.js.map +1 -1
  470. package/browser/query-builder/WhereExpressionBuilder.js.map +1 -1
  471. package/browser/query-builder/index.js.map +1 -1
  472. package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  473. package/browser/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
  474. package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  475. package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  476. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  477. package/browser/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
  478. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  479. package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  480. package/browser/query-builder/result/DeleteResult.js.map +1 -1
  481. package/browser/query-builder/result/InsertResult.js.map +1 -1
  482. package/browser/query-builder/result/UpdateResult.js.map +1 -1
  483. package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  484. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  485. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  486. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +9 -0
  487. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +95 -61
  488. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  489. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  490. package/browser/query-runner/QueryLock.js.map +1 -1
  491. package/browser/query-runner/QueryResult.js.map +1 -1
  492. package/browser/query-runner/QueryRunner.d.ts +0 -1
  493. package/browser/query-runner/QueryRunner.js.map +1 -1
  494. package/browser/repository/AbstractRepository.js.map +1 -1
  495. package/browser/repository/BaseEntity.js.map +1 -1
  496. package/browser/repository/EntityId.js.map +1 -1
  497. package/browser/repository/FindTreesOptions.js.map +1 -1
  498. package/browser/repository/MongoRepository.js.map +1 -1
  499. package/browser/repository/RemoveOptions.js.map +1 -1
  500. package/browser/repository/Repository.d.ts +2 -0
  501. package/browser/repository/Repository.js +2 -0
  502. package/browser/repository/Repository.js.map +1 -1
  503. package/browser/repository/SaveOptions.js.map +1 -1
  504. package/browser/repository/TreeRepository.js.map +1 -1
  505. package/browser/repository/UpsertOptions.js.map +1 -1
  506. package/browser/schema-builder/MongoSchemaBuilder.js.map +1 -1
  507. package/browser/schema-builder/RdbmsSchemaBuilder.js +1 -1
  508. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  509. package/browser/schema-builder/SchemaBuilder.js.map +1 -1
  510. package/browser/schema-builder/options/TableCheckOptions.js.map +1 -1
  511. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  512. package/browser/schema-builder/options/TableExclusionOptions.js.map +1 -1
  513. package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  514. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  515. package/browser/schema-builder/options/TableOptions.js.map +1 -1
  516. package/browser/schema-builder/options/TableUniqueOptions.js.map +1 -1
  517. package/browser/schema-builder/options/ViewOptions.js.map +1 -1
  518. package/browser/schema-builder/table/Table.js.map +1 -1
  519. package/browser/schema-builder/table/TableCheck.js.map +1 -1
  520. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  521. package/browser/schema-builder/table/TableExclusion.js.map +1 -1
  522. package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
  523. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  524. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  525. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  526. package/browser/schema-builder/util/ViewUtils.js.map +1 -1
  527. package/browser/schema-builder/view/View.js.map +1 -1
  528. package/browser/subscriber/Broadcaster.js.map +1 -1
  529. package/browser/subscriber/BroadcasterResult.js.map +1 -1
  530. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  531. package/browser/subscriber/event/InsertEvent.js.map +1 -1
  532. package/browser/subscriber/event/LoadEvent.js.map +1 -1
  533. package/browser/subscriber/event/QueryEvent.js.map +1 -1
  534. package/browser/subscriber/event/RecoverEvent.js.map +1 -1
  535. package/browser/subscriber/event/RemoveEvent.js.map +1 -1
  536. package/browser/subscriber/event/SoftRemoveEvent.js.map +1 -1
  537. package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -1
  538. package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -1
  539. package/browser/subscriber/event/TransactionStartEvent.js.map +1 -1
  540. package/browser/subscriber/event/UpdateEvent.js.map +1 -1
  541. package/browser/util/ApplyValueTransformers.js.map +1 -1
  542. package/browser/util/DateUtils.js.map +1 -1
  543. package/browser/util/DepGraph.js.map +1 -1
  544. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  545. package/browser/util/ImportUtils.js +22 -34
  546. package/browser/util/ImportUtils.js.map +1 -1
  547. package/browser/util/InstanceChecker.js.map +1 -1
  548. package/browser/util/ObjectUtils.js.map +1 -1
  549. package/browser/util/OrmUtils.js.map +1 -1
  550. package/browser/util/PathUtils.js.map +1 -1
  551. package/browser/util/RandomGenerator.js.map +1 -1
  552. package/browser/util/StringUtils.js.map +1 -1
  553. package/browser/util/TreeRepositoryUtils.js.map +1 -1
  554. package/browser/util/VersionUtils.js.map +1 -1
  555. package/browser/util/escapeRegExp.js.map +1 -1
  556. package/cache/DbQueryResultCache.js.map +1 -1
  557. package/cache/QueryResultCache.d.ts +4 -2
  558. package/cache/QueryResultCache.js.map +1 -1
  559. package/cache/QueryResultCacheFactory.js.map +1 -1
  560. package/cache/QueryResultCacheOptions.js.map +1 -1
  561. package/cache/RedisQueryResultCache.js.map +1 -1
  562. package/cli-ts-node-commonjs.js.map +1 -1
  563. package/cli-ts-node-esm.js.map +1 -1
  564. package/cli.js.map +1 -1
  565. package/commands/CacheClearCommand.d.ts +1 -1
  566. package/commands/CacheClearCommand.js +3 -3
  567. package/commands/CacheClearCommand.js.map +1 -1
  568. package/commands/CommandUtils.d.ts +1 -1
  569. package/commands/CommandUtils.js +18 -16
  570. package/commands/CommandUtils.js.map +1 -1
  571. package/commands/EntityCreateCommand.d.ts +1 -1
  572. package/commands/EntityCreateCommand.js +13 -13
  573. package/commands/EntityCreateCommand.js.map +1 -1
  574. package/commands/InitCommand.d.ts +1 -1
  575. package/commands/InitCommand.js +311 -311
  576. package/commands/InitCommand.js.map +1 -1
  577. package/commands/MigrationCreateCommand.d.ts +1 -1
  578. package/commands/MigrationCreateCommand.js +27 -27
  579. package/commands/MigrationCreateCommand.js.map +1 -1
  580. package/commands/MigrationGenerateCommand.d.ts +1 -1
  581. package/commands/MigrationGenerateCommand.js +48 -48
  582. package/commands/MigrationGenerateCommand.js.map +1 -1
  583. package/commands/MigrationRevertCommand.js.map +1 -1
  584. package/commands/MigrationRunCommand.js.map +1 -1
  585. package/commands/MigrationShowCommand.js.map +1 -1
  586. package/commands/QueryCommand.d.ts +1 -1
  587. package/commands/QueryCommand.js +10 -7
  588. package/commands/QueryCommand.js.map +1 -1
  589. package/commands/SchemaDropCommand.d.ts +1 -1
  590. package/commands/SchemaDropCommand.js +3 -3
  591. package/commands/SchemaDropCommand.js.map +1 -1
  592. package/commands/SchemaLogCommand.d.ts +1 -1
  593. package/commands/SchemaLogCommand.js +12 -18
  594. package/commands/SchemaLogCommand.js.map +1 -1
  595. package/commands/SchemaSyncCommand.d.ts +1 -1
  596. package/commands/SchemaSyncCommand.js +3 -3
  597. package/commands/SchemaSyncCommand.js.map +1 -1
  598. package/commands/SubscriberCreateCommand.d.ts +1 -1
  599. package/commands/SubscriberCreateCommand.js +11 -11
  600. package/commands/SubscriberCreateCommand.js.map +1 -1
  601. package/commands/VersionCommand.js.map +1 -1
  602. package/common/DeepPartial.js.map +1 -1
  603. package/common/EntityTarget.js.map +1 -1
  604. package/common/MixedList.js.map +1 -1
  605. package/common/NonNever.js.map +1 -1
  606. package/common/ObjectLiteral.js.map +1 -1
  607. package/common/ObjectType.js.map +1 -1
  608. package/common/PickKeysByType.js.map +1 -1
  609. package/common/RelationType.js.map +1 -1
  610. package/connection/BaseConnectionOptions.js.map +1 -1
  611. package/connection/Connection.js.map +1 -1
  612. package/connection/ConnectionManager.js.map +1 -1
  613. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  614. package/connection/ConnectionOptions.js.map +1 -1
  615. package/connection/ConnectionOptionsReader.d.ts +4 -4
  616. package/connection/ConnectionOptionsReader.js.map +1 -1
  617. package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  618. package/container.js +2 -3
  619. package/container.js.map +1 -1
  620. package/data-source/BaseDataSourceOptions.js.map +1 -1
  621. package/data-source/DataSource.d.ts +2 -0
  622. package/data-source/DataSource.js +2 -0
  623. package/data-source/DataSource.js.map +1 -1
  624. package/data-source/DataSourceOptions.js.map +1 -1
  625. package/data-source/index.js.map +1 -1
  626. package/decorator/Check.js +1 -2
  627. package/decorator/Check.js.map +1 -1
  628. package/decorator/EntityRepository.js +1 -2
  629. package/decorator/EntityRepository.js.map +1 -1
  630. package/decorator/Exclusion.js +1 -2
  631. package/decorator/Exclusion.js.map +1 -1
  632. package/decorator/Generated.js +1 -2
  633. package/decorator/Generated.js.map +1 -1
  634. package/decorator/Index.js +1 -2
  635. package/decorator/Index.js.map +1 -1
  636. package/decorator/Unique.js +1 -2
  637. package/decorator/Unique.js.map +1 -1
  638. package/decorator/columns/Column.js +1 -2
  639. package/decorator/columns/Column.js.map +1 -1
  640. package/decorator/columns/CreateDateColumn.js +1 -2
  641. package/decorator/columns/CreateDateColumn.js.map +1 -1
  642. package/decorator/columns/DeleteDateColumn.js +1 -2
  643. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  644. package/decorator/columns/ObjectIdColumn.js +1 -2
  645. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  646. package/decorator/columns/PrimaryColumn.js +1 -2
  647. package/decorator/columns/PrimaryColumn.js.map +1 -1
  648. package/decorator/columns/PrimaryGeneratedColumn.js +1 -2
  649. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  650. package/decorator/columns/UpdateDateColumn.js +1 -2
  651. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  652. package/decorator/columns/VersionColumn.js +1 -2
  653. package/decorator/columns/VersionColumn.js.map +1 -1
  654. package/decorator/columns/ViewColumn.js +1 -2
  655. package/decorator/columns/ViewColumn.js.map +1 -1
  656. package/decorator/columns/VirtualColumn.js +1 -2
  657. package/decorator/columns/VirtualColumn.js.map +1 -1
  658. package/decorator/entity/ChildEntity.js +1 -2
  659. package/decorator/entity/ChildEntity.js.map +1 -1
  660. package/decorator/entity/Entity.js +1 -2
  661. package/decorator/entity/Entity.js.map +1 -1
  662. package/decorator/entity/TableInheritance.js +1 -2
  663. package/decorator/entity/TableInheritance.js.map +1 -1
  664. package/decorator/entity-view/ViewEntity.js +1 -2
  665. package/decorator/entity-view/ViewEntity.js.map +1 -1
  666. package/decorator/listeners/AfterInsert.js +1 -2
  667. package/decorator/listeners/AfterInsert.js.map +1 -1
  668. package/decorator/listeners/AfterLoad.js +1 -2
  669. package/decorator/listeners/AfterLoad.js.map +1 -1
  670. package/decorator/listeners/AfterRecover.js +1 -2
  671. package/decorator/listeners/AfterRecover.js.map +1 -1
  672. package/decorator/listeners/AfterRemove.js +1 -2
  673. package/decorator/listeners/AfterRemove.js.map +1 -1
  674. package/decorator/listeners/AfterSoftRemove.js +1 -2
  675. package/decorator/listeners/AfterSoftRemove.js.map +1 -1
  676. package/decorator/listeners/AfterUpdate.js +1 -2
  677. package/decorator/listeners/AfterUpdate.js.map +1 -1
  678. package/decorator/listeners/BeforeInsert.js +1 -2
  679. package/decorator/listeners/BeforeInsert.js.map +1 -1
  680. package/decorator/listeners/BeforeRecover.js +1 -2
  681. package/decorator/listeners/BeforeRecover.js.map +1 -1
  682. package/decorator/listeners/BeforeRemove.js +1 -2
  683. package/decorator/listeners/BeforeRemove.js.map +1 -1
  684. package/decorator/listeners/BeforeSoftRemove.js +1 -2
  685. package/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  686. package/decorator/listeners/BeforeUpdate.js +1 -2
  687. package/decorator/listeners/BeforeUpdate.js.map +1 -1
  688. package/decorator/listeners/EventSubscriber.js +1 -2
  689. package/decorator/listeners/EventSubscriber.js.map +1 -1
  690. package/decorator/options/ColumnCommonOptions.js.map +1 -1
  691. package/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
  692. package/decorator/options/ColumnEnumOptions.js.map +1 -1
  693. package/decorator/options/ColumnHstoreOptions.js.map +1 -1
  694. package/decorator/options/ColumnNumericOptions.js.map +1 -1
  695. package/decorator/options/ColumnOptions.js.map +1 -1
  696. package/decorator/options/ColumnWithLengthOptions.js.map +1 -1
  697. package/decorator/options/ColumnWithWidthOptions.js.map +1 -1
  698. package/decorator/options/EntityOptions.js.map +1 -1
  699. package/decorator/options/IndexOptions.js.map +1 -1
  700. package/decorator/options/JoinColumnOptions.js.map +1 -1
  701. package/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  702. package/decorator/options/JoinTableOptions.js.map +1 -1
  703. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  704. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  705. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  706. package/decorator/options/RelationOptions.js.map +1 -1
  707. package/decorator/options/SpatialColumnOptions.js.map +1 -1
  708. package/decorator/options/TransactionOptions.js.map +1 -1
  709. package/decorator/options/UniqueOptions.js.map +1 -1
  710. package/decorator/options/ValueTransformer.js.map +1 -1
  711. package/decorator/options/ViewColumnOptions.js.map +1 -1
  712. package/decorator/options/ViewEntityOptions.js.map +1 -1
  713. package/decorator/options/VirtualColumnOptions.js.map +1 -1
  714. package/decorator/relations/JoinColumn.js +1 -2
  715. package/decorator/relations/JoinColumn.js.map +1 -1
  716. package/decorator/relations/JoinTable.js +1 -2
  717. package/decorator/relations/JoinTable.js.map +1 -1
  718. package/decorator/relations/ManyToMany.js +1 -2
  719. package/decorator/relations/ManyToMany.js.map +1 -1
  720. package/decorator/relations/ManyToOne.js +1 -2
  721. package/decorator/relations/ManyToOne.js.map +1 -1
  722. package/decorator/relations/OneToMany.js +1 -2
  723. package/decorator/relations/OneToMany.js.map +1 -1
  724. package/decorator/relations/OneToOne.d.ts +4 -4
  725. package/decorator/relations/OneToOne.js +3 -4
  726. package/decorator/relations/OneToOne.js.map +1 -1
  727. package/decorator/relations/RelationCount.js +1 -2
  728. package/decorator/relations/RelationCount.js.map +1 -1
  729. package/decorator/relations/RelationId.js +1 -2
  730. package/decorator/relations/RelationId.js.map +1 -1
  731. package/decorator/tree/Tree.js +1 -2
  732. package/decorator/tree/Tree.js.map +1 -1
  733. package/decorator/tree/TreeChildren.js +1 -2
  734. package/decorator/tree/TreeChildren.js.map +1 -1
  735. package/decorator/tree/TreeLevelColumn.js +1 -2
  736. package/decorator/tree/TreeLevelColumn.js.map +1 -1
  737. package/decorator/tree/TreeParent.js +1 -2
  738. package/decorator/tree/TreeParent.js.map +1 -1
  739. package/driver/Driver.js.map +1 -1
  740. package/driver/DriverFactory.js.map +1 -1
  741. package/driver/DriverUtils.js.map +1 -1
  742. package/driver/Query.js.map +1 -1
  743. package/driver/SqlInMemory.js.map +1 -1
  744. package/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
  745. package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +1 -1
  746. package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  747. package/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  748. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  749. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +0 -1
  750. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  751. package/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
  752. package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  753. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  754. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  755. package/driver/better-sqlite3/BetterSqlite3Driver.js +2 -2
  756. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  757. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +4 -0
  758. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  759. package/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
  760. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  761. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  762. package/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +1 -2
  763. package/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  764. package/driver/cockroachdb/CockroachConnectionOptions.d.ts +1 -1
  765. package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  766. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  767. package/driver/cockroachdb/CockroachQueryRunner.d.ts +0 -1
  768. package/driver/cockroachdb/CockroachQueryRunner.js +5 -3
  769. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  770. package/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  771. package/driver/cordova/CordovaDriver.js.map +1 -1
  772. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  773. package/driver/expo/ExpoConnectionOptions.js.map +1 -1
  774. package/driver/expo/ExpoDriver.js.map +1 -1
  775. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  776. package/driver/mongodb/MongoConnectionOptions.d.ts +1 -2
  777. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  778. package/driver/mongodb/MongoDriver.js.map +1 -1
  779. package/driver/mongodb/MongoQueryRunner.d.ts +0 -1
  780. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  781. package/driver/mongodb/bson.typings.js.map +1 -1
  782. package/driver/mongodb/typings.d.ts +0 -8
  783. package/driver/mongodb/typings.js +0 -1
  784. package/driver/mongodb/typings.js.map +1 -1
  785. package/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +1 -1
  786. package/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  787. package/driver/mysql/MysqlConnectionOptions.d.ts +1 -1
  788. package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  789. package/driver/mysql/MysqlDriver.js.map +1 -1
  790. package/driver/mysql/MysqlQueryRunner.d.ts +0 -1
  791. package/driver/mysql/MysqlQueryRunner.js +71 -71
  792. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  793. package/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
  794. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  795. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  796. package/driver/oracle/OracleConnectionCredentialsOptions.d.ts +1 -1
  797. package/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
  798. package/driver/oracle/OracleConnectionOptions.d.ts +1 -1
  799. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  800. package/driver/oracle/OracleDriver.js.map +1 -1
  801. package/driver/oracle/OracleQueryRunner.d.ts +0 -1
  802. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  803. package/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -2
  804. package/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  805. package/driver/postgres/PostgresConnectionOptions.d.ts +1 -1
  806. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  807. package/driver/postgres/PostgresDriver.js.map +1 -1
  808. package/driver/postgres/PostgresQueryRunner.d.ts +0 -1
  809. package/driver/postgres/PostgresQueryRunner.js +5 -1
  810. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  811. package/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  812. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  813. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  814. package/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
  815. package/driver/sap/SapConnectionOptions.js.map +1 -1
  816. package/driver/sap/SapDriver.js.map +1 -1
  817. package/driver/sap/SapQueryRunner.d.ts +0 -1
  818. package/driver/sap/SapQueryRunner.js.map +1 -1
  819. package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +1 -1
  820. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  821. package/driver/spanner/SpannerConnectionOptions.d.ts +1 -1
  822. package/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  823. package/driver/spanner/SpannerDriver.js.map +1 -1
  824. package/driver/spanner/SpannerQueryRunner.d.ts +0 -1
  825. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  826. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  827. package/driver/sqlite/SqliteDriver.js +2 -2
  828. package/driver/sqlite/SqliteDriver.js.map +1 -1
  829. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  830. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  831. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +0 -1
  832. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  833. package/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  834. package/driver/sqljs/SqljsDriver.js.map +1 -1
  835. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  836. package/driver/sqlserver/MssqlParameter.js.map +1 -1
  837. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +1 -1
  838. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  839. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +1 -1
  840. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  841. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  842. package/driver/sqlserver/SqlServerQueryRunner.d.ts +0 -1
  843. package/driver/sqlserver/SqlServerQueryRunner.js +26 -26
  844. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  845. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  846. package/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -1
  847. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  848. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  849. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  850. package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
  851. package/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
  852. package/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
  853. package/driver/types/ColumnTypes.js.map +1 -1
  854. package/driver/types/CteCapabilities.js.map +1 -1
  855. package/driver/types/DataTypeDefaults.js.map +1 -1
  856. package/driver/types/DatabaseType.js.map +1 -1
  857. package/driver/types/GeoJsonTypes.js.map +1 -1
  858. package/driver/types/IsolationLevel.js.map +1 -1
  859. package/driver/types/MappedColumnTypes.js.map +1 -1
  860. package/driver/types/MetadataTableType.js.map +1 -1
  861. package/driver/types/ReplicationMode.js.map +1 -1
  862. package/driver/types/UpsertType.js.map +1 -1
  863. package/entity-manager/EntityManager.d.ts +2 -0
  864. package/entity-manager/EntityManager.js +4 -2
  865. package/entity-manager/EntityManager.js.map +1 -1
  866. package/entity-manager/EntityManagerFactory.js.map +1 -1
  867. package/entity-manager/MongoEntityManager.js.map +1 -1
  868. package/entity-manager/SqljsEntityManager.js.map +1 -1
  869. package/entity-schema/EntitySchema.js.map +1 -1
  870. package/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
  871. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  872. package/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  873. package/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  874. package/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
  875. package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  876. package/entity-schema/EntitySchemaInheritanceOptions.js.map +1 -1
  877. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  878. package/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
  879. package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  880. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  881. package/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  882. package/error/AlreadyHasActiveConnectionError.js.map +1 -1
  883. package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  884. package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  885. package/error/CannotCreateEntityIdMapError.js.map +1 -1
  886. package/error/CannotDetermineEntityError.js.map +1 -1
  887. package/error/CannotExecuteNotConnectedError.js.map +1 -1
  888. package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  889. package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  890. package/error/CircularRelationsError.js.map +1 -1
  891. package/error/ColumnTypeUndefinedError.js.map +1 -1
  892. package/error/ConnectionIsNotSetError.js.map +1 -1
  893. package/error/ConnectionNotFoundError.js.map +1 -1
  894. package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  895. package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  896. package/error/CustomRepositoryNotFoundError.js.map +1 -1
  897. package/error/DataTypeNotSupportedError.js.map +1 -1
  898. package/error/DriverOptionNotSetError.js.map +1 -1
  899. package/error/DriverPackageNotInstalledError.js.map +1 -1
  900. package/error/EntityMetadataNotFoundError.js.map +1 -1
  901. package/error/EntityNotFoundError.js.map +1 -1
  902. package/error/EntityPropertyNotFoundError.js.map +1 -1
  903. package/error/FindRelationsNotFoundError.js.map +1 -1
  904. package/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  905. package/error/InitializedRelationError.js.map +1 -1
  906. package/error/InsertValuesMissingError.js.map +1 -1
  907. package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  908. package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  909. package/error/MetadataAlreadyExistsError.js.map +1 -1
  910. package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  911. package/error/MissingDeleteDateColumnError.js.map +1 -1
  912. package/error/MissingDriverError.js.map +1 -1
  913. package/error/MissingJoinColumnError.js.map +1 -1
  914. package/error/MissingJoinTableError.js.map +1 -1
  915. package/error/MissingPrimaryColumnError.js.map +1 -1
  916. package/error/MustBeEntityError.js.map +1 -1
  917. package/error/NamingStrategyNotFoundError.js.map +1 -1
  918. package/error/NestedSetMultipleRootError.js.map +1 -1
  919. package/error/NoConnectionForRepositoryError.js.map +1 -1
  920. package/error/NoConnectionOptionError.js.map +1 -1
  921. package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  922. package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  923. package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  924. package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  925. package/error/OptimisticLockVersionMismatchError.js.map +1 -1
  926. package/error/PersistedEntityNotFoundError.js.map +1 -1
  927. package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  928. package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  929. package/error/QueryFailedError.js.map +1 -1
  930. package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  931. package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  932. package/error/RepositoryNotTreeError.js.map +1 -1
  933. package/error/ReturningStatementNotSupportedError.js.map +1 -1
  934. package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  935. package/error/SubjectWithoutIdentifierError.js.map +1 -1
  936. package/error/TransactionAlreadyStartedError.js.map +1 -1
  937. package/error/TransactionNotStartedError.js.map +1 -1
  938. package/error/TreeRepositoryNotSupportedError.js.map +1 -1
  939. package/error/TypeORMError.js.map +1 -1
  940. package/error/UpdateValuesMissingError.js.map +1 -1
  941. package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  942. package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  943. package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  944. package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  945. package/error/index.js.map +1 -1
  946. package/find-options/EqualOperator.js.map +1 -1
  947. package/find-options/FindManyOptions.js.map +1 -1
  948. package/find-options/FindOneOptions.js.map +1 -1
  949. package/find-options/FindOperator.js.map +1 -1
  950. package/find-options/FindOperatorType.js.map +1 -1
  951. package/find-options/FindOptionsOrder.d.ts +0 -1
  952. package/find-options/FindOptionsOrder.js.map +1 -1
  953. package/find-options/FindOptionsRelations.d.ts +0 -1
  954. package/find-options/FindOptionsRelations.js.map +1 -1
  955. package/find-options/FindOptionsSelect.d.ts +0 -1
  956. package/find-options/FindOptionsSelect.js.map +1 -1
  957. package/find-options/FindOptionsUtils.js.map +1 -1
  958. package/find-options/FindOptionsWhere.d.ts +0 -1
  959. package/find-options/FindOptionsWhere.js.map +1 -1
  960. package/find-options/FindTreeOptions.js.map +1 -1
  961. package/find-options/JoinOptions.js.map +1 -1
  962. package/find-options/OrderByCondition.js.map +1 -1
  963. package/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  964. package/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
  965. package/find-options/operator/And.js +1 -2
  966. package/find-options/operator/And.js.map +1 -1
  967. package/find-options/operator/Any.js +1 -2
  968. package/find-options/operator/Any.js.map +1 -1
  969. package/find-options/operator/ArrayContainedBy.js +1 -2
  970. package/find-options/operator/ArrayContainedBy.js.map +1 -1
  971. package/find-options/operator/ArrayContains.js +1 -2
  972. package/find-options/operator/ArrayContains.js.map +1 -1
  973. package/find-options/operator/ArrayOverlap.js +1 -2
  974. package/find-options/operator/ArrayOverlap.js.map +1 -1
  975. package/find-options/operator/Between.js +1 -2
  976. package/find-options/operator/Between.js.map +1 -1
  977. package/find-options/operator/Equal.js +1 -2
  978. package/find-options/operator/Equal.js.map +1 -1
  979. package/find-options/operator/ILike.js +1 -2
  980. package/find-options/operator/ILike.js.map +1 -1
  981. package/find-options/operator/In.js +1 -2
  982. package/find-options/operator/In.js.map +1 -1
  983. package/find-options/operator/IsNull.js +1 -2
  984. package/find-options/operator/IsNull.js.map +1 -1
  985. package/find-options/operator/JsonContains.js +1 -2
  986. package/find-options/operator/JsonContains.js.map +1 -1
  987. package/find-options/operator/LessThan.js +1 -2
  988. package/find-options/operator/LessThan.js.map +1 -1
  989. package/find-options/operator/LessThanOrEqual.js +1 -2
  990. package/find-options/operator/LessThanOrEqual.js.map +1 -1
  991. package/find-options/operator/Like.js +1 -2
  992. package/find-options/operator/Like.js.map +1 -1
  993. package/find-options/operator/MoreThan.js +1 -2
  994. package/find-options/operator/MoreThan.js.map +1 -1
  995. package/find-options/operator/MoreThanOrEqual.js +1 -2
  996. package/find-options/operator/MoreThanOrEqual.js.map +1 -1
  997. package/find-options/operator/Not.js +1 -2
  998. package/find-options/operator/Not.js.map +1 -1
  999. package/find-options/operator/Or.js +1 -2
  1000. package/find-options/operator/Or.js.map +1 -1
  1001. package/find-options/operator/Raw.js +1 -2
  1002. package/find-options/operator/Raw.js.map +1 -1
  1003. package/globals.js +14 -15
  1004. package/globals.js.map +1 -1
  1005. package/index.js.map +1 -1
  1006. package/logger/AbstractLogger.js.map +1 -1
  1007. package/logger/AdvancedConsoleLogger.js.map +1 -1
  1008. package/logger/DebugLogger.js.map +1 -1
  1009. package/logger/FileLogger.js.map +1 -1
  1010. package/logger/Logger.js.map +1 -1
  1011. package/logger/LoggerFactory.js.map +1 -1
  1012. package/logger/LoggerOptions.js.map +1 -1
  1013. package/logger/SimpleConsoleLogger.js.map +1 -1
  1014. package/metadata/CheckMetadata.js.map +1 -1
  1015. package/metadata/ColumnMetadata.js.map +1 -1
  1016. package/metadata/EmbeddedMetadata.js.map +1 -1
  1017. package/metadata/EntityListenerMetadata.js.map +1 -1
  1018. package/metadata/EntityMetadata.js.map +1 -1
  1019. package/metadata/ExclusionMetadata.js.map +1 -1
  1020. package/metadata/ForeignKeyMetadata.js.map +1 -1
  1021. package/metadata/IndexMetadata.js.map +1 -1
  1022. package/metadata/RelationCountMetadata.js.map +1 -1
  1023. package/metadata/RelationIdMetadata.js.map +1 -1
  1024. package/metadata/RelationMetadata.js.map +1 -1
  1025. package/metadata/UniqueMetadata.js.map +1 -1
  1026. package/metadata/types/ClosureTreeOptions.js.map +1 -1
  1027. package/metadata/types/DeferrableType.js.map +1 -1
  1028. package/metadata/types/EventListenerTypes.js.map +1 -1
  1029. package/metadata/types/OnDeleteType.js.map +1 -1
  1030. package/metadata/types/OnUpdateType.js.map +1 -1
  1031. package/metadata/types/PropertyTypeInFunction.js.map +1 -1
  1032. package/metadata/types/RelationTypeInFunction.js.map +1 -1
  1033. package/metadata/types/RelationTypes.js.map +1 -1
  1034. package/metadata/types/TableTypes.js.map +1 -1
  1035. package/metadata/types/TreeTypes.js.map +1 -1
  1036. package/metadata-args/CheckMetadataArgs.js.map +1 -1
  1037. package/metadata-args/ColumnMetadataArgs.js.map +1 -1
  1038. package/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
  1039. package/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
  1040. package/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
  1041. package/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
  1042. package/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
  1043. package/metadata-args/ExclusionMetadataArgs.js.map +1 -1
  1044. package/metadata-args/GeneratedMetadataArgs.js.map +1 -1
  1045. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  1046. package/metadata-args/InheritanceMetadataArgs.js.map +1 -1
  1047. package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  1048. package/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  1049. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  1050. package/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
  1051. package/metadata-args/RelationCountMetadataArgs.js.map +1 -1
  1052. package/metadata-args/RelationIdMetadataArgs.js.map +1 -1
  1053. package/metadata-args/RelationMetadataArgs.js.map +1 -1
  1054. package/metadata-args/TableMetadataArgs.js.map +1 -1
  1055. package/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
  1056. package/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
  1057. package/metadata-args/TreeMetadataArgs.js.map +1 -1
  1058. package/metadata-args/UniqueMetadataArgs.js.map +1 -1
  1059. package/metadata-args/types/ColumnMode.js.map +1 -1
  1060. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  1061. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  1062. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  1063. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  1064. package/metadata-builder/MetadataUtils.js.map +1 -1
  1065. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  1066. package/migration/Migration.js.map +1 -1
  1067. package/migration/MigrationExecutor.js.map +1 -1
  1068. package/migration/MigrationInterface.js.map +1 -1
  1069. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  1070. package/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
  1071. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  1072. package/package.json +260 -1
  1073. package/persistence/EntityPersistExecutor.js.map +1 -1
  1074. package/persistence/Subject.js.map +1 -1
  1075. package/persistence/SubjectChangeMap.js.map +1 -1
  1076. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  1077. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  1078. package/persistence/SubjectExecutor.js +3 -3
  1079. package/persistence/SubjectExecutor.js.map +1 -1
  1080. package/persistence/{SubjectTopoligicalSorter.d.ts → SubjectTopologicalSorter.d.ts} +1 -1
  1081. package/persistence/{SubjectTopoligicalSorter.js → SubjectTopologicalSorter.js} +4 -4
  1082. package/persistence/SubjectTopologicalSorter.js.map +1 -0
  1083. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  1084. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  1085. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  1086. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  1087. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  1088. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  1089. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  1090. package/platform/PlatformTools.d.ts +2 -10
  1091. package/platform/PlatformTools.js +37 -45
  1092. package/platform/PlatformTools.js.map +1 -1
  1093. package/query-builder/Alias.js.map +1 -1
  1094. package/query-builder/Brackets.js.map +1 -1
  1095. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  1096. package/query-builder/InsertOrUpdateOptions.js.map +1 -1
  1097. package/query-builder/InsertQueryBuilder.js.map +1 -1
  1098. package/query-builder/JoinAttribute.js.map +1 -1
  1099. package/query-builder/JoinOptions.js.map +1 -1
  1100. package/query-builder/NotBrackets.js.map +1 -1
  1101. package/query-builder/QueryBuilder.js +2 -3
  1102. package/query-builder/QueryBuilder.js.map +1 -1
  1103. package/query-builder/QueryBuilderCte.js.map +1 -1
  1104. package/query-builder/QueryBuilderUtils.js.map +1 -1
  1105. package/query-builder/QueryExpressionMap.js.map +1 -1
  1106. package/query-builder/QueryPartialEntity.js.map +1 -1
  1107. package/query-builder/RelationIdLoader.js.map +1 -1
  1108. package/query-builder/RelationLoader.js.map +1 -1
  1109. package/query-builder/RelationQueryBuilder.js.map +1 -1
  1110. package/query-builder/RelationRemover.js.map +1 -1
  1111. package/query-builder/RelationUpdater.js.map +1 -1
  1112. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  1113. package/query-builder/SelectQuery.js.map +1 -1
  1114. package/query-builder/SelectQueryBuilder.d.ts +0 -1
  1115. package/query-builder/SelectQueryBuilder.js.map +1 -1
  1116. package/query-builder/SelectQueryBuilderOption.js.map +1 -1
  1117. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  1118. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  1119. package/query-builder/WhereClause.js.map +1 -1
  1120. package/query-builder/WhereExpressionBuilder.js.map +1 -1
  1121. package/query-builder/index.js +1 -2
  1122. package/query-builder/index.js.map +1 -1
  1123. package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  1124. package/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
  1125. package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  1126. package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  1127. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  1128. package/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
  1129. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  1130. package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  1131. package/query-builder/result/DeleteResult.js.map +1 -1
  1132. package/query-builder/result/InsertResult.js.map +1 -1
  1133. package/query-builder/result/UpdateResult.js.map +1 -1
  1134. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  1135. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  1136. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  1137. package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +9 -0
  1138. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +95 -61
  1139. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  1140. package/query-runner/BaseQueryRunner.js.map +1 -1
  1141. package/query-runner/QueryLock.js.map +1 -1
  1142. package/query-runner/QueryResult.js.map +1 -1
  1143. package/query-runner/QueryRunner.d.ts +0 -1
  1144. package/query-runner/QueryRunner.js.map +1 -1
  1145. package/repository/AbstractRepository.js.map +1 -1
  1146. package/repository/BaseEntity.js.map +1 -1
  1147. package/repository/EntityId.js.map +1 -1
  1148. package/repository/FindTreesOptions.js.map +1 -1
  1149. package/repository/MongoRepository.js.map +1 -1
  1150. package/repository/RemoveOptions.js.map +1 -1
  1151. package/repository/Repository.d.ts +2 -0
  1152. package/repository/Repository.js +2 -0
  1153. package/repository/Repository.js.map +1 -1
  1154. package/repository/SaveOptions.js.map +1 -1
  1155. package/repository/TreeRepository.js.map +1 -1
  1156. package/repository/UpsertOptions.js.map +1 -1
  1157. package/schema-builder/MongoSchemaBuilder.js.map +1 -1
  1158. package/schema-builder/RdbmsSchemaBuilder.js +1 -1
  1159. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  1160. package/schema-builder/SchemaBuilder.js.map +1 -1
  1161. package/schema-builder/options/TableCheckOptions.js.map +1 -1
  1162. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  1163. package/schema-builder/options/TableExclusionOptions.js.map +1 -1
  1164. package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  1165. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  1166. package/schema-builder/options/TableOptions.js.map +1 -1
  1167. package/schema-builder/options/TableUniqueOptions.js.map +1 -1
  1168. package/schema-builder/options/ViewOptions.js.map +1 -1
  1169. package/schema-builder/table/Table.js.map +1 -1
  1170. package/schema-builder/table/TableCheck.js.map +1 -1
  1171. package/schema-builder/table/TableColumn.js.map +1 -1
  1172. package/schema-builder/table/TableExclusion.js.map +1 -1
  1173. package/schema-builder/table/TableForeignKey.js.map +1 -1
  1174. package/schema-builder/table/TableIndex.js.map +1 -1
  1175. package/schema-builder/table/TableUnique.js.map +1 -1
  1176. package/schema-builder/util/TableUtils.js.map +1 -1
  1177. package/schema-builder/util/ViewUtils.js.map +1 -1
  1178. package/schema-builder/view/View.js.map +1 -1
  1179. package/subscriber/Broadcaster.js.map +1 -1
  1180. package/subscriber/BroadcasterResult.js.map +1 -1
  1181. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  1182. package/subscriber/event/InsertEvent.js.map +1 -1
  1183. package/subscriber/event/LoadEvent.js.map +1 -1
  1184. package/subscriber/event/QueryEvent.js.map +1 -1
  1185. package/subscriber/event/RecoverEvent.js.map +1 -1
  1186. package/subscriber/event/RemoveEvent.js.map +1 -1
  1187. package/subscriber/event/SoftRemoveEvent.js.map +1 -1
  1188. package/subscriber/event/TransactionCommitEvent.js.map +1 -1
  1189. package/subscriber/event/TransactionRollbackEvent.js.map +1 -1
  1190. package/subscriber/event/TransactionStartEvent.js.map +1 -1
  1191. package/subscriber/event/UpdateEvent.js.map +1 -1
  1192. package/typeorm-class-transformer-shim.js +271 -271
  1193. package/typeorm-model-shim.js +295 -295
  1194. package/util/ApplyValueTransformers.js.map +1 -1
  1195. package/util/DateUtils.js.map +1 -1
  1196. package/util/DepGraph.js.map +1 -1
  1197. package/util/DirectoryExportedClassesLoader.js +2 -3
  1198. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  1199. package/util/ImportUtils.js +23 -36
  1200. package/util/ImportUtils.js.map +1 -1
  1201. package/util/InstanceChecker.js.map +1 -1
  1202. package/util/ObjectUtils.js.map +1 -1
  1203. package/util/OrmUtils.js.map +1 -1
  1204. package/util/PathUtils.js +3 -4
  1205. package/util/PathUtils.js.map +1 -1
  1206. package/util/RandomGenerator.js.map +1 -1
  1207. package/util/StringUtils.js +6 -7
  1208. package/util/StringUtils.js.map +1 -1
  1209. package/util/TreeRepositoryUtils.js.map +1 -1
  1210. package/util/VersionUtils.js.map +1 -1
  1211. package/util/escapeRegExp.js.map +1 -1
  1212. package/browser/persistence/SubjectTopoligicalSorter.js.map +0 -1
  1213. package/persistence/SubjectTopoligicalSorter.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/spanner/SpannerQueryRunner.ts"],"names":[],"mappings":"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","file":"SpannerQueryRunner.js","sourcesContent":["import { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { TransactionNotStartedError } from \"../../error/TransactionNotStartedError\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { ReadStream } from \"../../platform/PlatformTools\"\nimport { BaseQueryRunner } from \"../../query-runner/BaseQueryRunner\"\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { TableIndexOptions } from \"../../schema-builder/options/TableIndexOptions\"\nimport { Table } from \"../../schema-builder/table/Table\"\nimport { TableCheck } from \"../../schema-builder/table/TableCheck\"\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\nimport { TableExclusion } from \"../../schema-builder/table/TableExclusion\"\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\"\nimport { TableIndex } from \"../../schema-builder/table/TableIndex\"\nimport { TableUnique } from \"../../schema-builder/table/TableUnique\"\nimport { View } from \"../../schema-builder/view/View\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport { Query } from \"../Query\"\nimport { IsolationLevel } from \"../types/IsolationLevel\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\nimport { TypeORMError } from \"../../error\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { MetadataTableType } from \"../types/MetadataTableType\"\nimport { SpannerDriver } from \"./SpannerDriver\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\n\n/**\n * Runs queries on a single postgres database connection.\n */\nexport class SpannerQueryRunner extends BaseQueryRunner implements QueryRunner {\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Database driver used by connection.\n */\n driver: SpannerDriver\n\n /**\n * Real database connection from a connection pool used to perform queries.\n */\n protected session?: any\n\n /**\n * Transaction currently executed by this session.\n */\n protected sessionTransaction?: any\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: SpannerDriver, mode: ReplicationMode) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.mode = mode\n this.broadcaster = new Broadcaster(this)\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n async connect(): Promise<any> {\n if (this.session) {\n return Promise.resolve(this.session)\n }\n\n const [session] = await this.driver.instanceDatabase.createSession({})\n this.session = session\n this.sessionTransaction = await session.transaction()\n return this.session\n }\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods once its released.\n */\n async release(): Promise<void> {\n this.isReleased = true\n if (this.session) {\n await this.session.delete()\n }\n this.session = undefined\n return Promise.resolve()\n }\n\n /**\n * Starts transaction.\n */\n async startTransaction(isolationLevel?: IsolationLevel): Promise<void> {\n this.isTransactionActive = true\n try {\n await this.broadcaster.broadcast(\"BeforeTransactionStart\")\n } catch (err) {\n this.isTransactionActive = false\n throw err\n }\n\n await this.connect()\n await this.sessionTransaction.begin()\n this.connection.logger.logQuery(\"START TRANSACTION\")\n\n await this.broadcaster.broadcast(\"AfterTransactionStart\")\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n async commitTransaction(): Promise<void> {\n if (!this.isTransactionActive || !this.sessionTransaction)\n throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionCommit\")\n\n await this.sessionTransaction.commit()\n this.connection.logger.logQuery(\"COMMIT\")\n this.isTransactionActive = false\n\n await this.broadcaster.broadcast(\"AfterTransactionCommit\")\n }\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n async rollbackTransaction(): Promise<void> {\n if (!this.isTransactionActive || !this.sessionTransaction)\n throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionRollback\")\n\n await this.sessionTransaction.rollback()\n this.connection.logger.logQuery(\"ROLLBACK\")\n this.isTransactionActive = false\n\n await this.broadcaster.broadcast(\"AfterTransactionRollback\")\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult: boolean = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const broadcasterResult = new BroadcasterResult()\n\n try {\n const queryStartTime = +new Date()\n await this.connect()\n let rawResult:\n | [\n any[],\n {\n queryPlan: null\n queryStats: null\n rowCountExact: string\n rowCount: string\n },\n { rowType: { fields: [] }; transaction: null },\n ]\n | undefined = undefined\n const isSelect = query.startsWith(\"SELECT\")\n const executor =\n isSelect && !this.isTransactionActive\n ? this.driver.instanceDatabase\n : this.sessionTransaction\n\n if (!this.isTransactionActive && !isSelect) {\n await this.sessionTransaction.begin()\n }\n\n try {\n this.driver.connection.logger.logQuery(query, parameters, this)\n this.broadcaster.broadcastBeforeQueryEvent(\n broadcasterResult,\n query,\n parameters,\n )\n\n rawResult = await executor.run({\n sql: query,\n params: parameters\n ? parameters.reduce((params, value, index) => {\n params[\"param\" + index] = value\n return params\n }, {} as ObjectLiteral)\n : undefined,\n json: true,\n })\n if (!this.isTransactionActive && !isSelect) {\n await this.sessionTransaction.commit()\n }\n } catch (error) {\n try {\n // we throw original error even if rollback thrown an error\n if (!this.isTransactionActive && !isSelect)\n await this.sessionTransaction.rollback()\n } catch (rollbackError) {}\n throw error\n }\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n rawResult,\n undefined,\n )\n\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n this.driver.connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n const result = new QueryResult()\n\n result.raw = rawResult\n result.records = rawResult ? rawResult[0] : []\n if (rawResult && rawResult[1] && rawResult[1].rowCountExact) {\n result.affected = parseInt(rawResult[1].rowCountExact)\n }\n\n if (!useStructuredResult) {\n return result.records\n }\n\n return result\n } catch (err) {\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n undefined,\n undefined,\n err,\n )\n throw new QueryFailedError(query, parameters, err)\n } finally {\n await broadcasterResult.wait()\n }\n }\n\n /**\n * Update database schema.\n * Used for creating/altering/dropping tables, columns, indexes, etc.\n *\n * DDL changing queries should be executed by `updateSchema()` method.\n */\n async updateDDL(query: string, parameters?: any[]): Promise<void> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n try {\n const queryStartTime = +new Date()\n const [operation] = await this.driver.instanceDatabase.updateSchema(\n query,\n )\n await operation.promise()\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n this.driver.connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n } catch (err) {\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n throw new QueryFailedError(query, parameters, err)\n }\n }\n\n /**\n * Returns raw data stream.\n */\n async stream(\n query: string,\n parameters?: any[],\n onEnd?: Function,\n onError?: Function,\n ): Promise<ReadStream> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n try {\n this.driver.connection.logger.logQuery(query, parameters, this)\n const request = {\n sql: query,\n params: parameters\n ? parameters.reduce((params, value, index) => {\n params[\"param\" + index] = value\n return params\n }, {} as ObjectLiteral)\n : undefined,\n json: true,\n }\n const stream = this.driver.instanceDatabase.runStream(request)\n\n if (onEnd) {\n stream.on(\"end\", onEnd)\n }\n\n if (onError) {\n stream.on(\"error\", onError)\n }\n\n return stream\n } catch (err) {\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n throw new QueryFailedError(query, parameters, err)\n }\n }\n\n /**\n * Returns all available database names including system databases.\n */\n async getDatabases(): Promise<string[]> {\n return Promise.resolve([])\n }\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n async getSchemas(database?: string): Promise<string[]> {\n return Promise.resolve([])\n }\n\n /**\n * Checks if database with the given name exist.\n */\n async hasDatabase(database: string): Promise<boolean> {\n throw new TypeORMError(\n `Check database queries are not supported by Spanner driver.`,\n )\n }\n\n /**\n * Loads currently using database\n */\n async getCurrentDatabase(): Promise<string> {\n throw new TypeORMError(\n `Check database queries are not supported by Spanner driver.`,\n )\n }\n\n /**\n * Checks if schema with the given name exist.\n */\n async hasSchema(schema: string): Promise<boolean> {\n const result = await this.query(\n `SELECT * FROM \"information_schema\".\"schemata\" WHERE \"schema_name\" = '${schema}'`,\n )\n return result.length ? true : false\n }\n\n /**\n * Loads currently using database schema\n */\n async getCurrentSchema(): Promise<string> {\n throw new TypeORMError(\n `Check schema queries are not supported by Spanner driver.`,\n )\n }\n\n /**\n * Checks if table with the given name exist in the database.\n */\n async hasTable(tableOrName: Table | string): Promise<boolean> {\n const tableName =\n tableOrName instanceof Table ? tableOrName.name : tableOrName\n const sql =\n `SELECT * FROM \\`INFORMATION_SCHEMA\\`.\\`TABLES\\` ` +\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`TABLE_TYPE\\` = 'BASE TABLE' ` +\n `AND \\`TABLE_NAME\\` = '${tableName}'`\n const result = await this.query(sql)\n return result.length ? true : false\n }\n\n /**\n * Checks if column with the given name exist in the given table.\n */\n async hasColumn(\n tableOrName: Table | string,\n columnName: string,\n ): Promise<boolean> {\n const tableName =\n tableOrName instanceof Table ? tableOrName.name : tableOrName\n const sql =\n `SELECT * FROM \\`INFORMATION_SCHEMA\\`.\\`COLUMNS\\` ` +\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' ` +\n `AND \\`TABLE_NAME\\` = '${tableName}' AND \\`COLUMN_NAME\\` = '${columnName}'`\n const result = await this.query(sql)\n return result.length ? true : false\n }\n\n /**\n * Creates a new database.\n * Note: Spanner does not support database creation inside a transaction block.\n */\n async createDatabase(\n database: string,\n ifNotExist?: boolean,\n ): Promise<void> {\n if (ifNotExist) {\n const databaseAlreadyExists = await this.hasDatabase(database)\n\n if (databaseAlreadyExists) return Promise.resolve()\n }\n\n const up = `CREATE DATABASE \"${database}\"`\n const down = `DROP DATABASE \"${database}\"`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Drops database.\n * Note: Spanner does not support database dropping inside a transaction block.\n */\n async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\n const up = ifExist\n ? `DROP DATABASE IF EXISTS \"${database}\"`\n : `DROP DATABASE \"${database}\"`\n const down = `CREATE DATABASE \"${database}\"`\n await this.executeQueries(new Query(up), new Query(down))\n }\n\n /**\n * Creates a new table schema.\n */\n async createSchema(\n schemaPath: string,\n ifNotExist?: boolean,\n ): Promise<void> {\n return Promise.resolve()\n }\n\n /**\n * Drops table schema.\n */\n async dropSchema(\n schemaPath: string,\n ifExist?: boolean,\n isCascade?: boolean,\n ): Promise<void> {\n return Promise.resolve()\n }\n\n /**\n * Creates a new table.\n */\n async createTable(\n table: Table,\n ifNotExist: boolean = false,\n createForeignKeys: boolean = true,\n createIndices: boolean = true,\n ): Promise<void> {\n if (ifNotExist) {\n const isTableExist = await this.hasTable(table)\n if (isTableExist) return Promise.resolve()\n }\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n upQueries.push(this.createTableSql(table, createForeignKeys))\n downQueries.push(this.dropTableSql(table))\n\n // if createForeignKeys is true, we must drop created foreign keys in down query.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (createForeignKeys)\n table.foreignKeys.forEach((foreignKey) =>\n downQueries.push(this.dropForeignKeySql(table, foreignKey)),\n )\n\n if (createIndices) {\n table.indices.forEach((index) => {\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(\n table,\n index.columnNames,\n index.where,\n )\n upQueries.push(this.createIndexSql(table, index))\n downQueries.push(this.dropIndexSql(table, index))\n })\n }\n\n // if table has column with generated type, we must add the expression to the metadata table\n const generatedColumns = table.columns.filter(\n (column) => column.generatedType && column.asExpression,\n )\n\n for (const column of generatedColumns) {\n const insertQuery = this.insertTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n const deleteQuery = this.deleteTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n upQueries.push(insertQuery)\n downQueries.push(deleteQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Drops the table.\n */\n async dropTable(\n target: Table | string,\n ifExist?: boolean,\n dropForeignKeys: boolean = true,\n dropIndices: boolean = true,\n ): Promise<void> {\n // It needs because if table does not exist and dropForeignKeys or dropIndices is true, we don't need\n // to perform drop queries for foreign keys and indices.\n if (ifExist) {\n const isTableExist = await this.hasTable(target)\n if (!isTableExist) return Promise.resolve()\n }\n\n // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.\n const createForeignKeys: boolean = dropForeignKeys\n const tablePath = this.getTablePath(target)\n const table = await this.getCachedTable(tablePath)\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n if (dropIndices) {\n table.indices.forEach((index) => {\n upQueries.push(this.dropIndexSql(table, index))\n downQueries.push(this.createIndexSql(table, index))\n })\n }\n\n if (dropForeignKeys)\n table.foreignKeys.forEach((foreignKey) =>\n upQueries.push(this.dropForeignKeySql(table, foreignKey)),\n )\n\n upQueries.push(this.dropTableSql(table))\n downQueries.push(this.createTableSql(table, createForeignKeys))\n\n // if table had columns with generated type, we must remove the expression from the metadata table\n const generatedColumns = table.columns.filter(\n (column) => column.generatedType && column.asExpression,\n )\n\n for (const column of generatedColumns) {\n const deleteQuery = this.deleteTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n const insertQuery = this.insertTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n upQueries.push(deleteQuery)\n downQueries.push(insertQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Creates a new view.\n */\n async createView(view: View): Promise<void> {\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n upQueries.push(this.createViewSql(view))\n upQueries.push(await this.insertViewDefinitionSql(view))\n downQueries.push(this.dropViewSql(view))\n downQueries.push(await this.deleteViewDefinitionSql(view))\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Drops the view.\n */\n async dropView(target: View | string): Promise<void> {\n const viewName = target instanceof View ? target.name : target\n const view = await this.getCachedView(viewName)\n\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n upQueries.push(await this.deleteViewDefinitionSql(view))\n upQueries.push(this.dropViewSql(view))\n downQueries.push(await this.insertViewDefinitionSql(view))\n downQueries.push(this.createViewSql(view))\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Renames the given table.\n */\n async renameTable(\n oldTableOrName: Table | string,\n newTableName: string,\n ): Promise<void> {\n throw new TypeORMError(\n `Rename table queries are not supported by Spanner driver.`,\n )\n }\n\n /**\n * Creates a new column from the column in the table.\n */\n async addColumn(\n tableOrName: Table | string,\n column: TableColumn,\n ): Promise<void> {\n const table =\n tableOrName instanceof Table\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD ${this.buildCreateColumnSql(column)}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP COLUMN ${this.driver.escape(column.name)}`,\n ),\n )\n\n // create column index\n const columnIndex = clonedTable.indices.find(\n (index) =>\n index.columnNames.length === 1 &&\n index.columnNames[0] === column.name,\n )\n if (columnIndex) {\n upQueries.push(this.createIndexSql(table, columnIndex))\n downQueries.push(this.dropIndexSql(table, columnIndex))\n } else if (column.isUnique) {\n const uniqueIndex = new TableIndex({\n name: this.connection.namingStrategy.indexName(table, [\n column.name,\n ]),\n columnNames: [column.name],\n isUnique: true,\n })\n clonedTable.indices.push(uniqueIndex)\n clonedTable.uniques.push(\n new TableUnique({\n name: uniqueIndex.name,\n columnNames: uniqueIndex.columnNames,\n }),\n )\n\n upQueries.push(this.createIndexSql(table, uniqueIndex))\n downQueries.push(this.dropIndexSql(table, uniqueIndex))\n }\n\n if (column.generatedType && column.asExpression) {\n const insertQuery = this.insertTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n const deleteQuery = this.deleteTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n upQueries.push(insertQuery)\n downQueries.push(deleteQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n\n clonedTable.addColumn(column)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Creates a new columns from the column in the table.\n */\n async addColumns(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n for (const column of columns) {\n await this.addColumn(tableOrName, column)\n }\n }\n\n /**\n * Renames column in the given table.\n */\n async renameColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newTableColumnOrName: TableColumn | string,\n ): Promise<void> {\n const table =\n tableOrName instanceof Table\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const oldColumn =\n oldTableColumnOrName instanceof TableColumn\n ? oldTableColumnOrName\n : table.columns.find((c) => c.name === oldTableColumnOrName)\n if (!oldColumn)\n throw new TypeORMError(\n `Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`,\n )\n\n let newColumn\n if (newTableColumnOrName instanceof TableColumn) {\n newColumn = newTableColumnOrName\n } else {\n newColumn = oldColumn.clone()\n newColumn.name = newTableColumnOrName\n }\n\n return this.changeColumn(table, oldColumn, newColumn)\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newColumn: TableColumn,\n ): Promise<void> {\n const table =\n tableOrName instanceof Table\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n let clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n const oldColumn =\n oldTableColumnOrName instanceof TableColumn\n ? oldTableColumnOrName\n : table.columns.find(\n (column) => column.name === oldTableColumnOrName,\n )\n if (!oldColumn)\n throw new TypeORMError(\n `Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`,\n )\n\n if (\n oldColumn.name !== newColumn.name ||\n oldColumn.type !== newColumn.type ||\n oldColumn.length !== newColumn.length ||\n oldColumn.isArray !== newColumn.isArray ||\n oldColumn.generatedType !== newColumn.generatedType ||\n oldColumn.asExpression !== newColumn.asExpression\n ) {\n // To avoid data conversion, we just recreate column\n await this.dropColumn(table, oldColumn)\n await this.addColumn(table, newColumn)\n\n // update cloned table\n clonedTable = table.clone()\n } else {\n if (\n newColumn.precision !== oldColumn.precision ||\n newColumn.scale !== oldColumn.scale\n ) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${this.driver.createFullType(newColumn)}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\n newColumn.name\n }\" TYPE ${this.driver.createFullType(oldColumn)}`,\n ),\n )\n }\n\n if (oldColumn.isNullable !== newColumn.isNullable) {\n if (newColumn.isNullable) {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" DROP NOT NULL`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" SET NOT NULL`,\n ),\n )\n } else {\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" SET NOT NULL`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ALTER COLUMN \"${oldColumn.name}\" DROP NOT NULL`,\n ),\n )\n }\n }\n\n if (newColumn.isUnique !== oldColumn.isUnique) {\n if (newColumn.isUnique === true) {\n const uniqueIndex = new TableIndex({\n name: this.connection.namingStrategy.indexName(table, [\n newColumn.name,\n ]),\n columnNames: [newColumn.name],\n isUnique: true,\n })\n clonedTable.indices.push(uniqueIndex)\n clonedTable.uniques.push(\n new TableUnique({\n name: uniqueIndex.name,\n columnNames: uniqueIndex.columnNames,\n }),\n )\n\n upQueries.push(this.createIndexSql(table, uniqueIndex))\n downQueries.push(this.dropIndexSql(table, uniqueIndex))\n } else {\n const uniqueIndex = clonedTable.indices.find((index) => {\n return (\n index.columnNames.length === 1 &&\n index.isUnique === true &&\n !!index.columnNames.find(\n (columnName) => columnName === newColumn.name,\n )\n )\n })\n clonedTable.indices.splice(\n clonedTable.indices.indexOf(uniqueIndex!),\n 1,\n )\n\n const tableUnique = clonedTable.uniques.find(\n (unique) => unique.name === uniqueIndex!.name,\n )\n clonedTable.uniques.splice(\n clonedTable.uniques.indexOf(tableUnique!),\n 1,\n )\n\n upQueries.push(this.dropIndexSql(table, uniqueIndex!))\n downQueries.push(this.createIndexSql(table, uniqueIndex!))\n }\n }\n }\n\n await this.executeQueries(upQueries, downQueries)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumns(\n tableOrName: Table | string,\n changedColumns: { newColumn: TableColumn; oldColumn: TableColumn }[],\n ): Promise<void> {\n for (const { oldColumn, newColumn } of changedColumns) {\n await this.changeColumn(tableOrName, oldColumn, newColumn)\n }\n }\n\n /**\n * Drops column in the table.\n */\n async dropColumn(\n tableOrName: Table | string,\n columnOrName: TableColumn | string,\n ): Promise<void> {\n const table =\n tableOrName instanceof Table\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const column =\n columnOrName instanceof TableColumn\n ? columnOrName\n : table.findColumnByName(columnOrName)\n if (!column)\n throw new TypeORMError(\n `Column \"${columnOrName}\" was not found in table \"${table.name}\"`,\n )\n\n const clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // drop column index\n const columnIndex = clonedTable.indices.find(\n (index) =>\n index.columnNames.length === 1 &&\n index.columnNames[0] === column.name,\n )\n if (columnIndex) {\n clonedTable.indices.splice(\n clonedTable.indices.indexOf(columnIndex),\n 1,\n )\n upQueries.push(this.dropIndexSql(table, columnIndex))\n downQueries.push(this.createIndexSql(table, columnIndex))\n }\n\n // drop column check\n const columnCheck = clonedTable.checks.find(\n (check) =>\n !!check.columnNames &&\n check.columnNames.length === 1 &&\n check.columnNames[0] === column.name,\n )\n if (columnCheck) {\n clonedTable.checks.splice(\n clonedTable.checks.indexOf(columnCheck),\n 1,\n )\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck))\n downQueries.push(this.createCheckConstraintSql(table, columnCheck))\n }\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP COLUMN ${this.driver.escape(column.name)}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD ${this.buildCreateColumnSql(column)}`,\n ),\n )\n\n if (column.generatedType && column.asExpression) {\n const deleteQuery = this.deleteTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n const insertQuery = this.insertTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n upQueries.push(deleteQuery)\n downQueries.push(insertQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n\n clonedTable.removeColumn(column)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Drops the columns in the table.\n */\n async dropColumns(\n tableOrName: Table | string,\n columns: TableColumn[] | string[],\n ): Promise<void> {\n for (const column of columns) {\n await this.dropColumn(tableOrName, column)\n }\n }\n\n /**\n * Creates a new primary key.\n *\n * Not supported in Spanner.\n * @see https://cloud.google.com/spanner/docs/schema-and-data-model#notes_about_key_columns\n */\n async createPrimaryKey(\n tableOrName: Table | string,\n columnNames: string[],\n ): Promise<void> {\n throw new Error(\n \"The keys of a table can't change; you can't add a key column to an existing table or remove a key column from an existing table.\",\n )\n }\n\n /**\n * Updates composite primary keys.\n */\n async updatePrimaryKeys(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n throw new Error(\n \"The keys of a table can't change; you can't add a key column to an existing table or remove a key column from an existing table.\",\n )\n }\n\n /**\n * Creates a new primary key.\n *\n * Not supported in Spanner.\n * @see https://cloud.google.com/spanner/docs/schema-and-data-model#notes_about_key_columns\n */\n async dropPrimaryKey(tableOrName: Table | string): Promise<void> {\n throw new Error(\n \"The keys of a table can't change; you can't add a key column to an existing table or remove a key column from an existing table.\",\n )\n }\n\n /**\n * Creates new unique constraint.\n */\n async createUniqueConstraint(\n tableOrName: Table | string,\n uniqueConstraint: TableUnique,\n ): Promise<void> {\n throw new TypeORMError(\n `Spanner does not support unique constraints. Use unique index instead.`,\n )\n }\n\n /**\n * Creates new unique constraints.\n */\n async createUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n throw new TypeORMError(\n `Spanner does not support unique constraints. Use unique index instead.`,\n )\n }\n\n /**\n * Drops unique constraint.\n */\n async dropUniqueConstraint(\n tableOrName: Table | string,\n uniqueOrName: TableUnique | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Spanner does not support unique constraints. Use unique index instead.`,\n )\n }\n\n /**\n * Drops unique constraints.\n */\n async dropUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n throw new TypeORMError(\n `Spanner does not support unique constraints. Use unique index instead.`,\n )\n }\n\n /**\n * Creates new check constraint.\n */\n async createCheckConstraint(\n tableOrName: Table | string,\n checkConstraint: TableCheck,\n ): Promise<void> {\n const table =\n tableOrName instanceof Table\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new check constraint may be passed without name. In this case we generate unique name manually.\n if (!checkConstraint.name)\n checkConstraint.name =\n this.connection.namingStrategy.checkConstraintName(\n table,\n checkConstraint.expression!,\n )\n\n const up = this.createCheckConstraintSql(table, checkConstraint)\n const down = this.dropCheckConstraintSql(table, checkConstraint)\n await this.executeQueries(up, down)\n table.addCheckConstraint(checkConstraint)\n }\n\n /**\n * Creates new check constraints.\n */\n async createCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n const promises = checkConstraints.map((checkConstraint) =>\n this.createCheckConstraint(tableOrName, checkConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Drops check constraint.\n */\n async dropCheckConstraint(\n tableOrName: Table | string,\n checkOrName: TableCheck | string,\n ): Promise<void> {\n const table =\n tableOrName instanceof Table\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const checkConstraint =\n checkOrName instanceof TableCheck\n ? checkOrName\n : table.checks.find((c) => c.name === checkOrName)\n if (!checkConstraint)\n throw new TypeORMError(\n `Supplied check constraint was not found in table ${table.name}`,\n )\n\n const up = this.dropCheckConstraintSql(table, checkConstraint)\n const down = this.createCheckConstraintSql(table, checkConstraint)\n await this.executeQueries(up, down)\n table.removeCheckConstraint(checkConstraint)\n }\n\n /**\n * Drops check constraints.\n */\n async dropCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n const promises = checkConstraints.map((checkConstraint) =>\n this.dropCheckConstraint(tableOrName, checkConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Creates new exclusion constraint.\n */\n async createExclusionConstraint(\n tableOrName: Table | string,\n exclusionConstraint: TableExclusion,\n ): Promise<void> {\n throw new TypeORMError(\n `Spanner does not support exclusion constraints.`,\n )\n }\n\n /**\n * Creates new exclusion constraints.\n */\n async createExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(\n `Spanner does not support exclusion constraints.`,\n )\n }\n\n /**\n * Drops exclusion constraint.\n */\n async dropExclusionConstraint(\n tableOrName: Table | string,\n exclusionOrName: TableExclusion | string,\n ): Promise<void> {\n throw new TypeORMError(\n `Spanner does not support exclusion constraints.`,\n )\n }\n\n /**\n * Drops exclusion constraints.\n */\n async dropExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(\n `Spanner does not support exclusion constraints.`,\n )\n }\n\n /**\n * Creates a new foreign key.\n */\n async createForeignKey(\n tableOrName: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void> {\n const table =\n tableOrName instanceof Table\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new FK may be passed without name. In this case we generate FK name manually.\n if (!foreignKey.name)\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(\n table,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n const up = this.createForeignKeySql(table, foreignKey)\n const down = this.dropForeignKeySql(table, foreignKey)\n await this.executeQueries(up, down)\n table.addForeignKey(foreignKey)\n }\n\n /**\n * Creates a new foreign keys.\n */\n async createForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n for (const foreignKey of foreignKeys) {\n await this.createForeignKey(tableOrName, foreignKey)\n }\n }\n\n /**\n * Drops a foreign key from the table.\n */\n async dropForeignKey(\n tableOrName: Table | string,\n foreignKeyOrName: TableForeignKey | string,\n ): Promise<void> {\n const table =\n tableOrName instanceof Table\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const foreignKey =\n foreignKeyOrName instanceof TableForeignKey\n ? foreignKeyOrName\n : table.foreignKeys.find((fk) => fk.name === foreignKeyOrName)\n if (!foreignKey)\n throw new TypeORMError(\n `Supplied foreign key was not found in table ${table.name}`,\n )\n\n const up = this.dropForeignKeySql(table, foreignKey)\n const down = this.createForeignKeySql(table, foreignKey)\n await this.executeQueries(up, down)\n table.removeForeignKey(foreignKey)\n }\n\n /**\n * Drops a foreign keys from the table.\n */\n async dropForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n for (const foreignKey of foreignKeys) {\n await this.dropForeignKey(tableOrName, foreignKey)\n }\n }\n\n /**\n * Creates a new index.\n */\n async createIndex(\n tableOrName: Table | string,\n index: TableIndex,\n ): Promise<void> {\n const table =\n tableOrName instanceof Table\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name) index.name = this.generateIndexName(table, index)\n\n const up = this.createIndexSql(table, index)\n const down = this.dropIndexSql(table, index)\n await this.executeQueries(up, down)\n table.addIndex(index)\n }\n\n /**\n * Creates a new indices\n */\n async createIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n for (const index of indices) {\n await this.createIndex(tableOrName, index)\n }\n }\n\n /**\n * Drops an index from the table.\n */\n async dropIndex(\n tableOrName: Table | string,\n indexOrName: TableIndex | string,\n ): Promise<void> {\n const table =\n tableOrName instanceof Table\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const index =\n indexOrName instanceof TableIndex\n ? indexOrName\n : table.indices.find((i) => i.name === indexOrName)\n if (!index)\n throw new TypeORMError(\n `Supplied index ${indexOrName} was not found in table ${table.name}`,\n )\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name) index.name = this.generateIndexName(table, index)\n\n const up = this.dropIndexSql(table, index)\n const down = this.createIndexSql(table, index)\n await this.executeQueries(up, down)\n table.removeIndex(index)\n }\n\n /**\n * Drops an indices from the table.\n */\n async dropIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n for (const index of indices) {\n await this.dropIndex(tableOrName, index)\n }\n }\n\n /**\n * Clears all table contents.\n * Spanner does not support TRUNCATE TABLE statement, so we use DELETE FROM.\n */\n async clearTable(tableName: string): Promise<void> {\n await this.query(`DELETE FROM ${this.escapePath(tableName)} WHERE true`)\n }\n\n /**\n * Removes all tables from the currently connected database.\n */\n async clearDatabase(): Promise<void> {\n // drop index queries\n const selectIndexDropsQuery =\n `SELECT concat('DROP INDEX \\`', INDEX_NAME, '\\`') AS \\`query\\` ` +\n `FROM \\`INFORMATION_SCHEMA\\`.\\`INDEXES\\` ` +\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`INDEX_TYPE\\` = 'INDEX' AND \\`SPANNER_IS_MANAGED\\` = false`\n const dropIndexQueries: ObjectLiteral[] = await this.query(\n selectIndexDropsQuery,\n )\n\n // drop foreign key queries\n const selectFKDropsQuery =\n `SELECT concat('ALTER TABLE \\`', TABLE_NAME, '\\`', ' DROP CONSTRAINT \\`', CONSTRAINT_NAME, '\\`') AS \\`query\\` ` +\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLE_CONSTRAINTS\\` ` +\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`CONSTRAINT_TYPE\\` = 'FOREIGN KEY'`\n const dropFKQueries: ObjectLiteral[] = await this.query(\n selectFKDropsQuery,\n )\n\n // drop view queries\n // const selectViewDropsQuery = `SELECT concat('DROP VIEW \\`', TABLE_NAME, '\\`') AS \\`query\\` FROM \\`INFORMATION_SCHEMA\\`.\\`VIEWS\\``\n // const dropViewQueries: ObjectLiteral[] = await this.query(\n // selectViewDropsQuery,\n // )\n\n // drop table queries\n const dropTablesQuery =\n `SELECT concat('DROP TABLE \\`', TABLE_NAME, '\\`') AS \\`query\\` ` +\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLES\\` ` +\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`TABLE_TYPE\\` = 'BASE TABLE'`\n const dropTableQueries: ObjectLiteral[] = await this.query(\n dropTablesQuery,\n )\n\n if (\n !dropIndexQueries.length &&\n !dropFKQueries.length &&\n // !dropViewQueries.length &&\n !dropTableQueries.length\n )\n return\n\n const isAnotherTransactionActive = this.isTransactionActive\n if (!isAnotherTransactionActive) await this.startTransaction()\n try {\n for (let query of dropIndexQueries) {\n await this.updateDDL(query[\"query\"])\n }\n for (let query of dropFKQueries) {\n await this.updateDDL(query[\"query\"])\n }\n\n // for (let query of dropViewQueries) {\n // await this.updateDDL(query[\"query\"])\n // }\n\n for (let query of dropTableQueries) {\n await this.updateDDL(query[\"query\"])\n }\n\n await this.commitTransaction()\n } catch (error) {\n try {\n // we throw original error even if rollback thrown an error\n if (!isAnotherTransactionActive)\n await this.rollbackTransaction()\n } catch (rollbackError) {}\n throw error\n }\n }\n\n // -------------------------------------------------------------------------\n // Override Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes up sql queries.\n */\n async executeMemoryUpSql(): Promise<void> {\n for (const { query, parameters } of this.sqlInMemory.upQueries) {\n if (this.isDMLQuery(query)) {\n await this.query(query, parameters)\n } else {\n await this.updateDDL(query, parameters)\n }\n }\n }\n\n /**\n * Executes down sql queries.\n */\n async executeMemoryDownSql(): Promise<void> {\n for (const {\n query,\n parameters,\n } of this.sqlInMemory.downQueries.reverse()) {\n if (this.isDMLQuery(query)) {\n await this.query(query, parameters)\n } else {\n await this.updateDDL(query, parameters)\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n protected async loadViews(viewNames?: string[]): Promise<View[]> {\n // const hasTable = await this.hasTable(this.getTypeormMetadataTableName())\n // if (!hasTable) {\n // return []\n // }\n //\n // if (!viewNames) {\n // viewNames = []\n // }\n //\n // const escapedViewNames = viewNames\n // .map((viewName) => `'${viewName}'`)\n // .join(\", \")\n //\n // const query =\n // `SELECT \\`T\\`.*, \\`V\\`.\\`VIEW_DEFINITION\\` FROM ${this.escapePath(\n // this.getTypeormMetadataTableName(),\n // )} \\`T\\` ` +\n // `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`VIEWS\\` \\`V\\` ON \\`V\\`.\\`TABLE_NAME\\` = \\`T\\`.\\`NAME\\` ` +\n // `WHERE \\`T\\`.\\`TYPE\\` = '${MetadataTableType.VIEW}' ${\n // viewNames.length\n // ? ` AND \\`T\\`.\\`NAME\\` IN (${escapedViewNames})`\n // : \"\"\n // }`\n // const dbViews = await this.query(query)\n // return dbViews.map((dbView: any) => {\n // const view = new View()\n // view.database = dbView[\"NAME\"]\n // view.name = this.driver.buildTableName(dbView[\"NAME\"])\n // view.expression = dbView[\"NAME\"]\n // return view\n // })\n\n return Promise.resolve([])\n }\n\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n protected async loadTables(tableNames?: string[]): Promise<Table[]> {\n if (tableNames && tableNames.length === 0) {\n return []\n }\n\n const dbTables: { TABLE_NAME: string }[] = []\n\n if (!tableNames || !tableNames.length) {\n // Since we don't have any of this data we have to do a scan\n const tablesSql =\n `SELECT \\`TABLE_NAME\\` ` +\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLES\\` ` +\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`TABLE_TYPE\\` = 'BASE TABLE'`\n dbTables.push(...(await this.query(tablesSql)))\n } else {\n const tablesSql =\n `SELECT \\`TABLE_NAME\\` ` +\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLES\\` ` +\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`TABLE_TYPE\\` = 'BASE TABLE' ` +\n `AND \\`TABLE_NAME\\` IN (${tableNames\n .map((tableName) => `'${tableName}'`)\n .join(\", \")})`\n\n dbTables.push(...(await this.query(tablesSql)))\n }\n\n // if tables were not found in the db, no need to proceed\n if (!dbTables.length) return []\n\n const loadedTableNames = dbTables\n .map((dbTable) => `'${dbTable.TABLE_NAME}'`)\n .join(\", \")\n\n const columnsSql = `SELECT * FROM \\`INFORMATION_SCHEMA\\`.\\`COLUMNS\\` WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`TABLE_NAME\\` IN (${loadedTableNames})`\n\n const primaryKeySql =\n `SELECT \\`KCU\\`.\\`TABLE_NAME\\`, \\`KCU\\`.\\`COLUMN_NAME\\` ` +\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLE_CONSTRAINTS\\` \\`TC\\` ` +\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`KEY_COLUMN_USAGE\\` \\`KCU\\` ON \\`KCU\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\n `WHERE \\`TC\\`.\\`TABLE_CATALOG\\` = '' AND \\`TC\\`.\\`TABLE_SCHEMA\\` = '' AND \\`TC\\`.\\`CONSTRAINT_TYPE\\` = 'PRIMARY KEY' ` +\n `AND \\`TC\\`.\\`TABLE_NAME\\` IN (${loadedTableNames})`\n\n const indicesSql =\n `SELECT \\`I\\`.\\`TABLE_NAME\\`, \\`I\\`.\\`INDEX_NAME\\`, \\`I\\`.\\`IS_UNIQUE\\`, \\`I\\`.\\`IS_NULL_FILTERED\\`, \\`IC\\`.\\`COLUMN_NAME\\` ` +\n `FROM \\`INFORMATION_SCHEMA\\`.\\`INDEXES\\` \\`I\\` ` +\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`INDEX_COLUMNS\\` \\`IC\\` ON \\`IC\\`.\\`INDEX_NAME\\` = \\`I\\`.\\`INDEX_NAME\\` ` +\n `AND \\`IC\\`.\\`TABLE_NAME\\` = \\`I\\`.\\`TABLE_NAME\\` ` +\n `WHERE \\`I\\`.\\`TABLE_CATALOG\\` = '' AND \\`I\\`.\\`TABLE_SCHEMA\\` = '' AND \\`I\\`.\\`TABLE_NAME\\` IN (${loadedTableNames}) ` +\n `AND \\`I\\`.\\`INDEX_TYPE\\` = 'INDEX' AND \\`I\\`.\\`SPANNER_IS_MANAGED\\` = false`\n\n const checksSql =\n `SELECT \\`TC\\`.\\`TABLE_NAME\\`, \\`TC\\`.\\`CONSTRAINT_NAME\\`, \\`CC\\`.\\`CHECK_CLAUSE\\`, \\`CCU\\`.\\`COLUMN_NAME\\`` +\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLE_CONSTRAINTS\\` \\`TC\\` ` +\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`CONSTRAINT_COLUMN_USAGE\\` \\`CCU\\` ON \\`CCU\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`CHECK_CONSTRAINTS\\` \\`CC\\` ON \\`CC\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\n `WHERE \\`TC\\`.\\`TABLE_CATALOG\\` = '' AND \\`TC\\`.\\`TABLE_SCHEMA\\` = '' AND \\`TC\\`.\\`CONSTRAINT_TYPE\\` = 'CHECK' ` +\n `AND \\`TC\\`.\\`TABLE_NAME\\` IN (${loadedTableNames}) AND \\`TC\\`.\\`CONSTRAINT_NAME\\` NOT LIKE 'CK_IS_NOT_NULL%'`\n\n const foreignKeysSql =\n `SELECT \\`TC\\`.\\`TABLE_NAME\\`, \\`TC\\`.\\`CONSTRAINT_NAME\\`, \\`KCU\\`.\\`COLUMN_NAME\\`, ` +\n `\\`CTU\\`.\\`TABLE_NAME\\` AS \\`REFERENCED_TABLE_NAME\\`, \\`CCU\\`.\\`COLUMN_NAME\\` AS \\`REFERENCED_COLUMN_NAME\\`, ` +\n `\\`RC\\`.\\`UPDATE_RULE\\`, \\`RC\\`.\\`DELETE_RULE\\` ` +\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLE_CONSTRAINTS\\` \\`TC\\` ` +\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`KEY_COLUMN_USAGE\\` \\`KCU\\` ON \\`KCU\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`CONSTRAINT_TABLE_USAGE\\` \\`CTU\\` ON \\`CTU\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`REFERENTIAL_CONSTRAINTS\\` \\`RC\\` ON \\`RC\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`CONSTRAINT_COLUMN_USAGE\\` \\`CCU\\` ON \\`CCU\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\n `WHERE \\`TC\\`.\\`TABLE_CATALOG\\` = '' AND \\`TC\\`.\\`TABLE_SCHEMA\\` = '' AND \\`TC\\`.\\`CONSTRAINT_TYPE\\` = 'FOREIGN KEY' ` +\n `AND \\`TC\\`.\\`TABLE_NAME\\` IN (${loadedTableNames})`\n\n const [\n dbColumns,\n dbPrimaryKeys,\n dbIndices,\n dbChecks,\n dbForeignKeys,\n ]: ObjectLiteral[][] = await Promise.all([\n this.query(columnsSql),\n this.query(primaryKeySql),\n this.query(indicesSql),\n this.query(checksSql),\n this.query(foreignKeysSql),\n ])\n\n // create tables for loaded tables\n return Promise.all(\n dbTables.map(async (dbTable) => {\n const table = new Table()\n\n table.name = this.driver.buildTableName(dbTable[\"TABLE_NAME\"])\n\n // create columns from the loaded columns\n table.columns = await Promise.all(\n dbColumns\n .filter(\n (dbColumn) =>\n dbColumn[\"TABLE_NAME\"] ===\n dbTable[\"TABLE_NAME\"],\n )\n .map(async (dbColumn) => {\n const columnUniqueIndices = dbIndices.filter(\n (dbIndex) => {\n return (\n dbIndex[\"TABLE_NAME\"] ===\n dbTable[\"TABLE_NAME\"] &&\n dbIndex[\"COLUMN_NAME\"] ===\n dbColumn[\"COLUMN_NAME\"] &&\n dbIndex[\"IS_UNIQUE\"] === true\n )\n },\n )\n\n const tableMetadata =\n this.connection.entityMetadatas.find(\n (metadata) =>\n this.getTablePath(table) ===\n this.getTablePath(metadata),\n )\n const hasIgnoredIndex =\n columnUniqueIndices.length > 0 &&\n tableMetadata &&\n tableMetadata.indices.some((index) => {\n return columnUniqueIndices.some(\n (uniqueIndex) => {\n return (\n index.name ===\n uniqueIndex[\"INDEX_NAME\"] &&\n index.synchronize === false\n )\n },\n )\n })\n\n const isConstraintComposite =\n columnUniqueIndices.every((uniqueIndex) => {\n return dbIndices.some(\n (dbIndex) =>\n dbIndex[\"INDEX_NAME\"] ===\n uniqueIndex[\"INDEX_NAME\"] &&\n dbIndex[\"COLUMN_NAME\"] !==\n dbColumn[\"COLUMN_NAME\"],\n )\n })\n\n const tableColumn = new TableColumn()\n tableColumn.name = dbColumn[\"COLUMN_NAME\"]\n\n let fullType =\n dbColumn[\"SPANNER_TYPE\"].toLowerCase()\n if (fullType.indexOf(\"array\") !== -1) {\n tableColumn.isArray = true\n fullType = fullType.substring(\n fullType.indexOf(\"<\") + 1,\n fullType.indexOf(\">\"),\n )\n }\n\n if (fullType.indexOf(\"(\") !== -1) {\n tableColumn.type = fullType.substring(\n 0,\n fullType.indexOf(\"(\"),\n )\n } else {\n tableColumn.type = fullType\n }\n\n if (\n this.driver.withLengthColumnTypes.indexOf(\n tableColumn.type as ColumnType,\n ) !== -1\n ) {\n tableColumn.length = fullType.substring(\n fullType.indexOf(\"(\") + 1,\n fullType.indexOf(\")\"),\n )\n }\n\n if (dbColumn[\"IS_GENERATED\"] === \"ALWAYS\") {\n tableColumn.asExpression =\n dbColumn[\"GENERATION_EXPRESSION\"]\n tableColumn.generatedType = \"STORED\"\n\n // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.\n const asExpressionQuery =\n this.selectTypeormMetadataSql({\n table: dbTable[\"TABLE_NAME\"],\n type: MetadataTableType.GENERATED_COLUMN,\n name: tableColumn.name,\n })\n\n const results = await this.query(\n asExpressionQuery.query,\n asExpressionQuery.parameters,\n )\n\n if (results[0] && results[0].value) {\n tableColumn.asExpression = results[0].value\n } else {\n tableColumn.asExpression = \"\"\n }\n }\n\n tableColumn.isUnique =\n columnUniqueIndices.length > 0 &&\n !hasIgnoredIndex &&\n !isConstraintComposite\n tableColumn.isNullable =\n dbColumn[\"IS_NULLABLE\"] === \"YES\"\n tableColumn.isPrimary = dbPrimaryKeys.some(\n (dbPrimaryKey) => {\n return (\n dbPrimaryKey[\"TABLE_NAME\"] ===\n dbColumn[\"TABLE_NAME\"] &&\n dbPrimaryKey[\"COLUMN_NAME\"] ===\n dbColumn[\"COLUMN_NAME\"]\n )\n },\n )\n\n return tableColumn\n }),\n )\n\n const tableForeignKeys = dbForeignKeys.filter(\n (dbForeignKey) => {\n return (\n dbForeignKey[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"]\n )\n },\n )\n\n table.foreignKeys = OrmUtils.uniq(\n tableForeignKeys,\n (dbForeignKey) => dbForeignKey[\"CONSTRAINT_NAME\"],\n ).map((dbForeignKey) => {\n const foreignKeys = tableForeignKeys.filter(\n (dbFk) =>\n dbFk[\"CONSTRAINT_NAME\"] ===\n dbForeignKey[\"CONSTRAINT_NAME\"],\n )\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: OrmUtils.uniq(\n foreignKeys.map((dbFk) => dbFk[\"COLUMN_NAME\"]),\n ),\n referencedDatabase:\n dbForeignKey[\"REFERENCED_TABLE_SCHEMA\"],\n referencedTableName:\n dbForeignKey[\"REFERENCED_TABLE_NAME\"],\n referencedColumnNames: OrmUtils.uniq(\n foreignKeys.map(\n (dbFk) => dbFk[\"REFERENCED_COLUMN_NAME\"],\n ),\n ),\n onDelete: dbForeignKey[\"DELETE_RULE\"],\n onUpdate: dbForeignKey[\"UPDATE_RULE\"],\n })\n })\n\n const tableIndices = dbIndices.filter(\n (dbIndex) =>\n dbIndex[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"],\n )\n\n table.indices = OrmUtils.uniq(\n tableIndices,\n (dbIndex) => dbIndex[\"INDEX_NAME\"],\n ).map((constraint) => {\n const indices = tableIndices.filter((index) => {\n return index[\"INDEX_NAME\"] === constraint[\"INDEX_NAME\"]\n })\n\n return new TableIndex(<TableIndexOptions>{\n table: table,\n name: constraint[\"INDEX_NAME\"],\n columnNames: indices.map((i) => i[\"COLUMN_NAME\"]),\n isUnique: constraint[\"IS_UNIQUE\"],\n isNullFiltered: constraint[\"IS_NULL_FILTERED\"],\n })\n })\n\n const tableChecks = dbChecks.filter(\n (dbCheck) =>\n dbCheck[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"],\n )\n\n table.checks = OrmUtils.uniq(\n tableChecks,\n (dbIndex) => dbIndex[\"CONSTRAINT_NAME\"],\n ).map((constraint) => {\n const checks = tableChecks.filter(\n (dbC) =>\n dbC[\"CONSTRAINT_NAME\"] ===\n constraint[\"CONSTRAINT_NAME\"],\n )\n return new TableCheck({\n name: constraint[\"CONSTRAINT_NAME\"],\n columnNames: checks.map((c) => c[\"COLUMN_NAME\"]),\n expression: constraint[\"CHECK_CLAUSE\"],\n })\n })\n\n return table\n }),\n )\n }\n\n /**\n * Builds create table sql.\n */\n protected createTableSql(table: Table, createForeignKeys?: boolean): Query {\n const columnDefinitions = table.columns\n .map((column) => this.buildCreateColumnSql(column))\n .join(\", \")\n let sql = `CREATE TABLE ${this.escapePath(table)} (${columnDefinitions}`\n\n // we create unique indexes instead of unique constraints, because Spanner does not have unique constraints.\n // if we mark column as Unique, it means that we create UNIQUE INDEX.\n table.columns\n .filter((column) => column.isUnique)\n .forEach((column) => {\n const isUniqueIndexExist = table.indices.some((index) => {\n return (\n index.columnNames.length === 1 &&\n !!index.isUnique &&\n index.columnNames.indexOf(column.name) !== -1\n )\n })\n const isUniqueConstraintExist = table.uniques.some((unique) => {\n return (\n unique.columnNames.length === 1 &&\n unique.columnNames.indexOf(column.name) !== -1\n )\n })\n if (!isUniqueIndexExist && !isUniqueConstraintExist)\n table.indices.push(\n new TableIndex({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n [column.name],\n ),\n columnNames: [column.name],\n isUnique: true,\n }),\n )\n })\n\n // as Spanner does not have unique constraints, we must create table indices from table uniques and mark them as unique.\n if (table.uniques.length > 0) {\n table.uniques.forEach((unique) => {\n const uniqueExist = table.indices.some(\n (index) => index.name === unique.name,\n )\n if (!uniqueExist) {\n table.indices.push(\n new TableIndex({\n name: unique.name,\n columnNames: unique.columnNames,\n isUnique: true,\n }),\n )\n }\n })\n }\n\n if (table.checks.length > 0) {\n const checksSql = table.checks\n .map((check) => {\n const checkName = check.name\n ? check.name\n : this.connection.namingStrategy.checkConstraintName(\n table,\n check.expression!,\n )\n return `CONSTRAINT \\`${checkName}\\` CHECK (${check.expression})`\n })\n .join(\", \")\n\n sql += `, ${checksSql}`\n }\n\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n const foreignKeysSql = table.foreignKeys\n .map((fk) => {\n const columnNames = fk.columnNames\n .map((columnName) => `\\`${columnName}\\``)\n .join(\", \")\n if (!fk.name)\n fk.name = this.connection.namingStrategy.foreignKeyName(\n table,\n fk.columnNames,\n this.getTablePath(fk),\n fk.referencedColumnNames,\n )\n const referencedColumnNames = fk.referencedColumnNames\n .map((columnName) => `\\`${columnName}\\``)\n .join(\", \")\n\n return `CONSTRAINT \\`${\n fk.name\n }\\` FOREIGN KEY (${columnNames}) REFERENCES ${this.escapePath(\n this.getTablePath(fk),\n )} (${referencedColumnNames})`\n })\n .join(\", \")\n\n sql += `, ${foreignKeysSql}`\n }\n\n sql += `)`\n\n const primaryColumns = table.columns.filter(\n (column) => column.isPrimary,\n )\n if (primaryColumns.length > 0) {\n const columnNames = primaryColumns\n .map((column) => this.driver.escape(column.name))\n .join(\", \")\n sql += ` PRIMARY KEY (${columnNames})`\n }\n\n return new Query(sql)\n }\n\n /**\n * Builds drop table sql.\n */\n protected dropTableSql(tableOrPath: Table | string): Query {\n return new Query(`DROP TABLE ${this.escapePath(tableOrPath)}`)\n }\n\n protected createViewSql(view: View): Query {\n const materializedClause = view.materialized ? \"MATERIALIZED \" : \"\"\n const viewName = this.escapePath(view)\n\n const expression =\n typeof view.expression === \"string\"\n ? view.expression\n : view.expression(this.connection).getQuery()\n return new Query(\n `CREATE ${materializedClause}VIEW ${viewName} SQL SECURITY INVOKER AS ${expression}`,\n )\n }\n\n protected async insertViewDefinitionSql(view: View): Promise<Query> {\n let { schema, tableName: name } = this.driver.parseTableName(view)\n\n const type = view.materialized\n ? MetadataTableType.MATERIALIZED_VIEW\n : MetadataTableType.VIEW\n const expression =\n typeof view.expression === \"string\"\n ? view.expression.trim()\n : view.expression(this.connection).getQuery()\n return this.insertTypeormMetadataSql({\n type,\n schema,\n name,\n value: expression,\n })\n }\n\n /**\n * Builds drop view sql.\n */\n protected dropViewSql(view: View): Query {\n const materializedClause = view.materialized ? \"MATERIALIZED \" : \"\"\n return new Query(\n `DROP ${materializedClause}VIEW ${this.escapePath(view)}`,\n )\n }\n\n /**\n * Builds remove view sql.\n */\n protected async deleteViewDefinitionSql(view: View): Promise<Query> {\n let { schema, tableName: name } = this.driver.parseTableName(view)\n\n const type = view.materialized\n ? MetadataTableType.MATERIALIZED_VIEW\n : MetadataTableType.VIEW\n return this.deleteTypeormMetadataSql({ type, schema, name })\n }\n\n /**\n * Builds create index sql.\n */\n protected createIndexSql(table: Table, index: TableIndex): Query {\n const columns = index.columnNames\n .map((columnName) => this.driver.escape(columnName))\n .join(\", \")\n let indexType = \"\"\n if (index.isUnique) indexType += \"UNIQUE \"\n if (index.isNullFiltered) indexType += \"NULL_FILTERED \"\n\n return new Query(\n `CREATE ${indexType}INDEX \\`${index.name}\\` ON ${this.escapePath(\n table,\n )} (${columns})`,\n )\n }\n\n /**\n * Builds drop index sql.\n */\n protected dropIndexSql(\n table: Table,\n indexOrName: TableIndex | string,\n ): Query {\n let indexName =\n indexOrName instanceof TableIndex ? indexOrName.name : indexOrName\n return new Query(`DROP INDEX \\`${indexName}\\``)\n }\n\n /**\n * Builds create check constraint sql.\n */\n protected createCheckConstraintSql(\n table: Table,\n checkConstraint: TableCheck,\n ): Query {\n return new Query(\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \\`${\n checkConstraint.name\n }\\` CHECK (${checkConstraint.expression})`,\n )\n }\n\n /**\n * Builds drop check constraint sql.\n */\n protected dropCheckConstraintSql(\n table: Table,\n checkOrName: TableCheck | string,\n ): Query {\n const checkName =\n checkOrName instanceof TableCheck ? checkOrName.name : checkOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \\`${checkName}\\``,\n )\n }\n\n /**\n * Builds create foreign key sql.\n */\n protected createForeignKeySql(\n table: Table,\n foreignKey: TableForeignKey,\n ): Query {\n const columnNames = foreignKey.columnNames\n .map((column) => this.driver.escape(column))\n .join(\", \")\n const referencedColumnNames = foreignKey.referencedColumnNames\n .map((column) => this.driver.escape(column))\n .join(\",\")\n let sql =\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \\`${\n foreignKey.name\n }\\` FOREIGN KEY (${columnNames}) ` +\n `REFERENCES ${this.escapePath(\n this.getTablePath(foreignKey),\n )} (${referencedColumnNames})`\n\n return new Query(sql)\n }\n\n /**\n * Builds drop foreign key sql.\n */\n protected dropForeignKeySql(\n table: Table,\n foreignKeyOrName: TableForeignKey | string,\n ): Query {\n const foreignKeyName =\n foreignKeyOrName instanceof TableForeignKey\n ? foreignKeyOrName.name\n : foreignKeyOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \\`${foreignKeyName}\\``,\n )\n }\n\n /**\n * Escapes given table or view path.\n */\n protected escapePath(target: Table | View | string): string {\n const { tableName } = this.driver.parseTableName(target)\n return `\\`${tableName}\\``\n }\n\n /**\n * Builds a part of query to create/change a column.\n */\n protected buildCreateColumnSql(column: TableColumn) {\n let c = `${this.driver.escape(\n column.name,\n )} ${this.connection.driver.createFullType(column)}`\n\n // Spanner supports only STORED generated column type\n if (column.generatedType === \"STORED\" && column.asExpression) {\n c += ` AS (${column.asExpression}) STORED`\n } else {\n if (!column.isNullable) c += \" NOT NULL\"\n }\n\n return c\n }\n\n /**\n * Executes sql used special for schema build.\n */\n protected async executeQueries(\n upQueries: Query | Query[],\n downQueries: Query | Query[],\n ): Promise<void> {\n if (upQueries instanceof Query) upQueries = [upQueries]\n if (downQueries instanceof Query) 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 if (this.isDMLQuery(query)) {\n await this.query(query, parameters)\n } else {\n await this.updateDDL(query, parameters)\n }\n }\n }\n\n protected isDMLQuery(query: string): boolean {\n return (\n query.startsWith(\"INSERT\") ||\n query.startsWith(\"UPDATE\") ||\n query.startsWith(\"DELETE\")\n )\n }\n\n /**\n * Change table comment.\n */\n changeTableComment(\n tableOrName: Table | string,\n comment?: string,\n ): Promise<void> {\n throw new TypeORMError(\n `spanner driver does not support change table comment.`,\n )\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/spanner/SpannerQueryRunner.ts"],"names":[],"mappings":"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","file":"SpannerQueryRunner.js","sourcesContent":["import { ObjectLiteral } from \"../../common/ObjectLiteral\"\r\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\r\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\r\nimport { TransactionNotStartedError } from \"../../error/TransactionNotStartedError\"\r\nimport { ColumnType } from \"../types/ColumnTypes\"\r\nimport { ReadStream } from \"../../platform/PlatformTools\"\r\nimport { BaseQueryRunner } from \"../../query-runner/BaseQueryRunner\"\r\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\r\nimport { TableIndexOptions } from \"../../schema-builder/options/TableIndexOptions\"\r\nimport { Table } from \"../../schema-builder/table/Table\"\r\nimport { TableCheck } from \"../../schema-builder/table/TableCheck\"\r\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\r\nimport { TableExclusion } from \"../../schema-builder/table/TableExclusion\"\r\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\"\r\nimport { TableIndex } from \"../../schema-builder/table/TableIndex\"\r\nimport { TableUnique } from \"../../schema-builder/table/TableUnique\"\r\nimport { View } from \"../../schema-builder/view/View\"\r\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\r\nimport { OrmUtils } from \"../../util/OrmUtils\"\r\nimport { Query } from \"../Query\"\r\nimport { IsolationLevel } from \"../types/IsolationLevel\"\r\nimport { ReplicationMode } from \"../types/ReplicationMode\"\r\nimport { TypeORMError } from \"../../error\"\r\nimport { QueryResult } from \"../../query-runner/QueryResult\"\r\nimport { MetadataTableType } from \"../types/MetadataTableType\"\r\nimport { SpannerDriver } from \"./SpannerDriver\"\r\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\r\n\r\n/**\r\n * Runs queries on a single postgres database connection.\r\n */\r\nexport class SpannerQueryRunner extends BaseQueryRunner implements QueryRunner {\r\n // -------------------------------------------------------------------------\r\n // Public Implemented Properties\r\n // -------------------------------------------------------------------------\r\n\r\n /**\r\n * Database driver used by connection.\r\n */\r\n driver: SpannerDriver\r\n\r\n /**\r\n * Real database connection from a connection pool used to perform queries.\r\n */\r\n protected session?: any\r\n\r\n /**\r\n * Transaction currently executed by this session.\r\n */\r\n protected sessionTransaction?: any\r\n\r\n // -------------------------------------------------------------------------\r\n // Constructor\r\n // -------------------------------------------------------------------------\r\n\r\n constructor(driver: SpannerDriver, mode: ReplicationMode) {\r\n super()\r\n this.driver = driver\r\n this.connection = driver.connection\r\n this.mode = mode\r\n this.broadcaster = new Broadcaster(this)\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n // Public Methods\r\n // -------------------------------------------------------------------------\r\n\r\n /**\r\n * Creates/uses database connection from the connection pool to perform further operations.\r\n * Returns obtained database connection.\r\n */\r\n async connect(): Promise<any> {\r\n if (this.session) {\r\n return Promise.resolve(this.session)\r\n }\r\n\r\n const [session] = await this.driver.instanceDatabase.createSession({})\r\n this.session = session\r\n this.sessionTransaction = await session.transaction()\r\n return this.session\r\n }\r\n\r\n /**\r\n * Releases used database connection.\r\n * You cannot use query runner methods once its released.\r\n */\r\n async release(): Promise<void> {\r\n this.isReleased = true\r\n if (this.session) {\r\n await this.session.delete()\r\n }\r\n this.session = undefined\r\n return Promise.resolve()\r\n }\r\n\r\n /**\r\n * Starts transaction.\r\n */\r\n async startTransaction(isolationLevel?: IsolationLevel): Promise<void> {\r\n this.isTransactionActive = true\r\n try {\r\n await this.broadcaster.broadcast(\"BeforeTransactionStart\")\r\n } catch (err) {\r\n this.isTransactionActive = false\r\n throw err\r\n }\r\n\r\n await this.connect()\r\n await this.sessionTransaction.begin()\r\n this.connection.logger.logQuery(\"START TRANSACTION\")\r\n\r\n await this.broadcaster.broadcast(\"AfterTransactionStart\")\r\n }\r\n\r\n /**\r\n * Commits transaction.\r\n * Error will be thrown if transaction was not started.\r\n */\r\n async commitTransaction(): Promise<void> {\r\n if (!this.isTransactionActive || !this.sessionTransaction)\r\n throw new TransactionNotStartedError()\r\n\r\n await this.broadcaster.broadcast(\"BeforeTransactionCommit\")\r\n\r\n await this.sessionTransaction.commit()\r\n this.connection.logger.logQuery(\"COMMIT\")\r\n this.isTransactionActive = false\r\n\r\n await this.broadcaster.broadcast(\"AfterTransactionCommit\")\r\n }\r\n\r\n /**\r\n * Rollbacks transaction.\r\n * Error will be thrown if transaction was not started.\r\n */\r\n async rollbackTransaction(): Promise<void> {\r\n if (!this.isTransactionActive || !this.sessionTransaction)\r\n throw new TransactionNotStartedError()\r\n\r\n await this.broadcaster.broadcast(\"BeforeTransactionRollback\")\r\n\r\n await this.sessionTransaction.rollback()\r\n this.connection.logger.logQuery(\"ROLLBACK\")\r\n this.isTransactionActive = false\r\n\r\n await this.broadcaster.broadcast(\"AfterTransactionRollback\")\r\n }\r\n\r\n /**\r\n * Executes a given SQL query.\r\n */\r\n async query(\r\n query: string,\r\n parameters?: any[],\r\n useStructuredResult: boolean = false,\r\n ): Promise<any> {\r\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\r\n\r\n const broadcasterResult = new BroadcasterResult()\r\n\r\n try {\r\n const queryStartTime = +new Date()\r\n await this.connect()\r\n let rawResult:\r\n | [\r\n any[],\r\n {\r\n queryPlan: null\r\n queryStats: null\r\n rowCountExact: string\r\n rowCount: string\r\n },\r\n { rowType: { fields: [] }; transaction: null },\r\n ]\r\n | undefined = undefined\r\n const isSelect = query.startsWith(\"SELECT\")\r\n const executor =\r\n isSelect && !this.isTransactionActive\r\n ? this.driver.instanceDatabase\r\n : this.sessionTransaction\r\n\r\n if (!this.isTransactionActive && !isSelect) {\r\n await this.sessionTransaction.begin()\r\n }\r\n\r\n try {\r\n this.driver.connection.logger.logQuery(query, parameters, this)\r\n this.broadcaster.broadcastBeforeQueryEvent(\r\n broadcasterResult,\r\n query,\r\n parameters,\r\n )\r\n\r\n rawResult = await executor.run({\r\n sql: query,\r\n params: parameters\r\n ? parameters.reduce((params, value, index) => {\r\n params[\"param\" + index] = value\r\n return params\r\n }, {} as ObjectLiteral)\r\n : undefined,\r\n json: true,\r\n })\r\n if (!this.isTransactionActive && !isSelect) {\r\n await this.sessionTransaction.commit()\r\n }\r\n } catch (error) {\r\n try {\r\n // we throw original error even if rollback thrown an error\r\n if (!this.isTransactionActive && !isSelect)\r\n await this.sessionTransaction.rollback()\r\n } catch (rollbackError) {}\r\n throw error\r\n }\r\n\r\n // log slow queries if maxQueryExecution time is set\r\n const maxQueryExecutionTime =\r\n this.driver.options.maxQueryExecutionTime\r\n const queryEndTime = +new Date()\r\n const queryExecutionTime = queryEndTime - queryStartTime\r\n\r\n this.broadcaster.broadcastAfterQueryEvent(\r\n broadcasterResult,\r\n query,\r\n parameters,\r\n true,\r\n queryExecutionTime,\r\n rawResult,\r\n undefined,\r\n )\r\n\r\n if (\r\n maxQueryExecutionTime &&\r\n queryExecutionTime > maxQueryExecutionTime\r\n )\r\n this.driver.connection.logger.logQuerySlow(\r\n queryExecutionTime,\r\n query,\r\n parameters,\r\n this,\r\n )\r\n\r\n const result = new QueryResult()\r\n\r\n result.raw = rawResult\r\n result.records = rawResult ? rawResult[0] : []\r\n if (rawResult && rawResult[1] && rawResult[1].rowCountExact) {\r\n result.affected = parseInt(rawResult[1].rowCountExact)\r\n }\r\n\r\n if (!useStructuredResult) {\r\n return result.records\r\n }\r\n\r\n return result\r\n } catch (err) {\r\n this.driver.connection.logger.logQueryError(\r\n err,\r\n query,\r\n parameters,\r\n this,\r\n )\r\n this.broadcaster.broadcastAfterQueryEvent(\r\n broadcasterResult,\r\n query,\r\n parameters,\r\n false,\r\n undefined,\r\n undefined,\r\n err,\r\n )\r\n throw new QueryFailedError(query, parameters, err)\r\n } finally {\r\n await broadcasterResult.wait()\r\n }\r\n }\r\n\r\n /**\r\n * Update database schema.\r\n * Used for creating/altering/dropping tables, columns, indexes, etc.\r\n *\r\n * DDL changing queries should be executed by `updateSchema()` method.\r\n */\r\n async updateDDL(query: string, parameters?: any[]): Promise<void> {\r\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\r\n\r\n this.driver.connection.logger.logQuery(query, parameters, this)\r\n try {\r\n const queryStartTime = +new Date()\r\n const [operation] = await this.driver.instanceDatabase.updateSchema(\r\n query,\r\n )\r\n await operation.promise()\r\n // log slow queries if maxQueryExecution time is set\r\n const maxQueryExecutionTime =\r\n this.driver.options.maxQueryExecutionTime\r\n const queryEndTime = +new Date()\r\n const queryExecutionTime = queryEndTime - queryStartTime\r\n if (\r\n maxQueryExecutionTime &&\r\n queryExecutionTime > maxQueryExecutionTime\r\n )\r\n this.driver.connection.logger.logQuerySlow(\r\n queryExecutionTime,\r\n query,\r\n parameters,\r\n this,\r\n )\r\n } catch (err) {\r\n this.driver.connection.logger.logQueryError(\r\n err,\r\n query,\r\n parameters,\r\n this,\r\n )\r\n throw new QueryFailedError(query, parameters, err)\r\n }\r\n }\r\n\r\n /**\r\n * Returns raw data stream.\r\n */\r\n async stream(\r\n query: string,\r\n parameters?: any[],\r\n onEnd?: Function,\r\n onError?: Function,\r\n ): Promise<ReadStream> {\r\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\r\n\r\n try {\r\n this.driver.connection.logger.logQuery(query, parameters, this)\r\n const request = {\r\n sql: query,\r\n params: parameters\r\n ? parameters.reduce((params, value, index) => {\r\n params[\"param\" + index] = value\r\n return params\r\n }, {} as ObjectLiteral)\r\n : undefined,\r\n json: true,\r\n }\r\n const stream = this.driver.instanceDatabase.runStream(request)\r\n\r\n if (onEnd) {\r\n stream.on(\"end\", onEnd)\r\n }\r\n\r\n if (onError) {\r\n stream.on(\"error\", onError)\r\n }\r\n\r\n return stream\r\n } catch (err) {\r\n this.driver.connection.logger.logQueryError(\r\n err,\r\n query,\r\n parameters,\r\n this,\r\n )\r\n throw new QueryFailedError(query, parameters, err)\r\n }\r\n }\r\n\r\n /**\r\n * Returns all available database names including system databases.\r\n */\r\n async getDatabases(): Promise<string[]> {\r\n return Promise.resolve([])\r\n }\r\n\r\n /**\r\n * Returns all available schema names including system schemas.\r\n * If database parameter specified, returns schemas of that database.\r\n */\r\n async getSchemas(database?: string): Promise<string[]> {\r\n return Promise.resolve([])\r\n }\r\n\r\n /**\r\n * Checks if database with the given name exist.\r\n */\r\n async hasDatabase(database: string): Promise<boolean> {\r\n throw new TypeORMError(\r\n `Check database queries are not supported by Spanner driver.`,\r\n )\r\n }\r\n\r\n /**\r\n * Loads currently using database\r\n */\r\n async getCurrentDatabase(): Promise<string> {\r\n throw new TypeORMError(\r\n `Check database queries are not supported by Spanner driver.`,\r\n )\r\n }\r\n\r\n /**\r\n * Checks if schema with the given name exist.\r\n */\r\n async hasSchema(schema: string): Promise<boolean> {\r\n const result = await this.query(\r\n `SELECT * FROM \"information_schema\".\"schemata\" WHERE \"schema_name\" = '${schema}'`,\r\n )\r\n return result.length ? true : false\r\n }\r\n\r\n /**\r\n * Loads currently using database schema\r\n */\r\n async getCurrentSchema(): Promise<string> {\r\n throw new TypeORMError(\r\n `Check schema queries are not supported by Spanner driver.`,\r\n )\r\n }\r\n\r\n /**\r\n * Checks if table with the given name exist in the database.\r\n */\r\n async hasTable(tableOrName: Table | string): Promise<boolean> {\r\n const tableName =\r\n tableOrName instanceof Table ? tableOrName.name : tableOrName\r\n const sql =\r\n `SELECT * FROM \\`INFORMATION_SCHEMA\\`.\\`TABLES\\` ` +\r\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`TABLE_TYPE\\` = 'BASE TABLE' ` +\r\n `AND \\`TABLE_NAME\\` = '${tableName}'`\r\n const result = await this.query(sql)\r\n return result.length ? true : false\r\n }\r\n\r\n /**\r\n * Checks if column with the given name exist in the given table.\r\n */\r\n async hasColumn(\r\n tableOrName: Table | string,\r\n columnName: string,\r\n ): Promise<boolean> {\r\n const tableName =\r\n tableOrName instanceof Table ? tableOrName.name : tableOrName\r\n const sql =\r\n `SELECT * FROM \\`INFORMATION_SCHEMA\\`.\\`COLUMNS\\` ` +\r\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' ` +\r\n `AND \\`TABLE_NAME\\` = '${tableName}' AND \\`COLUMN_NAME\\` = '${columnName}'`\r\n const result = await this.query(sql)\r\n return result.length ? true : false\r\n }\r\n\r\n /**\r\n * Creates a new database.\r\n * Note: Spanner does not support database creation inside a transaction block.\r\n */\r\n async createDatabase(\r\n database: string,\r\n ifNotExist?: boolean,\r\n ): Promise<void> {\r\n if (ifNotExist) {\r\n const databaseAlreadyExists = await this.hasDatabase(database)\r\n\r\n if (databaseAlreadyExists) return Promise.resolve()\r\n }\r\n\r\n const up = `CREATE DATABASE \"${database}\"`\r\n const down = `DROP DATABASE \"${database}\"`\r\n await this.executeQueries(new Query(up), new Query(down))\r\n }\r\n\r\n /**\r\n * Drops database.\r\n * Note: Spanner does not support database dropping inside a transaction block.\r\n */\r\n async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\r\n const up = ifExist\r\n ? `DROP DATABASE IF EXISTS \"${database}\"`\r\n : `DROP DATABASE \"${database}\"`\r\n const down = `CREATE DATABASE \"${database}\"`\r\n await this.executeQueries(new Query(up), new Query(down))\r\n }\r\n\r\n /**\r\n * Creates a new table schema.\r\n */\r\n async createSchema(\r\n schemaPath: string,\r\n ifNotExist?: boolean,\r\n ): Promise<void> {\r\n return Promise.resolve()\r\n }\r\n\r\n /**\r\n * Drops table schema.\r\n */\r\n async dropSchema(\r\n schemaPath: string,\r\n ifExist?: boolean,\r\n isCascade?: boolean,\r\n ): Promise<void> {\r\n return Promise.resolve()\r\n }\r\n\r\n /**\r\n * Creates a new table.\r\n */\r\n async createTable(\r\n table: Table,\r\n ifNotExist: boolean = false,\r\n createForeignKeys: boolean = true,\r\n createIndices: boolean = true,\r\n ): Promise<void> {\r\n if (ifNotExist) {\r\n const isTableExist = await this.hasTable(table)\r\n if (isTableExist) return Promise.resolve()\r\n }\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n\r\n upQueries.push(this.createTableSql(table, createForeignKeys))\r\n downQueries.push(this.dropTableSql(table))\r\n\r\n // if createForeignKeys is true, we must drop created foreign keys in down query.\r\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\r\n if (createForeignKeys)\r\n table.foreignKeys.forEach((foreignKey) =>\r\n downQueries.push(this.dropForeignKeySql(table, foreignKey)),\r\n )\r\n\r\n if (createIndices) {\r\n table.indices.forEach((index) => {\r\n // new index may be passed without name. In this case we generate index name manually.\r\n if (!index.name)\r\n index.name = this.connection.namingStrategy.indexName(\r\n table,\r\n index.columnNames,\r\n index.where,\r\n )\r\n upQueries.push(this.createIndexSql(table, index))\r\n downQueries.push(this.dropIndexSql(table, index))\r\n })\r\n }\r\n\r\n // if table has column with generated type, we must add the expression to the metadata table\r\n const generatedColumns = table.columns.filter(\r\n (column) => column.generatedType && column.asExpression,\r\n )\r\n\r\n for (const column of generatedColumns) {\r\n const insertQuery = this.insertTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n value: column.asExpression,\r\n })\r\n\r\n const deleteQuery = this.deleteTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n })\r\n\r\n upQueries.push(insertQuery)\r\n downQueries.push(deleteQuery)\r\n }\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n }\r\n\r\n /**\r\n * Drops the table.\r\n */\r\n async dropTable(\r\n target: Table | string,\r\n ifExist?: boolean,\r\n dropForeignKeys: boolean = true,\r\n dropIndices: boolean = true,\r\n ): Promise<void> {\r\n // It needs because if table does not exist and dropForeignKeys or dropIndices is true, we don't need\r\n // to perform drop queries for foreign keys and indices.\r\n if (ifExist) {\r\n const isTableExist = await this.hasTable(target)\r\n if (!isTableExist) return Promise.resolve()\r\n }\r\n\r\n // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.\r\n const createForeignKeys: boolean = dropForeignKeys\r\n const tablePath = this.getTablePath(target)\r\n const table = await this.getCachedTable(tablePath)\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n\r\n if (dropIndices) {\r\n table.indices.forEach((index) => {\r\n upQueries.push(this.dropIndexSql(table, index))\r\n downQueries.push(this.createIndexSql(table, index))\r\n })\r\n }\r\n\r\n if (dropForeignKeys)\r\n table.foreignKeys.forEach((foreignKey) =>\r\n upQueries.push(this.dropForeignKeySql(table, foreignKey)),\r\n )\r\n\r\n upQueries.push(this.dropTableSql(table))\r\n downQueries.push(this.createTableSql(table, createForeignKeys))\r\n\r\n // if table had columns with generated type, we must remove the expression from the metadata table\r\n const generatedColumns = table.columns.filter(\r\n (column) => column.generatedType && column.asExpression,\r\n )\r\n\r\n for (const column of generatedColumns) {\r\n const deleteQuery = this.deleteTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n })\r\n\r\n const insertQuery = this.insertTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n value: column.asExpression,\r\n })\r\n\r\n upQueries.push(deleteQuery)\r\n downQueries.push(insertQuery)\r\n }\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n }\r\n\r\n /**\r\n * Creates a new view.\r\n */\r\n async createView(view: View): Promise<void> {\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n upQueries.push(this.createViewSql(view))\r\n upQueries.push(await this.insertViewDefinitionSql(view))\r\n downQueries.push(this.dropViewSql(view))\r\n downQueries.push(await this.deleteViewDefinitionSql(view))\r\n await this.executeQueries(upQueries, downQueries)\r\n }\r\n\r\n /**\r\n * Drops the view.\r\n */\r\n async dropView(target: View | string): Promise<void> {\r\n const viewName = target instanceof View ? target.name : target\r\n const view = await this.getCachedView(viewName)\r\n\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n upQueries.push(await this.deleteViewDefinitionSql(view))\r\n upQueries.push(this.dropViewSql(view))\r\n downQueries.push(await this.insertViewDefinitionSql(view))\r\n downQueries.push(this.createViewSql(view))\r\n await this.executeQueries(upQueries, downQueries)\r\n }\r\n\r\n /**\r\n * Renames the given table.\r\n */\r\n async renameTable(\r\n oldTableOrName: Table | string,\r\n newTableName: string,\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `Rename table queries are not supported by Spanner driver.`,\r\n )\r\n }\r\n\r\n /**\r\n * Creates a new column from the column in the table.\r\n */\r\n async addColumn(\r\n tableOrName: Table | string,\r\n column: TableColumn,\r\n ): Promise<void> {\r\n const table =\r\n tableOrName instanceof Table\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const clonedTable = table.clone()\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD ${this.buildCreateColumnSql(column)}`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP COLUMN ${this.driver.escape(column.name)}`,\r\n ),\r\n )\r\n\r\n // create column index\r\n const columnIndex = clonedTable.indices.find(\r\n (index) =>\r\n index.columnNames.length === 1 &&\r\n index.columnNames[0] === column.name,\r\n )\r\n if (columnIndex) {\r\n upQueries.push(this.createIndexSql(table, columnIndex))\r\n downQueries.push(this.dropIndexSql(table, columnIndex))\r\n } else if (column.isUnique) {\r\n const uniqueIndex = new TableIndex({\r\n name: this.connection.namingStrategy.indexName(table, [\r\n column.name,\r\n ]),\r\n columnNames: [column.name],\r\n isUnique: true,\r\n })\r\n clonedTable.indices.push(uniqueIndex)\r\n clonedTable.uniques.push(\r\n new TableUnique({\r\n name: uniqueIndex.name,\r\n columnNames: uniqueIndex.columnNames,\r\n }),\r\n )\r\n\r\n upQueries.push(this.createIndexSql(table, uniqueIndex))\r\n downQueries.push(this.dropIndexSql(table, uniqueIndex))\r\n }\r\n\r\n if (column.generatedType && column.asExpression) {\r\n const insertQuery = this.insertTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n value: column.asExpression,\r\n })\r\n\r\n const deleteQuery = this.deleteTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n })\r\n\r\n upQueries.push(insertQuery)\r\n downQueries.push(deleteQuery)\r\n }\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n\r\n clonedTable.addColumn(column)\r\n this.replaceCachedTable(table, clonedTable)\r\n }\r\n\r\n /**\r\n * Creates a new columns from the column in the table.\r\n */\r\n async addColumns(\r\n tableOrName: Table | string,\r\n columns: TableColumn[],\r\n ): Promise<void> {\r\n for (const column of columns) {\r\n await this.addColumn(tableOrName, column)\r\n }\r\n }\r\n\r\n /**\r\n * Renames column in the given table.\r\n */\r\n async renameColumn(\r\n tableOrName: Table | string,\r\n oldTableColumnOrName: TableColumn | string,\r\n newTableColumnOrName: TableColumn | string,\r\n ): Promise<void> {\r\n const table =\r\n tableOrName instanceof Table\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const oldColumn =\r\n oldTableColumnOrName instanceof TableColumn\r\n ? oldTableColumnOrName\r\n : table.columns.find((c) => c.name === oldTableColumnOrName)\r\n if (!oldColumn)\r\n throw new TypeORMError(\r\n `Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`,\r\n )\r\n\r\n let newColumn\r\n if (newTableColumnOrName instanceof TableColumn) {\r\n newColumn = newTableColumnOrName\r\n } else {\r\n newColumn = oldColumn.clone()\r\n newColumn.name = newTableColumnOrName\r\n }\r\n\r\n return this.changeColumn(table, oldColumn, newColumn)\r\n }\r\n\r\n /**\r\n * Changes a column in the table.\r\n */\r\n async changeColumn(\r\n tableOrName: Table | string,\r\n oldTableColumnOrName: TableColumn | string,\r\n newColumn: TableColumn,\r\n ): Promise<void> {\r\n const table =\r\n tableOrName instanceof Table\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n let clonedTable = table.clone()\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n\r\n const oldColumn =\r\n oldTableColumnOrName instanceof TableColumn\r\n ? oldTableColumnOrName\r\n : table.columns.find(\r\n (column) => column.name === oldTableColumnOrName,\r\n )\r\n if (!oldColumn)\r\n throw new TypeORMError(\r\n `Column \"${oldTableColumnOrName}\" was not found in the \"${table.name}\" table.`,\r\n )\r\n\r\n if (\r\n oldColumn.name !== newColumn.name ||\r\n oldColumn.type !== newColumn.type ||\r\n oldColumn.length !== newColumn.length ||\r\n oldColumn.isArray !== newColumn.isArray ||\r\n oldColumn.generatedType !== newColumn.generatedType ||\r\n oldColumn.asExpression !== newColumn.asExpression\r\n ) {\r\n // To avoid data conversion, we just recreate column\r\n await this.dropColumn(table, oldColumn)\r\n await this.addColumn(table, newColumn)\r\n\r\n // update cloned table\r\n clonedTable = table.clone()\r\n } else {\r\n if (\r\n newColumn.precision !== oldColumn.precision ||\r\n newColumn.scale !== oldColumn.scale\r\n ) {\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\r\n newColumn.name\r\n }\" TYPE ${this.driver.createFullType(newColumn)}`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(table)} ALTER COLUMN \"${\r\n newColumn.name\r\n }\" TYPE ${this.driver.createFullType(oldColumn)}`,\r\n ),\r\n )\r\n }\r\n\r\n if (oldColumn.isNullable !== newColumn.isNullable) {\r\n if (newColumn.isNullable) {\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ALTER COLUMN \"${oldColumn.name}\" DROP NOT NULL`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ALTER COLUMN \"${oldColumn.name}\" SET NOT NULL`,\r\n ),\r\n )\r\n } else {\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ALTER COLUMN \"${oldColumn.name}\" SET NOT NULL`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ALTER COLUMN \"${oldColumn.name}\" DROP NOT NULL`,\r\n ),\r\n )\r\n }\r\n }\r\n\r\n if (newColumn.isUnique !== oldColumn.isUnique) {\r\n if (newColumn.isUnique === true) {\r\n const uniqueIndex = new TableIndex({\r\n name: this.connection.namingStrategy.indexName(table, [\r\n newColumn.name,\r\n ]),\r\n columnNames: [newColumn.name],\r\n isUnique: true,\r\n })\r\n clonedTable.indices.push(uniqueIndex)\r\n clonedTable.uniques.push(\r\n new TableUnique({\r\n name: uniqueIndex.name,\r\n columnNames: uniqueIndex.columnNames,\r\n }),\r\n )\r\n\r\n upQueries.push(this.createIndexSql(table, uniqueIndex))\r\n downQueries.push(this.dropIndexSql(table, uniqueIndex))\r\n } else {\r\n const uniqueIndex = clonedTable.indices.find((index) => {\r\n return (\r\n index.columnNames.length === 1 &&\r\n index.isUnique === true &&\r\n !!index.columnNames.find(\r\n (columnName) => columnName === newColumn.name,\r\n )\r\n )\r\n })\r\n clonedTable.indices.splice(\r\n clonedTable.indices.indexOf(uniqueIndex!),\r\n 1,\r\n )\r\n\r\n const tableUnique = clonedTable.uniques.find(\r\n (unique) => unique.name === uniqueIndex!.name,\r\n )\r\n clonedTable.uniques.splice(\r\n clonedTable.uniques.indexOf(tableUnique!),\r\n 1,\r\n )\r\n\r\n upQueries.push(this.dropIndexSql(table, uniqueIndex!))\r\n downQueries.push(this.createIndexSql(table, uniqueIndex!))\r\n }\r\n }\r\n }\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n this.replaceCachedTable(table, clonedTable)\r\n }\r\n\r\n /**\r\n * Changes a column in the table.\r\n */\r\n async changeColumns(\r\n tableOrName: Table | string,\r\n changedColumns: { newColumn: TableColumn; oldColumn: TableColumn }[],\r\n ): Promise<void> {\r\n for (const { oldColumn, newColumn } of changedColumns) {\r\n await this.changeColumn(tableOrName, oldColumn, newColumn)\r\n }\r\n }\r\n\r\n /**\r\n * Drops column in the table.\r\n */\r\n async dropColumn(\r\n tableOrName: Table | string,\r\n columnOrName: TableColumn | string,\r\n ): Promise<void> {\r\n const table =\r\n tableOrName instanceof Table\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const column =\r\n columnOrName instanceof TableColumn\r\n ? columnOrName\r\n : table.findColumnByName(columnOrName)\r\n if (!column)\r\n throw new TypeORMError(\r\n `Column \"${columnOrName}\" was not found in table \"${table.name}\"`,\r\n )\r\n\r\n const clonedTable = table.clone()\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n\r\n // drop column index\r\n const columnIndex = clonedTable.indices.find(\r\n (index) =>\r\n index.columnNames.length === 1 &&\r\n index.columnNames[0] === column.name,\r\n )\r\n if (columnIndex) {\r\n clonedTable.indices.splice(\r\n clonedTable.indices.indexOf(columnIndex),\r\n 1,\r\n )\r\n upQueries.push(this.dropIndexSql(table, columnIndex))\r\n downQueries.push(this.createIndexSql(table, columnIndex))\r\n }\r\n\r\n // drop column check\r\n const columnCheck = clonedTable.checks.find(\r\n (check) =>\r\n !!check.columnNames &&\r\n check.columnNames.length === 1 &&\r\n check.columnNames[0] === column.name,\r\n )\r\n if (columnCheck) {\r\n clonedTable.checks.splice(\r\n clonedTable.checks.indexOf(columnCheck),\r\n 1,\r\n )\r\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck))\r\n downQueries.push(this.createCheckConstraintSql(table, columnCheck))\r\n }\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP COLUMN ${this.driver.escape(column.name)}`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD ${this.buildCreateColumnSql(column)}`,\r\n ),\r\n )\r\n\r\n if (column.generatedType && column.asExpression) {\r\n const deleteQuery = this.deleteTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n })\r\n const insertQuery = this.insertTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n value: column.asExpression,\r\n })\r\n\r\n upQueries.push(deleteQuery)\r\n downQueries.push(insertQuery)\r\n }\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n\r\n clonedTable.removeColumn(column)\r\n this.replaceCachedTable(table, clonedTable)\r\n }\r\n\r\n /**\r\n * Drops the columns in the table.\r\n */\r\n async dropColumns(\r\n tableOrName: Table | string,\r\n columns: TableColumn[] | string[],\r\n ): Promise<void> {\r\n for (const column of columns) {\r\n await this.dropColumn(tableOrName, column)\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new primary key.\r\n *\r\n * Not supported in Spanner.\r\n * @see https://cloud.google.com/spanner/docs/schema-and-data-model#notes_about_key_columns\r\n */\r\n async createPrimaryKey(\r\n tableOrName: Table | string,\r\n columnNames: string[],\r\n ): Promise<void> {\r\n throw new Error(\r\n \"The keys of a table can't change; you can't add a key column to an existing table or remove a key column from an existing table.\",\r\n )\r\n }\r\n\r\n /**\r\n * Updates composite primary keys.\r\n */\r\n async updatePrimaryKeys(\r\n tableOrName: Table | string,\r\n columns: TableColumn[],\r\n ): Promise<void> {\r\n throw new Error(\r\n \"The keys of a table can't change; you can't add a key column to an existing table or remove a key column from an existing table.\",\r\n )\r\n }\r\n\r\n /**\r\n * Creates a new primary key.\r\n *\r\n * Not supported in Spanner.\r\n * @see https://cloud.google.com/spanner/docs/schema-and-data-model#notes_about_key_columns\r\n */\r\n async dropPrimaryKey(tableOrName: Table | string): Promise<void> {\r\n throw new Error(\r\n \"The keys of a table can't change; you can't add a key column to an existing table or remove a key column from an existing table.\",\r\n )\r\n }\r\n\r\n /**\r\n * Creates new unique constraint.\r\n */\r\n async createUniqueConstraint(\r\n tableOrName: Table | string,\r\n uniqueConstraint: TableUnique,\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `Spanner does not support unique constraints. Use unique index instead.`,\r\n )\r\n }\r\n\r\n /**\r\n * Creates new unique constraints.\r\n */\r\n async createUniqueConstraints(\r\n tableOrName: Table | string,\r\n uniqueConstraints: TableUnique[],\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `Spanner does not support unique constraints. Use unique index instead.`,\r\n )\r\n }\r\n\r\n /**\r\n * Drops unique constraint.\r\n */\r\n async dropUniqueConstraint(\r\n tableOrName: Table | string,\r\n uniqueOrName: TableUnique | string,\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `Spanner does not support unique constraints. Use unique index instead.`,\r\n )\r\n }\r\n\r\n /**\r\n * Drops unique constraints.\r\n */\r\n async dropUniqueConstraints(\r\n tableOrName: Table | string,\r\n uniqueConstraints: TableUnique[],\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `Spanner does not support unique constraints. Use unique index instead.`,\r\n )\r\n }\r\n\r\n /**\r\n * Creates new check constraint.\r\n */\r\n async createCheckConstraint(\r\n tableOrName: Table | string,\r\n checkConstraint: TableCheck,\r\n ): Promise<void> {\r\n const table =\r\n tableOrName instanceof Table\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n\r\n // new check constraint may be passed without name. In this case we generate unique name manually.\r\n if (!checkConstraint.name)\r\n checkConstraint.name =\r\n this.connection.namingStrategy.checkConstraintName(\r\n table,\r\n checkConstraint.expression!,\r\n )\r\n\r\n const up = this.createCheckConstraintSql(table, checkConstraint)\r\n const down = this.dropCheckConstraintSql(table, checkConstraint)\r\n await this.executeQueries(up, down)\r\n table.addCheckConstraint(checkConstraint)\r\n }\r\n\r\n /**\r\n * Creates new check constraints.\r\n */\r\n async createCheckConstraints(\r\n tableOrName: Table | string,\r\n checkConstraints: TableCheck[],\r\n ): Promise<void> {\r\n const promises = checkConstraints.map((checkConstraint) =>\r\n this.createCheckConstraint(tableOrName, checkConstraint),\r\n )\r\n await Promise.all(promises)\r\n }\r\n\r\n /**\r\n * Drops check constraint.\r\n */\r\n async dropCheckConstraint(\r\n tableOrName: Table | string,\r\n checkOrName: TableCheck | string,\r\n ): Promise<void> {\r\n const table =\r\n tableOrName instanceof Table\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const checkConstraint =\r\n checkOrName instanceof TableCheck\r\n ? checkOrName\r\n : table.checks.find((c) => c.name === checkOrName)\r\n if (!checkConstraint)\r\n throw new TypeORMError(\r\n `Supplied check constraint was not found in table ${table.name}`,\r\n )\r\n\r\n const up = this.dropCheckConstraintSql(table, checkConstraint)\r\n const down = this.createCheckConstraintSql(table, checkConstraint)\r\n await this.executeQueries(up, down)\r\n table.removeCheckConstraint(checkConstraint)\r\n }\r\n\r\n /**\r\n * Drops check constraints.\r\n */\r\n async dropCheckConstraints(\r\n tableOrName: Table | string,\r\n checkConstraints: TableCheck[],\r\n ): Promise<void> {\r\n const promises = checkConstraints.map((checkConstraint) =>\r\n this.dropCheckConstraint(tableOrName, checkConstraint),\r\n )\r\n await Promise.all(promises)\r\n }\r\n\r\n /**\r\n * Creates new exclusion constraint.\r\n */\r\n async createExclusionConstraint(\r\n tableOrName: Table | string,\r\n exclusionConstraint: TableExclusion,\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `Spanner does not support exclusion constraints.`,\r\n )\r\n }\r\n\r\n /**\r\n * Creates new exclusion constraints.\r\n */\r\n async createExclusionConstraints(\r\n tableOrName: Table | string,\r\n exclusionConstraints: TableExclusion[],\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `Spanner does not support exclusion constraints.`,\r\n )\r\n }\r\n\r\n /**\r\n * Drops exclusion constraint.\r\n */\r\n async dropExclusionConstraint(\r\n tableOrName: Table | string,\r\n exclusionOrName: TableExclusion | string,\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `Spanner does not support exclusion constraints.`,\r\n )\r\n }\r\n\r\n /**\r\n * Drops exclusion constraints.\r\n */\r\n async dropExclusionConstraints(\r\n tableOrName: Table | string,\r\n exclusionConstraints: TableExclusion[],\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `Spanner does not support exclusion constraints.`,\r\n )\r\n }\r\n\r\n /**\r\n * Creates a new foreign key.\r\n */\r\n async createForeignKey(\r\n tableOrName: Table | string,\r\n foreignKey: TableForeignKey,\r\n ): Promise<void> {\r\n const table =\r\n tableOrName instanceof Table\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n\r\n // new FK may be passed without name. In this case we generate FK name manually.\r\n if (!foreignKey.name)\r\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(\r\n table,\r\n foreignKey.columnNames,\r\n this.getTablePath(foreignKey),\r\n foreignKey.referencedColumnNames,\r\n )\r\n\r\n const up = this.createForeignKeySql(table, foreignKey)\r\n const down = this.dropForeignKeySql(table, foreignKey)\r\n await this.executeQueries(up, down)\r\n table.addForeignKey(foreignKey)\r\n }\r\n\r\n /**\r\n * Creates a new foreign keys.\r\n */\r\n async createForeignKeys(\r\n tableOrName: Table | string,\r\n foreignKeys: TableForeignKey[],\r\n ): Promise<void> {\r\n for (const foreignKey of foreignKeys) {\r\n await this.createForeignKey(tableOrName, foreignKey)\r\n }\r\n }\r\n\r\n /**\r\n * Drops a foreign key from the table.\r\n */\r\n async dropForeignKey(\r\n tableOrName: Table | string,\r\n foreignKeyOrName: TableForeignKey | string,\r\n ): Promise<void> {\r\n const table =\r\n tableOrName instanceof Table\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const foreignKey =\r\n foreignKeyOrName instanceof TableForeignKey\r\n ? foreignKeyOrName\r\n : table.foreignKeys.find((fk) => fk.name === foreignKeyOrName)\r\n if (!foreignKey)\r\n throw new TypeORMError(\r\n `Supplied foreign key was not found in table ${table.name}`,\r\n )\r\n\r\n const up = this.dropForeignKeySql(table, foreignKey)\r\n const down = this.createForeignKeySql(table, foreignKey)\r\n await this.executeQueries(up, down)\r\n table.removeForeignKey(foreignKey)\r\n }\r\n\r\n /**\r\n * Drops a foreign keys from the table.\r\n */\r\n async dropForeignKeys(\r\n tableOrName: Table | string,\r\n foreignKeys: TableForeignKey[],\r\n ): Promise<void> {\r\n for (const foreignKey of foreignKeys) {\r\n await this.dropForeignKey(tableOrName, foreignKey)\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new index.\r\n */\r\n async createIndex(\r\n tableOrName: Table | string,\r\n index: TableIndex,\r\n ): Promise<void> {\r\n const table =\r\n tableOrName instanceof Table\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n\r\n // new index may be passed without name. In this case we generate index name manually.\r\n if (!index.name) index.name = this.generateIndexName(table, index)\r\n\r\n const up = this.createIndexSql(table, index)\r\n const down = this.dropIndexSql(table, index)\r\n await this.executeQueries(up, down)\r\n table.addIndex(index)\r\n }\r\n\r\n /**\r\n * Creates a new indices\r\n */\r\n async createIndices(\r\n tableOrName: Table | string,\r\n indices: TableIndex[],\r\n ): Promise<void> {\r\n for (const index of indices) {\r\n await this.createIndex(tableOrName, index)\r\n }\r\n }\r\n\r\n /**\r\n * Drops an index from the table.\r\n */\r\n async dropIndex(\r\n tableOrName: Table | string,\r\n indexOrName: TableIndex | string,\r\n ): Promise<void> {\r\n const table =\r\n tableOrName instanceof Table\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const index =\r\n indexOrName instanceof TableIndex\r\n ? indexOrName\r\n : table.indices.find((i) => i.name === indexOrName)\r\n if (!index)\r\n throw new TypeORMError(\r\n `Supplied index ${indexOrName} was not found in table ${table.name}`,\r\n )\r\n\r\n // new index may be passed without name. In this case we generate index name manually.\r\n if (!index.name) index.name = this.generateIndexName(table, index)\r\n\r\n const up = this.dropIndexSql(table, index)\r\n const down = this.createIndexSql(table, index)\r\n await this.executeQueries(up, down)\r\n table.removeIndex(index)\r\n }\r\n\r\n /**\r\n * Drops an indices from the table.\r\n */\r\n async dropIndices(\r\n tableOrName: Table | string,\r\n indices: TableIndex[],\r\n ): Promise<void> {\r\n for (const index of indices) {\r\n await this.dropIndex(tableOrName, index)\r\n }\r\n }\r\n\r\n /**\r\n * Clears all table contents.\r\n * Spanner does not support TRUNCATE TABLE statement, so we use DELETE FROM.\r\n */\r\n async clearTable(tableName: string): Promise<void> {\r\n await this.query(`DELETE FROM ${this.escapePath(tableName)} WHERE true`)\r\n }\r\n\r\n /**\r\n * Removes all tables from the currently connected database.\r\n */\r\n async clearDatabase(): Promise<void> {\r\n // drop index queries\r\n const selectIndexDropsQuery =\r\n `SELECT concat('DROP INDEX \\`', INDEX_NAME, '\\`') AS \\`query\\` ` +\r\n `FROM \\`INFORMATION_SCHEMA\\`.\\`INDEXES\\` ` +\r\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`INDEX_TYPE\\` = 'INDEX' AND \\`SPANNER_IS_MANAGED\\` = false`\r\n const dropIndexQueries: ObjectLiteral[] = await this.query(\r\n selectIndexDropsQuery,\r\n )\r\n\r\n // drop foreign key queries\r\n const selectFKDropsQuery =\r\n `SELECT concat('ALTER TABLE \\`', TABLE_NAME, '\\`', ' DROP CONSTRAINT \\`', CONSTRAINT_NAME, '\\`') AS \\`query\\` ` +\r\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLE_CONSTRAINTS\\` ` +\r\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`CONSTRAINT_TYPE\\` = 'FOREIGN KEY'`\r\n const dropFKQueries: ObjectLiteral[] = await this.query(\r\n selectFKDropsQuery,\r\n )\r\n\r\n // drop view queries\r\n // const selectViewDropsQuery = `SELECT concat('DROP VIEW \\`', TABLE_NAME, '\\`') AS \\`query\\` FROM \\`INFORMATION_SCHEMA\\`.\\`VIEWS\\``\r\n // const dropViewQueries: ObjectLiteral[] = await this.query(\r\n // selectViewDropsQuery,\r\n // )\r\n\r\n // drop table queries\r\n const dropTablesQuery =\r\n `SELECT concat('DROP TABLE \\`', TABLE_NAME, '\\`') AS \\`query\\` ` +\r\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLES\\` ` +\r\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`TABLE_TYPE\\` = 'BASE TABLE'`\r\n const dropTableQueries: ObjectLiteral[] = await this.query(\r\n dropTablesQuery,\r\n )\r\n\r\n if (\r\n !dropIndexQueries.length &&\r\n !dropFKQueries.length &&\r\n // !dropViewQueries.length &&\r\n !dropTableQueries.length\r\n )\r\n return\r\n\r\n const isAnotherTransactionActive = this.isTransactionActive\r\n if (!isAnotherTransactionActive) await this.startTransaction()\r\n try {\r\n for (let query of dropIndexQueries) {\r\n await this.updateDDL(query[\"query\"])\r\n }\r\n for (let query of dropFKQueries) {\r\n await this.updateDDL(query[\"query\"])\r\n }\r\n\r\n // for (let query of dropViewQueries) {\r\n // await this.updateDDL(query[\"query\"])\r\n // }\r\n\r\n for (let query of dropTableQueries) {\r\n await this.updateDDL(query[\"query\"])\r\n }\r\n\r\n await this.commitTransaction()\r\n } catch (error) {\r\n try {\r\n // we throw original error even if rollback thrown an error\r\n if (!isAnotherTransactionActive)\r\n await this.rollbackTransaction()\r\n } catch (rollbackError) {}\r\n throw error\r\n }\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n // Override Methods\r\n // -------------------------------------------------------------------------\r\n\r\n /**\r\n * Executes up sql queries.\r\n */\r\n async executeMemoryUpSql(): Promise<void> {\r\n for (const { query, parameters } of this.sqlInMemory.upQueries) {\r\n if (this.isDMLQuery(query)) {\r\n await this.query(query, parameters)\r\n } else {\r\n await this.updateDDL(query, parameters)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Executes down sql queries.\r\n */\r\n async executeMemoryDownSql(): Promise<void> {\r\n for (const {\r\n query,\r\n parameters,\r\n } of this.sqlInMemory.downQueries.reverse()) {\r\n if (this.isDMLQuery(query)) {\r\n await this.query(query, parameters)\r\n } else {\r\n await this.updateDDL(query, parameters)\r\n }\r\n }\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n // Protected Methods\r\n // -------------------------------------------------------------------------\r\n\r\n protected async loadViews(viewNames?: string[]): Promise<View[]> {\r\n // const hasTable = await this.hasTable(this.getTypeormMetadataTableName())\r\n // if (!hasTable) {\r\n // return []\r\n // }\r\n //\r\n // if (!viewNames) {\r\n // viewNames = []\r\n // }\r\n //\r\n // const escapedViewNames = viewNames\r\n // .map((viewName) => `'${viewName}'`)\r\n // .join(\", \")\r\n //\r\n // const query =\r\n // `SELECT \\`T\\`.*, \\`V\\`.\\`VIEW_DEFINITION\\` FROM ${this.escapePath(\r\n // this.getTypeormMetadataTableName(),\r\n // )} \\`T\\` ` +\r\n // `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`VIEWS\\` \\`V\\` ON \\`V\\`.\\`TABLE_NAME\\` = \\`T\\`.\\`NAME\\` ` +\r\n // `WHERE \\`T\\`.\\`TYPE\\` = '${MetadataTableType.VIEW}' ${\r\n // viewNames.length\r\n // ? ` AND \\`T\\`.\\`NAME\\` IN (${escapedViewNames})`\r\n // : \"\"\r\n // }`\r\n // const dbViews = await this.query(query)\r\n // return dbViews.map((dbView: any) => {\r\n // const view = new View()\r\n // view.database = dbView[\"NAME\"]\r\n // view.name = this.driver.buildTableName(dbView[\"NAME\"])\r\n // view.expression = dbView[\"NAME\"]\r\n // return view\r\n // })\r\n\r\n return Promise.resolve([])\r\n }\r\n\r\n /**\r\n * Loads all tables (with given names) from the database and creates a Table from them.\r\n */\r\n protected async loadTables(tableNames?: string[]): Promise<Table[]> {\r\n if (tableNames && tableNames.length === 0) {\r\n return []\r\n }\r\n\r\n const dbTables: { TABLE_NAME: string }[] = []\r\n\r\n if (!tableNames || !tableNames.length) {\r\n // Since we don't have any of this data we have to do a scan\r\n const tablesSql =\r\n `SELECT \\`TABLE_NAME\\` ` +\r\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLES\\` ` +\r\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`TABLE_TYPE\\` = 'BASE TABLE'`\r\n dbTables.push(...(await this.query(tablesSql)))\r\n } else {\r\n const tablesSql =\r\n `SELECT \\`TABLE_NAME\\` ` +\r\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLES\\` ` +\r\n `WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`TABLE_TYPE\\` = 'BASE TABLE' ` +\r\n `AND \\`TABLE_NAME\\` IN (${tableNames\r\n .map((tableName) => `'${tableName}'`)\r\n .join(\", \")})`\r\n\r\n dbTables.push(...(await this.query(tablesSql)))\r\n }\r\n\r\n // if tables were not found in the db, no need to proceed\r\n if (!dbTables.length) return []\r\n\r\n const loadedTableNames = dbTables\r\n .map((dbTable) => `'${dbTable.TABLE_NAME}'`)\r\n .join(\", \")\r\n\r\n const columnsSql = `SELECT * FROM \\`INFORMATION_SCHEMA\\`.\\`COLUMNS\\` WHERE \\`TABLE_CATALOG\\` = '' AND \\`TABLE_SCHEMA\\` = '' AND \\`TABLE_NAME\\` IN (${loadedTableNames})`\r\n\r\n const primaryKeySql =\r\n `SELECT \\`KCU\\`.\\`TABLE_NAME\\`, \\`KCU\\`.\\`COLUMN_NAME\\` ` +\r\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLE_CONSTRAINTS\\` \\`TC\\` ` +\r\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`KEY_COLUMN_USAGE\\` \\`KCU\\` ON \\`KCU\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\r\n `WHERE \\`TC\\`.\\`TABLE_CATALOG\\` = '' AND \\`TC\\`.\\`TABLE_SCHEMA\\` = '' AND \\`TC\\`.\\`CONSTRAINT_TYPE\\` = 'PRIMARY KEY' ` +\r\n `AND \\`TC\\`.\\`TABLE_NAME\\` IN (${loadedTableNames})`\r\n\r\n const indicesSql =\r\n `SELECT \\`I\\`.\\`TABLE_NAME\\`, \\`I\\`.\\`INDEX_NAME\\`, \\`I\\`.\\`IS_UNIQUE\\`, \\`I\\`.\\`IS_NULL_FILTERED\\`, \\`IC\\`.\\`COLUMN_NAME\\` ` +\r\n `FROM \\`INFORMATION_SCHEMA\\`.\\`INDEXES\\` \\`I\\` ` +\r\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`INDEX_COLUMNS\\` \\`IC\\` ON \\`IC\\`.\\`INDEX_NAME\\` = \\`I\\`.\\`INDEX_NAME\\` ` +\r\n `AND \\`IC\\`.\\`TABLE_NAME\\` = \\`I\\`.\\`TABLE_NAME\\` ` +\r\n `WHERE \\`I\\`.\\`TABLE_CATALOG\\` = '' AND \\`I\\`.\\`TABLE_SCHEMA\\` = '' AND \\`I\\`.\\`TABLE_NAME\\` IN (${loadedTableNames}) ` +\r\n `AND \\`I\\`.\\`INDEX_TYPE\\` = 'INDEX' AND \\`I\\`.\\`SPANNER_IS_MANAGED\\` = false`\r\n\r\n const checksSql =\r\n `SELECT \\`TC\\`.\\`TABLE_NAME\\`, \\`TC\\`.\\`CONSTRAINT_NAME\\`, \\`CC\\`.\\`CHECK_CLAUSE\\`, \\`CCU\\`.\\`COLUMN_NAME\\`` +\r\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLE_CONSTRAINTS\\` \\`TC\\` ` +\r\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`CONSTRAINT_COLUMN_USAGE\\` \\`CCU\\` ON \\`CCU\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\r\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`CHECK_CONSTRAINTS\\` \\`CC\\` ON \\`CC\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\r\n `WHERE \\`TC\\`.\\`TABLE_CATALOG\\` = '' AND \\`TC\\`.\\`TABLE_SCHEMA\\` = '' AND \\`TC\\`.\\`CONSTRAINT_TYPE\\` = 'CHECK' ` +\r\n `AND \\`TC\\`.\\`TABLE_NAME\\` IN (${loadedTableNames}) AND \\`TC\\`.\\`CONSTRAINT_NAME\\` NOT LIKE 'CK_IS_NOT_NULL%'`\r\n\r\n const foreignKeysSql =\r\n `SELECT \\`TC\\`.\\`TABLE_NAME\\`, \\`TC\\`.\\`CONSTRAINT_NAME\\`, \\`KCU\\`.\\`COLUMN_NAME\\`, ` +\r\n `\\`CTU\\`.\\`TABLE_NAME\\` AS \\`REFERENCED_TABLE_NAME\\`, \\`CCU\\`.\\`COLUMN_NAME\\` AS \\`REFERENCED_COLUMN_NAME\\`, ` +\r\n `\\`RC\\`.\\`UPDATE_RULE\\`, \\`RC\\`.\\`DELETE_RULE\\` ` +\r\n `FROM \\`INFORMATION_SCHEMA\\`.\\`TABLE_CONSTRAINTS\\` \\`TC\\` ` +\r\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`KEY_COLUMN_USAGE\\` \\`KCU\\` ON \\`KCU\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\r\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`CONSTRAINT_TABLE_USAGE\\` \\`CTU\\` ON \\`CTU\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\r\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`REFERENTIAL_CONSTRAINTS\\` \\`RC\\` ON \\`RC\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\r\n `INNER JOIN \\`INFORMATION_SCHEMA\\`.\\`CONSTRAINT_COLUMN_USAGE\\` \\`CCU\\` ON \\`CCU\\`.\\`CONSTRAINT_NAME\\` = \\`TC\\`.\\`CONSTRAINT_NAME\\` ` +\r\n `WHERE \\`TC\\`.\\`TABLE_CATALOG\\` = '' AND \\`TC\\`.\\`TABLE_SCHEMA\\` = '' AND \\`TC\\`.\\`CONSTRAINT_TYPE\\` = 'FOREIGN KEY' ` +\r\n `AND \\`TC\\`.\\`TABLE_NAME\\` IN (${loadedTableNames})`\r\n\r\n const [\r\n dbColumns,\r\n dbPrimaryKeys,\r\n dbIndices,\r\n dbChecks,\r\n dbForeignKeys,\r\n ]: ObjectLiteral[][] = await Promise.all([\r\n this.query(columnsSql),\r\n this.query(primaryKeySql),\r\n this.query(indicesSql),\r\n this.query(checksSql),\r\n this.query(foreignKeysSql),\r\n ])\r\n\r\n // create tables for loaded tables\r\n return Promise.all(\r\n dbTables.map(async (dbTable) => {\r\n const table = new Table()\r\n\r\n table.name = this.driver.buildTableName(dbTable[\"TABLE_NAME\"])\r\n\r\n // create columns from the loaded columns\r\n table.columns = await Promise.all(\r\n dbColumns\r\n .filter(\r\n (dbColumn) =>\r\n dbColumn[\"TABLE_NAME\"] ===\r\n dbTable[\"TABLE_NAME\"],\r\n )\r\n .map(async (dbColumn) => {\r\n const columnUniqueIndices = dbIndices.filter(\r\n (dbIndex) => {\r\n return (\r\n dbIndex[\"TABLE_NAME\"] ===\r\n dbTable[\"TABLE_NAME\"] &&\r\n dbIndex[\"COLUMN_NAME\"] ===\r\n dbColumn[\"COLUMN_NAME\"] &&\r\n dbIndex[\"IS_UNIQUE\"] === true\r\n )\r\n },\r\n )\r\n\r\n const tableMetadata =\r\n this.connection.entityMetadatas.find(\r\n (metadata) =>\r\n this.getTablePath(table) ===\r\n this.getTablePath(metadata),\r\n )\r\n const hasIgnoredIndex =\r\n columnUniqueIndices.length > 0 &&\r\n tableMetadata &&\r\n tableMetadata.indices.some((index) => {\r\n return columnUniqueIndices.some(\r\n (uniqueIndex) => {\r\n return (\r\n index.name ===\r\n uniqueIndex[\"INDEX_NAME\"] &&\r\n index.synchronize === false\r\n )\r\n },\r\n )\r\n })\r\n\r\n const isConstraintComposite =\r\n columnUniqueIndices.every((uniqueIndex) => {\r\n return dbIndices.some(\r\n (dbIndex) =>\r\n dbIndex[\"INDEX_NAME\"] ===\r\n uniqueIndex[\"INDEX_NAME\"] &&\r\n dbIndex[\"COLUMN_NAME\"] !==\r\n dbColumn[\"COLUMN_NAME\"],\r\n )\r\n })\r\n\r\n const tableColumn = new TableColumn()\r\n tableColumn.name = dbColumn[\"COLUMN_NAME\"]\r\n\r\n let fullType =\r\n dbColumn[\"SPANNER_TYPE\"].toLowerCase()\r\n if (fullType.indexOf(\"array\") !== -1) {\r\n tableColumn.isArray = true\r\n fullType = fullType.substring(\r\n fullType.indexOf(\"<\") + 1,\r\n fullType.indexOf(\">\"),\r\n )\r\n }\r\n\r\n if (fullType.indexOf(\"(\") !== -1) {\r\n tableColumn.type = fullType.substring(\r\n 0,\r\n fullType.indexOf(\"(\"),\r\n )\r\n } else {\r\n tableColumn.type = fullType\r\n }\r\n\r\n if (\r\n this.driver.withLengthColumnTypes.indexOf(\r\n tableColumn.type as ColumnType,\r\n ) !== -1\r\n ) {\r\n tableColumn.length = fullType.substring(\r\n fullType.indexOf(\"(\") + 1,\r\n fullType.indexOf(\")\"),\r\n )\r\n }\r\n\r\n if (dbColumn[\"IS_GENERATED\"] === \"ALWAYS\") {\r\n tableColumn.asExpression =\r\n dbColumn[\"GENERATION_EXPRESSION\"]\r\n tableColumn.generatedType = \"STORED\"\r\n\r\n // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.\r\n const asExpressionQuery =\r\n this.selectTypeormMetadataSql({\r\n table: dbTable[\"TABLE_NAME\"],\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: tableColumn.name,\r\n })\r\n\r\n const results = await this.query(\r\n asExpressionQuery.query,\r\n asExpressionQuery.parameters,\r\n )\r\n\r\n if (results[0] && results[0].value) {\r\n tableColumn.asExpression = results[0].value\r\n } else {\r\n tableColumn.asExpression = \"\"\r\n }\r\n }\r\n\r\n tableColumn.isUnique =\r\n columnUniqueIndices.length > 0 &&\r\n !hasIgnoredIndex &&\r\n !isConstraintComposite\r\n tableColumn.isNullable =\r\n dbColumn[\"IS_NULLABLE\"] === \"YES\"\r\n tableColumn.isPrimary = dbPrimaryKeys.some(\r\n (dbPrimaryKey) => {\r\n return (\r\n dbPrimaryKey[\"TABLE_NAME\"] ===\r\n dbColumn[\"TABLE_NAME\"] &&\r\n dbPrimaryKey[\"COLUMN_NAME\"] ===\r\n dbColumn[\"COLUMN_NAME\"]\r\n )\r\n },\r\n )\r\n\r\n return tableColumn\r\n }),\r\n )\r\n\r\n const tableForeignKeys = dbForeignKeys.filter(\r\n (dbForeignKey) => {\r\n return (\r\n dbForeignKey[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"]\r\n )\r\n },\r\n )\r\n\r\n table.foreignKeys = OrmUtils.uniq(\r\n tableForeignKeys,\r\n (dbForeignKey) => dbForeignKey[\"CONSTRAINT_NAME\"],\r\n ).map((dbForeignKey) => {\r\n const foreignKeys = tableForeignKeys.filter(\r\n (dbFk) =>\r\n dbFk[\"CONSTRAINT_NAME\"] ===\r\n dbForeignKey[\"CONSTRAINT_NAME\"],\r\n )\r\n return new TableForeignKey({\r\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\r\n columnNames: OrmUtils.uniq(\r\n foreignKeys.map((dbFk) => dbFk[\"COLUMN_NAME\"]),\r\n ),\r\n referencedDatabase:\r\n dbForeignKey[\"REFERENCED_TABLE_SCHEMA\"],\r\n referencedTableName:\r\n dbForeignKey[\"REFERENCED_TABLE_NAME\"],\r\n referencedColumnNames: OrmUtils.uniq(\r\n foreignKeys.map(\r\n (dbFk) => dbFk[\"REFERENCED_COLUMN_NAME\"],\r\n ),\r\n ),\r\n onDelete: dbForeignKey[\"DELETE_RULE\"],\r\n onUpdate: dbForeignKey[\"UPDATE_RULE\"],\r\n })\r\n })\r\n\r\n const tableIndices = dbIndices.filter(\r\n (dbIndex) =>\r\n dbIndex[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"],\r\n )\r\n\r\n table.indices = OrmUtils.uniq(\r\n tableIndices,\r\n (dbIndex) => dbIndex[\"INDEX_NAME\"],\r\n ).map((constraint) => {\r\n const indices = tableIndices.filter((index) => {\r\n return index[\"INDEX_NAME\"] === constraint[\"INDEX_NAME\"]\r\n })\r\n\r\n return new TableIndex(<TableIndexOptions>{\r\n table: table,\r\n name: constraint[\"INDEX_NAME\"],\r\n columnNames: indices.map((i) => i[\"COLUMN_NAME\"]),\r\n isUnique: constraint[\"IS_UNIQUE\"],\r\n isNullFiltered: constraint[\"IS_NULL_FILTERED\"],\r\n })\r\n })\r\n\r\n const tableChecks = dbChecks.filter(\r\n (dbCheck) =>\r\n dbCheck[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"],\r\n )\r\n\r\n table.checks = OrmUtils.uniq(\r\n tableChecks,\r\n (dbIndex) => dbIndex[\"CONSTRAINT_NAME\"],\r\n ).map((constraint) => {\r\n const checks = tableChecks.filter(\r\n (dbC) =>\r\n dbC[\"CONSTRAINT_NAME\"] ===\r\n constraint[\"CONSTRAINT_NAME\"],\r\n )\r\n return new TableCheck({\r\n name: constraint[\"CONSTRAINT_NAME\"],\r\n columnNames: checks.map((c) => c[\"COLUMN_NAME\"]),\r\n expression: constraint[\"CHECK_CLAUSE\"],\r\n })\r\n })\r\n\r\n return table\r\n }),\r\n )\r\n }\r\n\r\n /**\r\n * Builds create table sql.\r\n */\r\n protected createTableSql(table: Table, createForeignKeys?: boolean): Query {\r\n const columnDefinitions = table.columns\r\n .map((column) => this.buildCreateColumnSql(column))\r\n .join(\", \")\r\n let sql = `CREATE TABLE ${this.escapePath(table)} (${columnDefinitions}`\r\n\r\n // we create unique indexes instead of unique constraints, because Spanner does not have unique constraints.\r\n // if we mark column as Unique, it means that we create UNIQUE INDEX.\r\n table.columns\r\n .filter((column) => column.isUnique)\r\n .forEach((column) => {\r\n const isUniqueIndexExist = table.indices.some((index) => {\r\n return (\r\n index.columnNames.length === 1 &&\r\n !!index.isUnique &&\r\n index.columnNames.indexOf(column.name) !== -1\r\n )\r\n })\r\n const isUniqueConstraintExist = table.uniques.some((unique) => {\r\n return (\r\n unique.columnNames.length === 1 &&\r\n unique.columnNames.indexOf(column.name) !== -1\r\n )\r\n })\r\n if (!isUniqueIndexExist && !isUniqueConstraintExist)\r\n table.indices.push(\r\n new TableIndex({\r\n name: this.connection.namingStrategy.uniqueConstraintName(\r\n table,\r\n [column.name],\r\n ),\r\n columnNames: [column.name],\r\n isUnique: true,\r\n }),\r\n )\r\n })\r\n\r\n // as Spanner does not have unique constraints, we must create table indices from table uniques and mark them as unique.\r\n if (table.uniques.length > 0) {\r\n table.uniques.forEach((unique) => {\r\n const uniqueExist = table.indices.some(\r\n (index) => index.name === unique.name,\r\n )\r\n if (!uniqueExist) {\r\n table.indices.push(\r\n new TableIndex({\r\n name: unique.name,\r\n columnNames: unique.columnNames,\r\n isUnique: true,\r\n }),\r\n )\r\n }\r\n })\r\n }\r\n\r\n if (table.checks.length > 0) {\r\n const checksSql = table.checks\r\n .map((check) => {\r\n const checkName = check.name\r\n ? check.name\r\n : this.connection.namingStrategy.checkConstraintName(\r\n table,\r\n check.expression!,\r\n )\r\n return `CONSTRAINT \\`${checkName}\\` CHECK (${check.expression})`\r\n })\r\n .join(\", \")\r\n\r\n sql += `, ${checksSql}`\r\n }\r\n\r\n if (table.foreignKeys.length > 0 && createForeignKeys) {\r\n const foreignKeysSql = table.foreignKeys\r\n .map((fk) => {\r\n const columnNames = fk.columnNames\r\n .map((columnName) => `\\`${columnName}\\``)\r\n .join(\", \")\r\n if (!fk.name)\r\n fk.name = this.connection.namingStrategy.foreignKeyName(\r\n table,\r\n fk.columnNames,\r\n this.getTablePath(fk),\r\n fk.referencedColumnNames,\r\n )\r\n const referencedColumnNames = fk.referencedColumnNames\r\n .map((columnName) => `\\`${columnName}\\``)\r\n .join(\", \")\r\n\r\n return `CONSTRAINT \\`${\r\n fk.name\r\n }\\` FOREIGN KEY (${columnNames}) REFERENCES ${this.escapePath(\r\n this.getTablePath(fk),\r\n )} (${referencedColumnNames})`\r\n })\r\n .join(\", \")\r\n\r\n sql += `, ${foreignKeysSql}`\r\n }\r\n\r\n sql += `)`\r\n\r\n const primaryColumns = table.columns.filter(\r\n (column) => column.isPrimary,\r\n )\r\n if (primaryColumns.length > 0) {\r\n const columnNames = primaryColumns\r\n .map((column) => this.driver.escape(column.name))\r\n .join(\", \")\r\n sql += ` PRIMARY KEY (${columnNames})`\r\n }\r\n\r\n return new Query(sql)\r\n }\r\n\r\n /**\r\n * Builds drop table sql.\r\n */\r\n protected dropTableSql(tableOrPath: Table | string): Query {\r\n return new Query(`DROP TABLE ${this.escapePath(tableOrPath)}`)\r\n }\r\n\r\n protected createViewSql(view: View): Query {\r\n const materializedClause = view.materialized ? \"MATERIALIZED \" : \"\"\r\n const viewName = this.escapePath(view)\r\n\r\n const expression =\r\n typeof view.expression === \"string\"\r\n ? view.expression\r\n : view.expression(this.connection).getQuery()\r\n return new Query(\r\n `CREATE ${materializedClause}VIEW ${viewName} SQL SECURITY INVOKER AS ${expression}`,\r\n )\r\n }\r\n\r\n protected async insertViewDefinitionSql(view: View): Promise<Query> {\r\n let { schema, tableName: name } = this.driver.parseTableName(view)\r\n\r\n const type = view.materialized\r\n ? MetadataTableType.MATERIALIZED_VIEW\r\n : MetadataTableType.VIEW\r\n const expression =\r\n typeof view.expression === \"string\"\r\n ? view.expression.trim()\r\n : view.expression(this.connection).getQuery()\r\n return this.insertTypeormMetadataSql({\r\n type,\r\n schema,\r\n name,\r\n value: expression,\r\n })\r\n }\r\n\r\n /**\r\n * Builds drop view sql.\r\n */\r\n protected dropViewSql(view: View): Query {\r\n const materializedClause = view.materialized ? \"MATERIALIZED \" : \"\"\r\n return new Query(\r\n `DROP ${materializedClause}VIEW ${this.escapePath(view)}`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds remove view sql.\r\n */\r\n protected async deleteViewDefinitionSql(view: View): Promise<Query> {\r\n let { schema, tableName: name } = this.driver.parseTableName(view)\r\n\r\n const type = view.materialized\r\n ? MetadataTableType.MATERIALIZED_VIEW\r\n : MetadataTableType.VIEW\r\n return this.deleteTypeormMetadataSql({ type, schema, name })\r\n }\r\n\r\n /**\r\n * Builds create index sql.\r\n */\r\n protected createIndexSql(table: Table, index: TableIndex): Query {\r\n const columns = index.columnNames\r\n .map((columnName) => this.driver.escape(columnName))\r\n .join(\", \")\r\n let indexType = \"\"\r\n if (index.isUnique) indexType += \"UNIQUE \"\r\n if (index.isNullFiltered) indexType += \"NULL_FILTERED \"\r\n\r\n return new Query(\r\n `CREATE ${indexType}INDEX \\`${index.name}\\` ON ${this.escapePath(\r\n table,\r\n )} (${columns})`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds drop index sql.\r\n */\r\n protected dropIndexSql(\r\n table: Table,\r\n indexOrName: TableIndex | string,\r\n ): Query {\r\n let indexName =\r\n indexOrName instanceof TableIndex ? indexOrName.name : indexOrName\r\n return new Query(`DROP INDEX \\`${indexName}\\``)\r\n }\r\n\r\n /**\r\n * Builds create check constraint sql.\r\n */\r\n protected createCheckConstraintSql(\r\n table: Table,\r\n checkConstraint: TableCheck,\r\n ): Query {\r\n return new Query(\r\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \\`${\r\n checkConstraint.name\r\n }\\` CHECK (${checkConstraint.expression})`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds drop check constraint sql.\r\n */\r\n protected dropCheckConstraintSql(\r\n table: Table,\r\n checkOrName: TableCheck | string,\r\n ): Query {\r\n const checkName =\r\n checkOrName instanceof TableCheck ? checkOrName.name : checkOrName\r\n return new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \\`${checkName}\\``,\r\n )\r\n }\r\n\r\n /**\r\n * Builds create foreign key sql.\r\n */\r\n protected createForeignKeySql(\r\n table: Table,\r\n foreignKey: TableForeignKey,\r\n ): Query {\r\n const columnNames = foreignKey.columnNames\r\n .map((column) => this.driver.escape(column))\r\n .join(\", \")\r\n const referencedColumnNames = foreignKey.referencedColumnNames\r\n .map((column) => this.driver.escape(column))\r\n .join(\",\")\r\n let sql =\r\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \\`${\r\n foreignKey.name\r\n }\\` FOREIGN KEY (${columnNames}) ` +\r\n `REFERENCES ${this.escapePath(\r\n this.getTablePath(foreignKey),\r\n )} (${referencedColumnNames})`\r\n\r\n return new Query(sql)\r\n }\r\n\r\n /**\r\n * Builds drop foreign key sql.\r\n */\r\n protected dropForeignKeySql(\r\n table: Table,\r\n foreignKeyOrName: TableForeignKey | string,\r\n ): Query {\r\n const foreignKeyName =\r\n foreignKeyOrName instanceof TableForeignKey\r\n ? foreignKeyOrName.name\r\n : foreignKeyOrName\r\n return new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \\`${foreignKeyName}\\``,\r\n )\r\n }\r\n\r\n /**\r\n * Escapes given table or view path.\r\n */\r\n protected escapePath(target: Table | View | string): string {\r\n const { tableName } = this.driver.parseTableName(target)\r\n return `\\`${tableName}\\``\r\n }\r\n\r\n /**\r\n * Builds a part of query to create/change a column.\r\n */\r\n protected buildCreateColumnSql(column: TableColumn) {\r\n let c = `${this.driver.escape(\r\n column.name,\r\n )} ${this.connection.driver.createFullType(column)}`\r\n\r\n // Spanner supports only STORED generated column type\r\n if (column.generatedType === \"STORED\" && column.asExpression) {\r\n c += ` AS (${column.asExpression}) STORED`\r\n } else {\r\n if (!column.isNullable) c += \" NOT NULL\"\r\n }\r\n\r\n return c\r\n }\r\n\r\n /**\r\n * Executes sql used special for schema build.\r\n */\r\n protected async executeQueries(\r\n upQueries: Query | Query[],\r\n downQueries: Query | Query[],\r\n ): Promise<void> {\r\n if (upQueries instanceof Query) upQueries = [upQueries]\r\n if (downQueries instanceof Query) downQueries = [downQueries]\r\n\r\n this.sqlInMemory.upQueries.push(...upQueries)\r\n this.sqlInMemory.downQueries.push(...downQueries)\r\n\r\n // if sql-in-memory mode is enabled then simply store sql in memory and return\r\n if (this.sqlMemoryMode === true)\r\n return Promise.resolve() as Promise<any>\r\n\r\n for (const { query, parameters } of upQueries) {\r\n if (this.isDMLQuery(query)) {\r\n await this.query(query, parameters)\r\n } else {\r\n await this.updateDDL(query, parameters)\r\n }\r\n }\r\n }\r\n\r\n protected isDMLQuery(query: string): boolean {\r\n return (\r\n query.startsWith(\"INSERT\") ||\r\n query.startsWith(\"UPDATE\") ||\r\n query.startsWith(\"DELETE\")\r\n )\r\n }\r\n\r\n /**\r\n * Change table comment.\r\n */\r\n changeTableComment(\r\n tableOrName: Table | string,\r\n comment?: string,\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `spanner driver does not support change table comment.`,\r\n )\r\n }\r\n}\r\n"],"sourceRoot":"../.."}