taon-typeorm 18.0.18 → 18.0.20

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 (871) hide show
  1. package/assets/shared/shared_folder_info.txt +1 -1
  2. package/browser/README.md +24 -24
  3. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +1 -1
  4. package/browser/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +1 -1
  5. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +1 -1
  6. package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +1 -1
  7. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +1 -1
  8. package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +1 -1
  9. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +1 -1
  10. package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +1 -1
  11. package/browser/esm2022/lib/typeorm/index.mjs +1 -3
  12. package/browser/fesm2022/taon-typeorm.mjs.map +1 -1
  13. package/client/README.md +24 -24
  14. package/client/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +1 -1
  15. package/client/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +1 -1
  16. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +1 -1
  17. package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +1 -1
  18. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +1 -1
  19. package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +1 -1
  20. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +1 -1
  21. package/client/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +1 -1
  22. package/client/esm2022/lib/typeorm/index.mjs +1 -3
  23. package/client/fesm2022/taon-typeorm.mjs.map +1 -1
  24. package/index.js +15 -2
  25. package/index.js.map +1 -1
  26. package/lib/build-info._auto-generated_.js.map +1 -1
  27. package/lib/index._auto-generated_.d.ts +1 -0
  28. package/lib/index._auto-generated_.js.map +1 -1
  29. package/lib/index.js +15 -2
  30. package/lib/index.js.map +1 -1
  31. package/lib/typeorm/cache/DbQueryResultCache.js +178 -231
  32. package/lib/typeorm/cache/DbQueryResultCache.js.map +1 -1
  33. package/lib/typeorm/cache/QueryResultCache.js.map +1 -1
  34. package/lib/typeorm/cache/QueryResultCacheFactory.js +11 -11
  35. package/lib/typeorm/cache/QueryResultCacheFactory.js.map +1 -1
  36. package/lib/typeorm/cache/QueryResultCacheOptions.js.map +1 -1
  37. package/lib/typeorm/cache/RedisQueryResultCache.js +121 -149
  38. package/lib/typeorm/cache/RedisQueryResultCache.js.map +1 -1
  39. package/lib/typeorm/cli-ts-node-commonjs.js.map +1 -1
  40. package/lib/typeorm/cli-ts-node-esm.js +7 -5
  41. package/lib/typeorm/cli-ts-node-esm.js.map +1 -1
  42. package/lib/typeorm/cli.d.ts +1 -1
  43. package/lib/typeorm/cli.js +15 -16
  44. package/lib/typeorm/cli.js.map +1 -1
  45. package/lib/typeorm/commands/CacheClearCommand.js +37 -65
  46. package/lib/typeorm/commands/CacheClearCommand.js.map +1 -1
  47. package/lib/typeorm/commands/CommandUtils.js +57 -112
  48. package/lib/typeorm/commands/CommandUtils.js.map +1 -1
  49. package/lib/typeorm/commands/EntityCreateCommand.js +35 -47
  50. package/lib/typeorm/commands/EntityCreateCommand.js.map +1 -1
  51. package/lib/typeorm/commands/InitCommand.js +397 -168
  52. package/lib/typeorm/commands/InitCommand.js.map +1 -1
  53. package/lib/typeorm/commands/MigrationCreateCommand.js +58 -52
  54. package/lib/typeorm/commands/MigrationCreateCommand.js.map +1 -1
  55. package/lib/typeorm/commands/MigrationGenerateCommand.js +141 -138
  56. package/lib/typeorm/commands/MigrationGenerateCommand.js.map +1 -1
  57. package/lib/typeorm/commands/MigrationRevertCommand.js +49 -77
  58. package/lib/typeorm/commands/MigrationRevertCommand.js.map +1 -1
  59. package/lib/typeorm/commands/MigrationRunCommand.js +52 -82
  60. package/lib/typeorm/commands/MigrationRunCommand.js.map +1 -1
  61. package/lib/typeorm/commands/MigrationShowCommand.js +32 -60
  62. package/lib/typeorm/commands/MigrationShowCommand.js.map +1 -1
  63. package/lib/typeorm/commands/QueryCommand.js +47 -83
  64. package/lib/typeorm/commands/QueryCommand.js.map +1 -1
  65. package/lib/typeorm/commands/SchemaDropCommand.js +33 -61
  66. package/lib/typeorm/commands/SchemaDropCommand.js.map +1 -1
  67. package/lib/typeorm/commands/SchemaLogCommand.js +57 -81
  68. package/lib/typeorm/commands/SchemaLogCommand.js.map +1 -1
  69. package/lib/typeorm/commands/SchemaSyncCommand.js +33 -61
  70. package/lib/typeorm/commands/SchemaSyncCommand.js.map +1 -1
  71. package/lib/typeorm/commands/SubscriberCreateCommand.js +35 -47
  72. package/lib/typeorm/commands/SubscriberCreateCommand.js.map +1 -1
  73. package/lib/typeorm/commands/VersionCommand.js +38 -54
  74. package/lib/typeorm/commands/VersionCommand.js.map +1 -1
  75. package/lib/typeorm/common/DeepPartial.js.map +1 -1
  76. package/lib/typeorm/common/EntityTarget.js.map +1 -1
  77. package/lib/typeorm/common/MixedList.js.map +1 -1
  78. package/lib/typeorm/common/NonNever.js.map +1 -1
  79. package/lib/typeorm/common/ObjectLiteral.js.map +1 -1
  80. package/lib/typeorm/common/ObjectType.js.map +1 -1
  81. package/lib/typeorm/common/RelationType.js.map +1 -1
  82. package/lib/typeorm/connection/BaseConnectionOptions.js.map +1 -1
  83. package/lib/typeorm/connection/Connection.js +3 -9
  84. package/lib/typeorm/connection/Connection.js.map +1 -1
  85. package/lib/typeorm/connection/ConnectionManager.js +23 -31
  86. package/lib/typeorm/connection/ConnectionManager.js.map +1 -1
  87. package/lib/typeorm/connection/ConnectionMetadataBuilder.js +48 -78
  88. package/lib/typeorm/connection/ConnectionMetadataBuilder.js.map +1 -1
  89. package/lib/typeorm/connection/ConnectionOptions.js.map +1 -1
  90. package/lib/typeorm/connection/ConnectionOptionsReader.js +146 -214
  91. package/lib/typeorm/connection/ConnectionOptionsReader.js.map +1 -1
  92. package/lib/typeorm/connection/options-reader/ConnectionOptionsEnvReader.js +50 -58
  93. package/lib/typeorm/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
  94. package/lib/typeorm/connection/options-reader/ConnectionOptionsXmlReader.js +45 -58
  95. package/lib/typeorm/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
  96. package/lib/typeorm/connection/options-reader/ConnectionOptionsYmlReader.js +14 -23
  97. package/lib/typeorm/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
  98. package/lib/typeorm/constants.js.map +1 -1
  99. package/lib/typeorm/container.js +9 -12
  100. package/lib/typeorm/container.js.map +1 -1
  101. package/lib/typeorm/data-source/BaseDataSourceOptions.js.map +1 -1
  102. package/lib/typeorm/data-source/DataSource.js +320 -478
  103. package/lib/typeorm/data-source/DataSource.js.map +1 -1
  104. package/lib/typeorm/data-source/DataSourceOptions.js.map +1 -1
  105. package/lib/typeorm/data-source/index.js +16 -3
  106. package/lib/typeorm/data-source/index.js.map +1 -1
  107. package/lib/typeorm/decorator/Check.js +5 -5
  108. package/lib/typeorm/decorator/Check.js.map +1 -1
  109. package/lib/typeorm/decorator/EntityRepository.js +1 -1
  110. package/lib/typeorm/decorator/EntityRepository.js.map +1 -1
  111. package/lib/typeorm/decorator/Exclusion.js +5 -5
  112. package/lib/typeorm/decorator/Exclusion.js.map +1 -1
  113. package/lib/typeorm/decorator/Generated.js +2 -3
  114. package/lib/typeorm/decorator/Generated.js.map +1 -1
  115. package/lib/typeorm/decorator/Index.js +5 -5
  116. package/lib/typeorm/decorator/Index.js.map +1 -1
  117. package/lib/typeorm/decorator/Unique.js +8 -8
  118. package/lib/typeorm/decorator/Unique.js.map +1 -1
  119. package/lib/typeorm/decorator/columns/Column.js +4 -4
  120. package/lib/typeorm/decorator/columns/Column.js.map +1 -1
  121. package/lib/typeorm/decorator/columns/CreateDateColumn.js +1 -1
  122. package/lib/typeorm/decorator/columns/CreateDateColumn.js.map +1 -1
  123. package/lib/typeorm/decorator/columns/DeleteDateColumn.js +1 -1
  124. package/lib/typeorm/decorator/columns/DeleteDateColumn.js.map +1 -1
  125. package/lib/typeorm/decorator/columns/ObjectIdColumn.js +1 -1
  126. package/lib/typeorm/decorator/columns/ObjectIdColumn.js.map +1 -1
  127. package/lib/typeorm/decorator/columns/PrimaryColumn.js +5 -5
  128. package/lib/typeorm/decorator/columns/PrimaryColumn.js.map +1 -1
  129. package/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.js +4 -4
  130. package/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  131. package/lib/typeorm/decorator/columns/UpdateDateColumn.js +1 -1
  132. package/lib/typeorm/decorator/columns/UpdateDateColumn.js.map +1 -1
  133. package/lib/typeorm/decorator/columns/VersionColumn.js +1 -1
  134. package/lib/typeorm/decorator/columns/VersionColumn.js.map +1 -1
  135. package/lib/typeorm/decorator/columns/ViewColumn.js +1 -1
  136. package/lib/typeorm/decorator/columns/ViewColumn.js.map +1 -1
  137. package/lib/typeorm/decorator/columns/VirtualColumn.js +5 -5
  138. package/lib/typeorm/decorator/columns/VirtualColumn.js.map +1 -1
  139. package/lib/typeorm/decorator/entity/ChildEntity.js +1 -1
  140. package/lib/typeorm/decorator/entity/ChildEntity.js.map +1 -1
  141. package/lib/typeorm/decorator/entity/Entity.js +4 -4
  142. package/lib/typeorm/decorator/entity/Entity.js.map +1 -1
  143. package/lib/typeorm/decorator/entity/TableInheritance.js +1 -1
  144. package/lib/typeorm/decorator/entity/TableInheritance.js.map +1 -1
  145. package/lib/typeorm/decorator/entity-view/ViewEntity.js +4 -4
  146. package/lib/typeorm/decorator/entity-view/ViewEntity.js.map +1 -1
  147. package/lib/typeorm/decorator/listeners/AfterInsert.js +2 -2
  148. package/lib/typeorm/decorator/listeners/AfterInsert.js.map +1 -1
  149. package/lib/typeorm/decorator/listeners/AfterLoad.js +2 -2
  150. package/lib/typeorm/decorator/listeners/AfterLoad.js.map +1 -1
  151. package/lib/typeorm/decorator/listeners/AfterRecover.js +2 -2
  152. package/lib/typeorm/decorator/listeners/AfterRecover.js.map +1 -1
  153. package/lib/typeorm/decorator/listeners/AfterRemove.js +2 -2
  154. package/lib/typeorm/decorator/listeners/AfterRemove.js.map +1 -1
  155. package/lib/typeorm/decorator/listeners/AfterSoftRemove.js +2 -2
  156. package/lib/typeorm/decorator/listeners/AfterSoftRemove.js.map +1 -1
  157. package/lib/typeorm/decorator/listeners/AfterUpdate.js +2 -2
  158. package/lib/typeorm/decorator/listeners/AfterUpdate.js.map +1 -1
  159. package/lib/typeorm/decorator/listeners/BeforeInsert.js +2 -2
  160. package/lib/typeorm/decorator/listeners/BeforeInsert.js.map +1 -1
  161. package/lib/typeorm/decorator/listeners/BeforeRecover.js +2 -2
  162. package/lib/typeorm/decorator/listeners/BeforeRecover.js.map +1 -1
  163. package/lib/typeorm/decorator/listeners/BeforeRemove.js +2 -2
  164. package/lib/typeorm/decorator/listeners/BeforeRemove.js.map +1 -1
  165. package/lib/typeorm/decorator/listeners/BeforeSoftRemove.js +2 -2
  166. package/lib/typeorm/decorator/listeners/BeforeSoftRemove.js.map +1 -1
  167. package/lib/typeorm/decorator/listeners/BeforeUpdate.js +2 -2
  168. package/lib/typeorm/decorator/listeners/BeforeUpdate.js.map +1 -1
  169. package/lib/typeorm/decorator/listeners/EventSubscriber.js +1 -1
  170. package/lib/typeorm/decorator/listeners/EventSubscriber.js.map +1 -1
  171. package/lib/typeorm/decorator/options/ColumnCommonOptions.js.map +1 -1
  172. package/lib/typeorm/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
  173. package/lib/typeorm/decorator/options/ColumnEnumOptions.js.map +1 -1
  174. package/lib/typeorm/decorator/options/ColumnHstoreOptions.js.map +1 -1
  175. package/lib/typeorm/decorator/options/ColumnNumericOptions.js.map +1 -1
  176. package/lib/typeorm/decorator/options/ColumnOptions.js.map +1 -1
  177. package/lib/typeorm/decorator/options/ColumnWithLengthOptions.js.map +1 -1
  178. package/lib/typeorm/decorator/options/ColumnWithWidthOptions.js.map +1 -1
  179. package/lib/typeorm/decorator/options/EntityOptions.js.map +1 -1
  180. package/lib/typeorm/decorator/options/IndexOptions.js.map +1 -1
  181. package/lib/typeorm/decorator/options/JoinColumnOptions.js.map +1 -1
  182. package/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
  183. package/lib/typeorm/decorator/options/JoinTableOptions.js.map +1 -1
  184. package/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  185. package/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  186. package/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  187. package/lib/typeorm/decorator/options/RelationOptions.js.map +1 -1
  188. package/lib/typeorm/decorator/options/SpatialColumnOptions.js.map +1 -1
  189. package/lib/typeorm/decorator/options/TransactionOptions.js.map +1 -1
  190. package/lib/typeorm/decorator/options/UniqueOptions.js.map +1 -1
  191. package/lib/typeorm/decorator/options/ValueTransformer.js.map +1 -1
  192. package/lib/typeorm/decorator/options/ViewColumnOptions.js.map +1 -1
  193. package/lib/typeorm/decorator/options/ViewEntityOptions.js.map +1 -1
  194. package/lib/typeorm/decorator/options/VirtualColumnOptions.js.map +1 -1
  195. package/lib/typeorm/decorator/relations/JoinColumn.js +3 -3
  196. package/lib/typeorm/decorator/relations/JoinColumn.js.map +1 -1
  197. package/lib/typeorm/decorator/relations/JoinTable.js +1 -1
  198. package/lib/typeorm/decorator/relations/JoinTable.js.map +1 -1
  199. package/lib/typeorm/decorator/relations/ManyToMany.js +5 -5
  200. package/lib/typeorm/decorator/relations/ManyToMany.js.map +1 -1
  201. package/lib/typeorm/decorator/relations/ManyToOne.js +5 -5
  202. package/lib/typeorm/decorator/relations/ManyToOne.js.map +1 -1
  203. package/lib/typeorm/decorator/relations/OneToMany.js +3 -3
  204. package/lib/typeorm/decorator/relations/OneToMany.js.map +1 -1
  205. package/lib/typeorm/decorator/relations/OneToOne.js +5 -5
  206. package/lib/typeorm/decorator/relations/OneToOne.js.map +1 -1
  207. package/lib/typeorm/decorator/relations/RelationCount.js +1 -1
  208. package/lib/typeorm/decorator/relations/RelationCount.js.map +1 -1
  209. package/lib/typeorm/decorator/relations/RelationId.js +1 -1
  210. package/lib/typeorm/decorator/relations/RelationId.js.map +1 -1
  211. package/lib/typeorm/decorator/tree/Tree.js +1 -1
  212. package/lib/typeorm/decorator/tree/Tree.js.map +1 -1
  213. package/lib/typeorm/decorator/tree/TreeChildren.js +4 -4
  214. package/lib/typeorm/decorator/tree/TreeChildren.js.map +1 -1
  215. package/lib/typeorm/decorator/tree/TreeLevelColumn.js +1 -1
  216. package/lib/typeorm/decorator/tree/TreeLevelColumn.js.map +1 -1
  217. package/lib/typeorm/decorator/tree/TreeParent.js +4 -4
  218. package/lib/typeorm/decorator/tree/TreeParent.js.map +1 -1
  219. package/lib/typeorm/driver/Driver.js.map +1 -1
  220. package/lib/typeorm/driver/DriverFactory.js +24 -27
  221. package/lib/typeorm/driver/DriverFactory.js.map +1 -1
  222. package/lib/typeorm/driver/DriverUtils.js +78 -126
  223. package/lib/typeorm/driver/DriverUtils.js.map +1 -1
  224. package/lib/typeorm/driver/Query.js +6 -5
  225. package/lib/typeorm/driver/Query.js.map +1 -1
  226. package/lib/typeorm/driver/SqlInMemory.js +4 -7
  227. package/lib/typeorm/driver/SqlInMemory.js.map +1 -1
  228. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnection.js +9 -12
  229. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
  230. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  231. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  232. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlDriver.js +392 -399
  233. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  234. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlQueryRunner.js +1320 -2084
  235. package/lib/typeorm/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  236. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
  237. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresDriver.js +50 -78
  238. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  239. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresQueryRunner.js +89 -160
  240. package/lib/typeorm/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  241. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  242. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3Driver.js +78 -152
  243. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  244. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3QueryRunner.js +96 -155
  245. package/lib/typeorm/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  246. package/lib/typeorm/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
  247. package/lib/typeorm/driver/capacitor/CapacitorDriver.js +44 -89
  248. package/lib/typeorm/driver/capacitor/CapacitorDriver.js.map +1 -1
  249. package/lib/typeorm/driver/capacitor/CapacitorQueryRunner.js +70 -122
  250. package/lib/typeorm/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  251. package/lib/typeorm/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
  252. package/lib/typeorm/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  253. package/lib/typeorm/driver/cockroachdb/CockroachDriver.js +368 -404
  254. package/lib/typeorm/driver/cockroachdb/CockroachDriver.js.map +1 -1
  255. package/lib/typeorm/driver/cockroachdb/CockroachQueryRunner.js +1752 -2862
  256. package/lib/typeorm/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  257. package/lib/typeorm/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  258. package/lib/typeorm/driver/cordova/CordovaDriver.js +36 -58
  259. package/lib/typeorm/driver/cordova/CordovaDriver.js.map +1 -1
  260. package/lib/typeorm/driver/cordova/CordovaQueryRunner.js +86 -164
  261. package/lib/typeorm/driver/cordova/CordovaQueryRunner.js.map +1 -1
  262. package/lib/typeorm/driver/expo/ExpoConnectionOptions.js.map +1 -1
  263. package/lib/typeorm/driver/expo/ExpoDriver.js +34 -44
  264. package/lib/typeorm/driver/expo/ExpoDriver.js.map +1 -1
  265. package/lib/typeorm/driver/expo/ExpoQueryRunner.js +114 -204
  266. package/lib/typeorm/driver/expo/ExpoQueryRunner.js.map +1 -1
  267. package/lib/typeorm/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  268. package/lib/typeorm/driver/mongodb/MongoDriver.js +269 -243
  269. package/lib/typeorm/driver/mongodb/MongoDriver.js.map +1 -1
  270. package/lib/typeorm/driver/mongodb/MongoQueryRunner.js +357 -793
  271. package/lib/typeorm/driver/mongodb/MongoQueryRunner.js.map +1 -1
  272. package/lib/typeorm/driver/mongodb/typings.js.map +1 -1
  273. package/lib/typeorm/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  274. package/lib/typeorm/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  275. package/lib/typeorm/driver/mysql/MysqlDriver.js +475 -480
  276. package/lib/typeorm/driver/mysql/MysqlDriver.js.map +1 -1
  277. package/lib/typeorm/driver/mysql/MysqlQueryRunner.js +1692 -2466
  278. package/lib/typeorm/driver/mysql/MysqlQueryRunner.js.map +1 -1
  279. package/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
  280. package/lib/typeorm/driver/nativescript/NativescriptDriver.js +46 -50
  281. package/lib/typeorm/driver/nativescript/NativescriptDriver.js.map +1 -1
  282. package/lib/typeorm/driver/nativescript/NativescriptQueryRunner.js +62 -101
  283. package/lib/typeorm/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  284. package/lib/typeorm/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
  285. package/lib/typeorm/driver/oracle/OracleConnectionOptions.js.map +1 -1
  286. package/lib/typeorm/driver/oracle/OracleDriver.js +345 -377
  287. package/lib/typeorm/driver/oracle/OracleDriver.js.map +1 -1
  288. package/lib/typeorm/driver/oracle/OracleQueryRunner.js +1484 -2384
  289. package/lib/typeorm/driver/oracle/OracleQueryRunner.js.map +1 -1
  290. package/lib/typeorm/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  291. package/lib/typeorm/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  292. package/lib/typeorm/driver/postgres/PostgresDriver.js +574 -690
  293. package/lib/typeorm/driver/postgres/PostgresDriver.js.map +1 -1
  294. package/lib/typeorm/driver/postgres/PostgresQueryRunner.js +2153 -3379
  295. package/lib/typeorm/driver/postgres/PostgresQueryRunner.js.map +1 -1
  296. package/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  297. package/lib/typeorm/driver/react-native/ReactNativeDriver.js +34 -44
  298. package/lib/typeorm/driver/react-native/ReactNativeDriver.js.map +1 -1
  299. package/lib/typeorm/driver/react-native/ReactNativeQueryRunner.js +60 -94
  300. package/lib/typeorm/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  301. package/lib/typeorm/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
  302. package/lib/typeorm/driver/sap/SapConnectionOptions.js.map +1 -1
  303. package/lib/typeorm/driver/sap/SapDriver.js +310 -305
  304. package/lib/typeorm/driver/sap/SapDriver.js.map +1 -1
  305. package/lib/typeorm/driver/sap/SapQueryRunner.js +1635 -2561
  306. package/lib/typeorm/driver/sap/SapQueryRunner.js.map +1 -1
  307. package/lib/typeorm/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
  308. package/lib/typeorm/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  309. package/lib/typeorm/driver/spanner/SpannerDriver.js +250 -236
  310. package/lib/typeorm/driver/spanner/SpannerDriver.js.map +1 -1
  311. package/lib/typeorm/driver/spanner/SpannerQueryRunner.js +1136 -2168
  312. package/lib/typeorm/driver/spanner/SpannerQueryRunner.js.map +1 -1
  313. package/lib/typeorm/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  314. package/lib/typeorm/driver/sqlite/SqliteDriver.js +82 -169
  315. package/lib/typeorm/driver/sqlite/SqliteDriver.js.map +1 -1
  316. package/lib/typeorm/driver/sqlite/SqliteQueryRunner.js +78 -122
  317. package/lib/typeorm/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  318. package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.js +280 -268
  319. package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  320. package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1158 -1990
  321. package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  322. package/lib/typeorm/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  323. package/lib/typeorm/driver/sqljs/SqljsDriver.js +187 -253
  324. package/lib/typeorm/driver/sqljs/SqljsDriver.js.map +1 -1
  325. package/lib/typeorm/driver/sqljs/SqljsQueryRunner.js +88 -147
  326. package/lib/typeorm/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  327. package/lib/typeorm/driver/sqlserver/MssqlParameter.js +10 -13
  328. package/lib/typeorm/driver/sqlserver/MssqlParameter.js.map +1 -1
  329. package/lib/typeorm/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  330. package/lib/typeorm/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  331. package/lib/typeorm/driver/sqlserver/SqlServerDriver.js +352 -372
  332. package/lib/typeorm/driver/sqlserver/SqlServerDriver.js.map +1 -1
  333. package/lib/typeorm/driver/sqlserver/SqlServerQueryRunner.js +1979 -3068
  334. package/lib/typeorm/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  335. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  336. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  337. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  338. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  339. package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
  340. package/lib/typeorm/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
  341. package/lib/typeorm/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
  342. package/lib/typeorm/driver/types/ColumnTypes.js.map +1 -1
  343. package/lib/typeorm/driver/types/CteCapabilities.js.map +1 -1
  344. package/lib/typeorm/driver/types/DataTypeDefaults.js.map +1 -1
  345. package/lib/typeorm/driver/types/DatabaseType.js.map +1 -1
  346. package/lib/typeorm/driver/types/IsolationLevel.js.map +1 -1
  347. package/lib/typeorm/driver/types/MappedColumnTypes.js.map +1 -1
  348. package/lib/typeorm/driver/types/MetadataTableType.js.map +1 -1
  349. package/lib/typeorm/driver/types/ReplicationMode.js.map +1 -1
  350. package/lib/typeorm/driver/types/UpsertType.js.map +1 -1
  351. package/lib/typeorm/entity-manager/EntityManager.js +351 -469
  352. package/lib/typeorm/entity-manager/EntityManager.js.map +1 -1
  353. package/lib/typeorm/entity-manager/EntityManagerFactory.js +7 -10
  354. package/lib/typeorm/entity-manager/EntityManagerFactory.js.map +1 -1
  355. package/lib/typeorm/entity-manager/MongoEntityManager.js +371 -487
  356. package/lib/typeorm/entity-manager/MongoEntityManager.js.map +1 -1
  357. package/lib/typeorm/entity-manager/SqljsEntityManager.js +16 -37
  358. package/lib/typeorm/entity-manager/SqljsEntityManager.js.map +1 -1
  359. package/lib/typeorm/entity-schema/EntitySchema.js +5 -5
  360. package/lib/typeorm/entity-schema/EntitySchema.js.map +1 -1
  361. package/lib/typeorm/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
  362. package/lib/typeorm/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  363. package/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.js +17 -5
  364. package/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
  365. package/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.js +11 -14
  366. package/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
  367. package/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
  368. package/lib/typeorm/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  369. package/lib/typeorm/entity-schema/EntitySchemaOptions.js +82 -5
  370. package/lib/typeorm/entity-schema/EntitySchemaOptions.js.map +1 -1
  371. package/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
  372. package/lib/typeorm/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  373. package/lib/typeorm/entity-schema/EntitySchemaTransformer.js +51 -68
  374. package/lib/typeorm/entity-schema/EntitySchemaTransformer.js.map +1 -1
  375. package/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
  376. package/lib/typeorm/error/AlreadyHasActiveConnectionError.js +6 -9
  377. package/lib/typeorm/error/AlreadyHasActiveConnectionError.js.map +1 -1
  378. package/lib/typeorm/error/CannotAttachTreeChildrenEntityError.js +6 -9
  379. package/lib/typeorm/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
  380. package/lib/typeorm/error/CannotConnectAlreadyConnectedError.js +5 -8
  381. package/lib/typeorm/error/CannotConnectAlreadyConnectedError.js.map +1 -1
  382. package/lib/typeorm/error/CannotCreateEntityIdMapError.js +7 -11
  383. package/lib/typeorm/error/CannotCreateEntityIdMapError.js.map +1 -1
  384. package/lib/typeorm/error/CannotDetermineEntityError.js +6 -9
  385. package/lib/typeorm/error/CannotDetermineEntityError.js.map +1 -1
  386. package/lib/typeorm/error/CannotExecuteNotConnectedError.js +5 -8
  387. package/lib/typeorm/error/CannotExecuteNotConnectedError.js.map +1 -1
  388. package/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.js +5 -8
  389. package/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
  390. package/lib/typeorm/error/CannotReflectMethodParameterTypeError.js +7 -10
  391. package/lib/typeorm/error/CannotReflectMethodParameterTypeError.js.map +1 -1
  392. package/lib/typeorm/error/CircularRelationsError.js +6 -9
  393. package/lib/typeorm/error/CircularRelationsError.js.map +1 -1
  394. package/lib/typeorm/error/ColumnTypeUndefinedError.js +8 -11
  395. package/lib/typeorm/error/ColumnTypeUndefinedError.js.map +1 -1
  396. package/lib/typeorm/error/ConnectionIsNotSetError.js +5 -8
  397. package/lib/typeorm/error/ConnectionIsNotSetError.js.map +1 -1
  398. package/lib/typeorm/error/ConnectionNotFoundError.js +5 -8
  399. package/lib/typeorm/error/ConnectionNotFoundError.js.map +1 -1
  400. package/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.js +7 -10
  401. package/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
  402. package/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.js +7 -10
  403. package/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
  404. package/lib/typeorm/error/CustomRepositoryNotFoundError.js +7 -10
  405. package/lib/typeorm/error/CustomRepositoryNotFoundError.js.map +1 -1
  406. package/lib/typeorm/error/DataTypeNotSupportedError.js +7 -11
  407. package/lib/typeorm/error/DataTypeNotSupportedError.js.map +1 -1
  408. package/lib/typeorm/error/DriverOptionNotSetError.js +6 -9
  409. package/lib/typeorm/error/DriverOptionNotSetError.js.map +1 -1
  410. package/lib/typeorm/error/DriverPackageNotInstalledError.js +6 -9
  411. package/lib/typeorm/error/DriverPackageNotInstalledError.js.map +1 -1
  412. package/lib/typeorm/error/EntityMetadataNotFoundError.js +10 -14
  413. package/lib/typeorm/error/EntityMetadataNotFoundError.js.map +1 -1
  414. package/lib/typeorm/error/EntityNotFoundError.js +13 -17
  415. package/lib/typeorm/error/EntityNotFoundError.js.map +1 -1
  416. package/lib/typeorm/error/EntityPropertyNotFoundError.js +7 -11
  417. package/lib/typeorm/error/EntityPropertyNotFoundError.js.map +1 -1
  418. package/lib/typeorm/error/FindRelationsNotFoundError.js +9 -13
  419. package/lib/typeorm/error/FindRelationsNotFoundError.js.map +1 -1
  420. package/lib/typeorm/error/ForbiddenTransactionModeOverrideError.js +6 -9
  421. package/lib/typeorm/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
  422. package/lib/typeorm/error/InitializedRelationError.js +7 -10
  423. package/lib/typeorm/error/InitializedRelationError.js.map +1 -1
  424. package/lib/typeorm/error/InsertValuesMissingError.js +6 -9
  425. package/lib/typeorm/error/InsertValuesMissingError.js.map +1 -1
  426. package/lib/typeorm/error/LimitOnUpdateNotSupportedError.js +5 -8
  427. package/lib/typeorm/error/LimitOnUpdateNotSupportedError.js.map +1 -1
  428. package/lib/typeorm/error/LockNotSupportedOnGivenDriverError.js +5 -8
  429. package/lib/typeorm/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
  430. package/lib/typeorm/error/MetadataAlreadyExistsError.js +6 -9
  431. package/lib/typeorm/error/MetadataAlreadyExistsError.js.map +1 -1
  432. package/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.js +6 -9
  433. package/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
  434. package/lib/typeorm/error/MissingDeleteDateColumnError.js +5 -8
  435. package/lib/typeorm/error/MissingDeleteDateColumnError.js.map +1 -1
  436. package/lib/typeorm/error/MissingDriverError.js +6 -10
  437. package/lib/typeorm/error/MissingDriverError.js.map +1 -1
  438. package/lib/typeorm/error/MissingJoinColumnError.js +12 -16
  439. package/lib/typeorm/error/MissingJoinColumnError.js.map +1 -1
  440. package/lib/typeorm/error/MissingJoinTableError.js +12 -16
  441. package/lib/typeorm/error/MissingJoinTableError.js.map +1 -1
  442. package/lib/typeorm/error/MissingPrimaryColumnError.js +6 -9
  443. package/lib/typeorm/error/MissingPrimaryColumnError.js.map +1 -1
  444. package/lib/typeorm/error/MustBeEntityError.js +5 -8
  445. package/lib/typeorm/error/MustBeEntityError.js.map +1 -1
  446. package/lib/typeorm/error/NamingStrategyNotFoundError.js +9 -13
  447. package/lib/typeorm/error/NamingStrategyNotFoundError.js.map +1 -1
  448. package/lib/typeorm/error/NestedSetMultipleRootError.js +5 -8
  449. package/lib/typeorm/error/NestedSetMultipleRootError.js.map +1 -1
  450. package/lib/typeorm/error/NoConnectionForRepositoryError.js +6 -9
  451. package/lib/typeorm/error/NoConnectionForRepositoryError.js.map +1 -1
  452. package/lib/typeorm/error/NoConnectionOptionError.js +6 -9
  453. package/lib/typeorm/error/NoConnectionOptionError.js.map +1 -1
  454. package/lib/typeorm/error/NoNeedToReleaseEntityManagerError.js +7 -10
  455. package/lib/typeorm/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
  456. package/lib/typeorm/error/NoVersionOrUpdateDateColumnError.js +5 -8
  457. package/lib/typeorm/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
  458. package/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.js +7 -10
  459. package/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
  460. package/lib/typeorm/error/OptimisticLockCanNotBeUsedError.js +5 -8
  461. package/lib/typeorm/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
  462. package/lib/typeorm/error/OptimisticLockVersionMismatchError.js +5 -8
  463. package/lib/typeorm/error/OptimisticLockVersionMismatchError.js.map +1 -1
  464. package/lib/typeorm/error/PersistedEntityNotFoundError.js +5 -8
  465. package/lib/typeorm/error/PersistedEntityNotFoundError.js.map +1 -1
  466. package/lib/typeorm/error/PessimisticLockTransactionRequiredError.js +5 -8
  467. package/lib/typeorm/error/PessimisticLockTransactionRequiredError.js.map +1 -1
  468. package/lib/typeorm/error/PrimaryColumnCannotBeNullableError.js +6 -9
  469. package/lib/typeorm/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
  470. package/lib/typeorm/error/QueryFailedError.js +18 -17
  471. package/lib/typeorm/error/QueryFailedError.js.map +1 -1
  472. package/lib/typeorm/error/QueryRunnerAlreadyReleasedError.js +5 -8
  473. package/lib/typeorm/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
  474. package/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.js +6 -9
  475. package/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
  476. package/lib/typeorm/error/RepositoryNotTreeError.js +9 -13
  477. package/lib/typeorm/error/RepositoryNotTreeError.js.map +1 -1
  478. package/lib/typeorm/error/ReturningStatementNotSupportedError.js +5 -8
  479. package/lib/typeorm/error/ReturningStatementNotSupportedError.js.map +1 -1
  480. package/lib/typeorm/error/SubjectRemovedAndUpdatedError.js +6 -9
  481. package/lib/typeorm/error/SubjectRemovedAndUpdatedError.js.map +1 -1
  482. package/lib/typeorm/error/SubjectWithoutIdentifierError.js +5 -8
  483. package/lib/typeorm/error/SubjectWithoutIdentifierError.js.map +1 -1
  484. package/lib/typeorm/error/TransactionAlreadyStartedError.js +5 -8
  485. package/lib/typeorm/error/TransactionAlreadyStartedError.js.map +1 -1
  486. package/lib/typeorm/error/TransactionNotStartedError.js +5 -8
  487. package/lib/typeorm/error/TransactionNotStartedError.js.map +1 -1
  488. package/lib/typeorm/error/TreeRepositoryNotSupportedError.js +5 -8
  489. package/lib/typeorm/error/TreeRepositoryNotSupportedError.js.map +1 -1
  490. package/lib/typeorm/error/TypeORMError.js +9 -18
  491. package/lib/typeorm/error/TypeORMError.js.map +1 -1
  492. package/lib/typeorm/error/UpdateValuesMissingError.js +5 -8
  493. package/lib/typeorm/error/UpdateValuesMissingError.js.map +1 -1
  494. package/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.js +6 -9
  495. package/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
  496. package/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +7 -10
  497. package/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
  498. package/lib/typeorm/error/UsingJoinTableIsNotAllowedError.js +7 -10
  499. package/lib/typeorm/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
  500. package/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.js +7 -10
  501. package/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
  502. package/lib/typeorm/error/index.js +75 -62
  503. package/lib/typeorm/error/index.js.map +1 -1
  504. package/lib/typeorm/find-options/EqualOperator.js +6 -10
  505. package/lib/typeorm/find-options/EqualOperator.js.map +1 -1
  506. package/lib/typeorm/find-options/FindManyOptions.js.map +1 -1
  507. package/lib/typeorm/find-options/FindOneOptions.js.map +1 -1
  508. package/lib/typeorm/find-options/FindOperator.js +90 -94
  509. package/lib/typeorm/find-options/FindOperator.js.map +1 -1
  510. package/lib/typeorm/find-options/FindOperatorType.js.map +1 -1
  511. package/lib/typeorm/find-options/FindOptionsOrder.js.map +1 -1
  512. package/lib/typeorm/find-options/FindOptionsRelations.js.map +1 -1
  513. package/lib/typeorm/find-options/FindOptionsSelect.js.map +1 -1
  514. package/lib/typeorm/find-options/FindOptionsUtils.js +56 -87
  515. package/lib/typeorm/find-options/FindOptionsUtils.js.map +1 -1
  516. package/lib/typeorm/find-options/FindOptionsWhere.js.map +1 -1
  517. package/lib/typeorm/find-options/FindTreeOptions.js.map +1 -1
  518. package/lib/typeorm/find-options/JoinOptions.js.map +1 -1
  519. package/lib/typeorm/find-options/OrderByCondition.js.map +1 -1
  520. package/lib/typeorm/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
  521. package/lib/typeorm/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
  522. package/lib/typeorm/find-options/operator/And.js +2 -6
  523. package/lib/typeorm/find-options/operator/And.js.map +1 -1
  524. package/lib/typeorm/find-options/operator/Any.js +1 -1
  525. package/lib/typeorm/find-options/operator/Any.js.map +1 -1
  526. package/lib/typeorm/find-options/operator/ArrayContainedBy.js +1 -1
  527. package/lib/typeorm/find-options/operator/ArrayContainedBy.js.map +1 -1
  528. package/lib/typeorm/find-options/operator/ArrayContains.js +1 -1
  529. package/lib/typeorm/find-options/operator/ArrayContains.js.map +1 -1
  530. package/lib/typeorm/find-options/operator/ArrayOverlap.js +1 -1
  531. package/lib/typeorm/find-options/operator/ArrayOverlap.js.map +1 -1
  532. package/lib/typeorm/find-options/operator/Between.js +1 -1
  533. package/lib/typeorm/find-options/operator/Between.js.map +1 -1
  534. package/lib/typeorm/find-options/operator/Equal.js +1 -1
  535. package/lib/typeorm/find-options/operator/Equal.js.map +1 -1
  536. package/lib/typeorm/find-options/operator/ILike.js +1 -1
  537. package/lib/typeorm/find-options/operator/ILike.js.map +1 -1
  538. package/lib/typeorm/find-options/operator/In.js +1 -1
  539. package/lib/typeorm/find-options/operator/In.js.map +1 -1
  540. package/lib/typeorm/find-options/operator/IsNull.js +1 -1
  541. package/lib/typeorm/find-options/operator/IsNull.js.map +1 -1
  542. package/lib/typeorm/find-options/operator/LessThan.js +1 -1
  543. package/lib/typeorm/find-options/operator/LessThan.js.map +1 -1
  544. package/lib/typeorm/find-options/operator/LessThanOrEqual.js +1 -1
  545. package/lib/typeorm/find-options/operator/LessThanOrEqual.js.map +1 -1
  546. package/lib/typeorm/find-options/operator/Like.js +1 -1
  547. package/lib/typeorm/find-options/operator/Like.js.map +1 -1
  548. package/lib/typeorm/find-options/operator/MoreThan.js +1 -1
  549. package/lib/typeorm/find-options/operator/MoreThan.js.map +1 -1
  550. package/lib/typeorm/find-options/operator/MoreThanOrEqual.js +1 -1
  551. package/lib/typeorm/find-options/operator/MoreThanOrEqual.js.map +1 -1
  552. package/lib/typeorm/find-options/operator/Not.js +1 -1
  553. package/lib/typeorm/find-options/operator/Not.js.map +1 -1
  554. package/lib/typeorm/find-options/operator/Raw.js +1 -1
  555. package/lib/typeorm/find-options/operator/Raw.js.map +1 -1
  556. package/lib/typeorm/globals.js +33 -99
  557. package/lib/typeorm/globals.js.map +1 -1
  558. package/lib/typeorm/index.d.ts +0 -1
  559. package/lib/typeorm/index.js +136 -126
  560. package/lib/typeorm/index.js.map +1 -1
  561. package/lib/typeorm/logger/AdvancedConsoleLogger.js +26 -26
  562. package/lib/typeorm/logger/AdvancedConsoleLogger.js.map +1 -1
  563. package/lib/typeorm/logger/DebugLogger.js +24 -27
  564. package/lib/typeorm/logger/DebugLogger.js.map +1 -1
  565. package/lib/typeorm/logger/FileLogger.js +31 -30
  566. package/lib/typeorm/logger/FileLogger.js.map +1 -1
  567. package/lib/typeorm/logger/Logger.js.map +1 -1
  568. package/lib/typeorm/logger/LoggerFactory.js +9 -12
  569. package/lib/typeorm/logger/LoggerFactory.js.map +1 -1
  570. package/lib/typeorm/logger/LoggerOptions.js.map +1 -1
  571. package/lib/typeorm/logger/SimpleConsoleLogger.js +25 -25
  572. package/lib/typeorm/logger/SimpleConsoleLogger.js.map +1 -1
  573. package/lib/typeorm/metadata/CheckMetadata.js +30 -6
  574. package/lib/typeorm/metadata/CheckMetadata.js.map +1 -1
  575. package/lib/typeorm/metadata/ColumnMetadata.js +343 -199
  576. package/lib/typeorm/metadata/ColumnMetadata.js.map +1 -1
  577. package/lib/typeorm/metadata/EmbeddedMetadata.js +174 -153
  578. package/lib/typeorm/metadata/EmbeddedMetadata.js.map +1 -1
  579. package/lib/typeorm/metadata/EntityListenerMetadata.js +35 -15
  580. package/lib/typeorm/metadata/EntityListenerMetadata.js.map +1 -1
  581. package/lib/typeorm/metadata/EntityMetadata.js +516 -372
  582. package/lib/typeorm/metadata/EntityMetadata.js.map +1 -1
  583. package/lib/typeorm/metadata/ExclusionMetadata.js +30 -6
  584. package/lib/typeorm/metadata/ExclusionMetadata.js.map +1 -1
  585. package/lib/typeorm/metadata/ForeignKeyMetadata.js +60 -24
  586. package/lib/typeorm/metadata/ForeignKeyMetadata.js.map +1 -1
  587. package/lib/typeorm/metadata/IndexMetadata.js +119 -73
  588. package/lib/typeorm/metadata/IndexMetadata.js.map +1 -1
  589. package/lib/typeorm/metadata/RelationCountMetadata.js +40 -10
  590. package/lib/typeorm/metadata/RelationCountMetadata.js.map +1 -1
  591. package/lib/typeorm/metadata/RelationIdMetadata.js +47 -18
  592. package/lib/typeorm/metadata/RelationIdMetadata.js.map +1 -1
  593. package/lib/typeorm/metadata/RelationMetadata.js +270 -187
  594. package/lib/typeorm/metadata/RelationMetadata.js.map +1 -1
  595. package/lib/typeorm/metadata/UniqueMetadata.js +72 -47
  596. package/lib/typeorm/metadata/UniqueMetadata.js.map +1 -1
  597. package/lib/typeorm/metadata/types/ClosureTreeOptions.js.map +1 -1
  598. package/lib/typeorm/metadata/types/DeferrableType.js.map +1 -1
  599. package/lib/typeorm/metadata/types/EventListenerTypes.js +13 -16
  600. package/lib/typeorm/metadata/types/EventListenerTypes.js.map +1 -1
  601. package/lib/typeorm/metadata/types/OnDeleteType.js.map +1 -1
  602. package/lib/typeorm/metadata/types/OnUpdateType.js.map +1 -1
  603. package/lib/typeorm/metadata/types/PropertyTypeInFunction.js.map +1 -1
  604. package/lib/typeorm/metadata/types/RelationTypeInFunction.js.map +1 -1
  605. package/lib/typeorm/metadata/types/RelationTypes.js.map +1 -1
  606. package/lib/typeorm/metadata/types/TableTypes.js.map +1 -1
  607. package/lib/typeorm/metadata/types/TreeTypes.js.map +1 -1
  608. package/lib/typeorm/metadata-args/CheckMetadataArgs.js.map +1 -1
  609. package/lib/typeorm/metadata-args/ColumnMetadataArgs.js.map +1 -1
  610. package/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
  611. package/lib/typeorm/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
  612. package/lib/typeorm/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
  613. package/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
  614. package/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
  615. package/lib/typeorm/metadata-args/ExclusionMetadataArgs.js.map +1 -1
  616. package/lib/typeorm/metadata-args/GeneratedMetadataArgs.js.map +1 -1
  617. package/lib/typeorm/metadata-args/IndexMetadataArgs.js.map +1 -1
  618. package/lib/typeorm/metadata-args/InheritanceMetadataArgs.js.map +1 -1
  619. package/lib/typeorm/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  620. package/lib/typeorm/metadata-args/JoinTableMetadataArgs.js.map +1 -1
  621. package/lib/typeorm/metadata-args/MetadataArgsStorage.js +108 -113
  622. package/lib/typeorm/metadata-args/MetadataArgsStorage.js.map +1 -1
  623. package/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
  624. package/lib/typeorm/metadata-args/RelationCountMetadataArgs.js.map +1 -1
  625. package/lib/typeorm/metadata-args/RelationIdMetadataArgs.js.map +1 -1
  626. package/lib/typeorm/metadata-args/RelationMetadataArgs.js.map +1 -1
  627. package/lib/typeorm/metadata-args/TableMetadataArgs.js.map +1 -1
  628. package/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
  629. package/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
  630. package/lib/typeorm/metadata-args/TreeMetadataArgs.js.map +1 -1
  631. package/lib/typeorm/metadata-args/UniqueMetadataArgs.js.map +1 -1
  632. package/lib/typeorm/metadata-args/types/ColumnMode.js.map +1 -1
  633. package/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +14 -15
  634. package/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  635. package/lib/typeorm/metadata-builder/EntityMetadataBuilder.js +291 -347
  636. package/lib/typeorm/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  637. package/lib/typeorm/metadata-builder/EntityMetadataValidator.js +63 -77
  638. package/lib/typeorm/metadata-builder/EntityMetadataValidator.js.map +1 -1
  639. package/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.js +64 -69
  640. package/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  641. package/lib/typeorm/metadata-builder/MetadataUtils.js +12 -15
  642. package/lib/typeorm/metadata-builder/MetadataUtils.js.map +1 -1
  643. package/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.js +43 -49
  644. package/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  645. package/lib/typeorm/migration/Migration.js +23 -4
  646. package/lib/typeorm/migration/Migration.js.map +1 -1
  647. package/lib/typeorm/migration/MigrationExecutor.js +432 -691
  648. package/lib/typeorm/migration/MigrationExecutor.js.map +1 -1
  649. package/lib/typeorm/migration/MigrationInterface.js.map +1 -1
  650. package/lib/typeorm/naming-strategy/DefaultNamingStrategy.js +80 -84
  651. package/lib/typeorm/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  652. package/lib/typeorm/naming-strategy/NamingStrategyInterface.js.map +1 -1
  653. package/lib/typeorm/persistence/EntityPersistExecutor.js +154 -212
  654. package/lib/typeorm/persistence/EntityPersistExecutor.js.map +1 -1
  655. package/lib/typeorm/persistence/Subject.js +162 -149
  656. package/lib/typeorm/persistence/Subject.js.map +1 -1
  657. package/lib/typeorm/persistence/SubjectChangeMap.js.map +1 -1
  658. package/lib/typeorm/persistence/SubjectChangedColumnsComputer.js +29 -35
  659. package/lib/typeorm/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  660. package/lib/typeorm/persistence/SubjectDatabaseEntityLoader.js +99 -130
  661. package/lib/typeorm/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  662. package/lib/typeorm/persistence/SubjectExecutor.js +635 -879
  663. package/lib/typeorm/persistence/SubjectExecutor.js.map +1 -1
  664. package/lib/typeorm/persistence/SubjectTopoligicalSorter.js +62 -58
  665. package/lib/typeorm/persistence/SubjectTopoligicalSorter.js.map +1 -1
  666. package/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.js +16 -19
  667. package/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  668. package/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.js +50 -53
  669. package/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  670. package/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.js +28 -33
  671. package/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  672. package/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +19 -20
  673. package/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  674. package/lib/typeorm/persistence/tree/ClosureSubjectExecutor.js +202 -271
  675. package/lib/typeorm/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  676. package/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.js +79 -121
  677. package/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  678. package/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.js +220 -353
  679. package/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  680. package/lib/typeorm/platform/PlatformTools.js +66 -78
  681. package/lib/typeorm/platform/PlatformTools.js.map +1 -1
  682. package/lib/typeorm/query-builder/Alias.js +31 -32
  683. package/lib/typeorm/query-builder/Alias.js.map +1 -1
  684. package/lib/typeorm/query-builder/Brackets.js +8 -5
  685. package/lib/typeorm/query-builder/Brackets.js.map +1 -1
  686. package/lib/typeorm/query-builder/DeleteQueryBuilder.js +96 -120
  687. package/lib/typeorm/query-builder/DeleteQueryBuilder.js.map +1 -1
  688. package/lib/typeorm/query-builder/InsertOrUpdateOptions.js.map +1 -1
  689. package/lib/typeorm/query-builder/InsertQueryBuilder.js +321 -367
  690. package/lib/typeorm/query-builder/InsertQueryBuilder.js.map +1 -1
  691. package/lib/typeorm/query-builder/JoinAttribute.js +175 -206
  692. package/lib/typeorm/query-builder/JoinAttribute.js.map +1 -1
  693. package/lib/typeorm/query-builder/JoinOptions.js.map +1 -1
  694. package/lib/typeorm/query-builder/NotBrackets.js +4 -11
  695. package/lib/typeorm/query-builder/NotBrackets.js.map +1 -1
  696. package/lib/typeorm/query-builder/QueryBuilder.js +400 -646
  697. package/lib/typeorm/query-builder/QueryBuilder.js.map +1 -1
  698. package/lib/typeorm/query-builder/QueryBuilderCte.js.map +1 -1
  699. package/lib/typeorm/query-builder/QueryBuilderUtils.js +5 -9
  700. package/lib/typeorm/query-builder/QueryBuilderUtils.js.map +1 -1
  701. package/lib/typeorm/query-builder/QueryExpressionMap.js +304 -233
  702. package/lib/typeorm/query-builder/QueryExpressionMap.js.map +1 -1
  703. package/lib/typeorm/query-builder/QueryPartialEntity.js.map +1 -1
  704. package/lib/typeorm/query-builder/RelationIdLoader.js +166 -189
  705. package/lib/typeorm/query-builder/RelationIdLoader.js.map +1 -1
  706. package/lib/typeorm/query-builder/RelationLoader.js +81 -94
  707. package/lib/typeorm/query-builder/RelationLoader.js.map +1 -1
  708. package/lib/typeorm/query-builder/RelationQueryBuilder.js +91 -127
  709. package/lib/typeorm/query-builder/RelationQueryBuilder.js.map +1 -1
  710. package/lib/typeorm/query-builder/RelationRemover.js +121 -124
  711. package/lib/typeorm/query-builder/RelationRemover.js.map +1 -1
  712. package/lib/typeorm/query-builder/RelationUpdater.js +130 -148
  713. package/lib/typeorm/query-builder/RelationUpdater.js.map +1 -1
  714. package/lib/typeorm/query-builder/ReturningResultsEntityUpdator.js +131 -159
  715. package/lib/typeorm/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  716. package/lib/typeorm/query-builder/SelectQuery.js.map +1 -1
  717. package/lib/typeorm/query-builder/SelectQueryBuilder.js +955 -1211
  718. package/lib/typeorm/query-builder/SelectQueryBuilder.js.map +1 -1
  719. package/lib/typeorm/query-builder/SelectQueryBuilderOption.js.map +1 -1
  720. package/lib/typeorm/query-builder/SoftDeleteQueryBuilder.js +155 -194
  721. package/lib/typeorm/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  722. package/lib/typeorm/query-builder/UpdateQueryBuilder.js +204 -246
  723. package/lib/typeorm/query-builder/UpdateQueryBuilder.js.map +1 -1
  724. package/lib/typeorm/query-builder/WhereClause.js.map +1 -1
  725. package/lib/typeorm/query-builder/WhereExpressionBuilder.js.map +1 -1
  726. package/lib/typeorm/query-builder/relation-count/RelationCountAttribute.js +85 -98
  727. package/lib/typeorm/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
  728. package/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
  729. package/lib/typeorm/query-builder/relation-count/RelationCountLoader.js +153 -172
  730. package/lib/typeorm/query-builder/relation-count/RelationCountLoader.js.map +1 -1
  731. package/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +16 -17
  732. package/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
  733. package/lib/typeorm/query-builder/relation-id/RelationIdAttribute.js +93 -107
  734. package/lib/typeorm/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  735. package/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
  736. package/lib/typeorm/query-builder/relation-id/RelationIdLoader.js +259 -267
  737. package/lib/typeorm/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  738. package/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +16 -17
  739. package/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
  740. package/lib/typeorm/query-builder/result/DeleteResult.js +14 -8
  741. package/lib/typeorm/query-builder/result/DeleteResult.js.map +1 -1
  742. package/lib/typeorm/query-builder/result/InsertResult.js +19 -18
  743. package/lib/typeorm/query-builder/result/InsertResult.js.map +1 -1
  744. package/lib/typeorm/query-builder/result/UpdateResult.js +24 -18
  745. package/lib/typeorm/query-builder/result/UpdateResult.js.map +1 -1
  746. package/lib/typeorm/query-builder/transformer/DocumentToEntityTransformer.js +24 -26
  747. package/lib/typeorm/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  748. package/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +77 -112
  749. package/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  750. package/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.js +16 -22
  751. package/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  752. package/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js +117 -132
  753. package/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  754. package/lib/typeorm/query-runner/BaseQueryRunner.js +227 -393
  755. package/lib/typeorm/query-runner/BaseQueryRunner.js.map +1 -1
  756. package/lib/typeorm/query-runner/QueryLock.js +19 -32
  757. package/lib/typeorm/query-runner/QueryLock.js.map +1 -1
  758. package/lib/typeorm/query-runner/QueryResult.js +14 -9
  759. package/lib/typeorm/query-runner/QueryResult.js.map +1 -1
  760. package/lib/typeorm/query-runner/QueryRunner.js.map +1 -1
  761. package/lib/typeorm/repository/AbstractRepository.js +46 -50
  762. package/lib/typeorm/repository/AbstractRepository.js.map +1 -1
  763. package/lib/typeorm/repository/BaseEntity.js +106 -123
  764. package/lib/typeorm/repository/BaseEntity.js.map +1 -1
  765. package/lib/typeorm/repository/EntityId.js.map +1 -1
  766. package/lib/typeorm/repository/FindTreesOptions.js.map +1 -1
  767. package/lib/typeorm/repository/MongoRepository.js +109 -135
  768. package/lib/typeorm/repository/MongoRepository.js.map +1 -1
  769. package/lib/typeorm/repository/RemoveOptions.js.map +1 -1
  770. package/lib/typeorm/repository/Repository.js +108 -140
  771. package/lib/typeorm/repository/Repository.js.map +1 -1
  772. package/lib/typeorm/repository/SaveOptions.js.map +1 -1
  773. package/lib/typeorm/repository/TreeRepository.js +107 -154
  774. package/lib/typeorm/repository/TreeRepository.js.map +1 -1
  775. package/lib/typeorm/repository/UpsertOptions.js.map +1 -1
  776. package/lib/typeorm/schema-builder/MongoSchemaBuilder.js +30 -42
  777. package/lib/typeorm/schema-builder/MongoSchemaBuilder.js.map +1 -1
  778. package/lib/typeorm/schema-builder/RdbmsSchemaBuilder.js +727 -1938
  779. package/lib/typeorm/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  780. package/lib/typeorm/schema-builder/SchemaBuilder.js.map +1 -1
  781. package/lib/typeorm/schema-builder/options/TableCheckOptions.js.map +1 -1
  782. package/lib/typeorm/schema-builder/options/TableColumnOptions.js.map +1 -1
  783. package/lib/typeorm/schema-builder/options/TableExclusionOptions.js.map +1 -1
  784. package/lib/typeorm/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  785. package/lib/typeorm/schema-builder/options/TableIndexOptions.js.map +1 -1
  786. package/lib/typeorm/schema-builder/options/TableOptions.js.map +1 -1
  787. package/lib/typeorm/schema-builder/options/TableUniqueOptions.js.map +1 -1
  788. package/lib/typeorm/schema-builder/options/ViewOptions.js.map +1 -1
  789. package/lib/typeorm/schema-builder/table/Table.js +160 -157
  790. package/lib/typeorm/schema-builder/table/Table.js.map +1 -1
  791. package/lib/typeorm/schema-builder/table/TableCheck.js +24 -15
  792. package/lib/typeorm/schema-builder/table/TableCheck.js.map +1 -1
  793. package/lib/typeorm/schema-builder/table/TableColumn.js +123 -41
  794. package/lib/typeorm/schema-builder/table/TableColumn.js.map +1 -1
  795. package/lib/typeorm/schema-builder/table/TableExclusion.js +19 -9
  796. package/lib/typeorm/schema-builder/table/TableExclusion.js.map +1 -1
  797. package/lib/typeorm/schema-builder/table/TableForeignKey.js +52 -20
  798. package/lib/typeorm/schema-builder/table/TableForeignKey.js.map +1 -1
  799. package/lib/typeorm/schema-builder/table/TableIndex.js +52 -16
  800. package/lib/typeorm/schema-builder/table/TableIndex.js.map +1 -1
  801. package/lib/typeorm/schema-builder/table/TableUnique.js +26 -16
  802. package/lib/typeorm/schema-builder/table/TableUnique.js.map +1 -1
  803. package/lib/typeorm/schema-builder/util/TableUtils.js +5 -8
  804. package/lib/typeorm/schema-builder/util/TableUtils.js.map +1 -1
  805. package/lib/typeorm/schema-builder/util/ViewUtils.js +4 -7
  806. package/lib/typeorm/schema-builder/util/ViewUtils.js.map +1 -1
  807. package/lib/typeorm/schema-builder/view/View.js +32 -10
  808. package/lib/typeorm/schema-builder/view/View.js.map +1 -1
  809. package/lib/typeorm/subscriber/Broadcaster.js +180 -216
  810. package/lib/typeorm/subscriber/Broadcaster.js.map +1 -1
  811. package/lib/typeorm/subscriber/BroadcasterResult.js +16 -29
  812. package/lib/typeorm/subscriber/BroadcasterResult.js.map +1 -1
  813. package/lib/typeorm/subscriber/EntitySubscriberInterface.js.map +1 -1
  814. package/lib/typeorm/subscriber/event/InsertEvent.js.map +1 -1
  815. package/lib/typeorm/subscriber/event/LoadEvent.js.map +1 -1
  816. package/lib/typeorm/subscriber/event/RecoverEvent.js.map +1 -1
  817. package/lib/typeorm/subscriber/event/RemoveEvent.js.map +1 -1
  818. package/lib/typeorm/subscriber/event/SoftRemoveEvent.js.map +1 -1
  819. package/lib/typeorm/subscriber/event/TransactionCommitEvent.js.map +1 -1
  820. package/lib/typeorm/subscriber/event/TransactionRollbackEvent.js.map +1 -1
  821. package/lib/typeorm/subscriber/event/TransactionStartEvent.js.map +1 -1
  822. package/lib/typeorm/subscriber/event/UpdateEvent.js.map +1 -1
  823. package/lib/typeorm/util/ApplyValueTransformers.js +9 -12
  824. package/lib/typeorm/util/ApplyValueTransformers.js.map +1 -1
  825. package/lib/typeorm/util/DateUtils.js +44 -53
  826. package/lib/typeorm/util/DateUtils.js.map +1 -1
  827. package/lib/typeorm/util/DepGraph.js +50 -53
  828. package/lib/typeorm/util/DepGraph.js.map +1 -1
  829. package/lib/typeorm/util/DirectoryExportedClassesLoader.js +48 -70
  830. package/lib/typeorm/util/DirectoryExportedClassesLoader.js.map +1 -1
  831. package/lib/typeorm/util/ImportUtils.js +43 -65
  832. package/lib/typeorm/util/ImportUtils.js.map +1 -1
  833. package/lib/typeorm/util/InstanceChecker.js +64 -67
  834. package/lib/typeorm/util/InstanceChecker.js.map +1 -1
  835. package/lib/typeorm/util/ObjectUtils.js +13 -42
  836. package/lib/typeorm/util/ObjectUtils.js.map +1 -1
  837. package/lib/typeorm/util/OrmUtils.js +91 -158
  838. package/lib/typeorm/util/OrmUtils.js.map +1 -1
  839. package/lib/typeorm/util/PathUtils.js +8 -8
  840. package/lib/typeorm/util/PathUtils.js.map +1 -1
  841. package/lib/typeorm/util/RandomGenerator.js +22 -25
  842. package/lib/typeorm/util/RandomGenerator.js.map +1 -1
  843. package/lib/typeorm/util/StringUtils.js +17 -21
  844. package/lib/typeorm/util/StringUtils.js.map +1 -1
  845. package/lib/typeorm/util/TreeRepositoryUtils.js +27 -30
  846. package/lib/typeorm/util/TreeRepositoryUtils.js.map +1 -1
  847. package/lib/typeorm/util/VersionUtils.js +9 -13
  848. package/lib/typeorm/util/VersionUtils.js.map +1 -1
  849. package/lib/typeorm/util/escapeRegExp.js +2 -2
  850. package/lib/typeorm/util/escapeRegExp.js.map +1 -1
  851. package/migrations/index.js +15 -2
  852. package/migrations/index.js.map +1 -1
  853. package/migrations/migrations_index._auto-generated_.d.ts +1 -0
  854. package/migrations/migrations_index._auto-generated_.js.map +1 -1
  855. package/package.json +8 -44
  856. package/src.d.ts +1 -1
  857. package/taon.jsonc +7 -34
  858. package/tmp-environment.json +8 -370
  859. package/websql/README.md +24 -24
  860. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +1 -1
  861. package/websql/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +1 -1
  862. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +1 -1
  863. package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +1 -1
  864. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +1 -1
  865. package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +1 -1
  866. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +1 -1
  867. package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +1 -1
  868. package/websql/esm2022/lib/typeorm/index.mjs +1 -3
  869. package/websql/fesm2022/taon-typeorm.mjs.map +1 -1
  870. package/browser/package.json +0 -25
  871. package/websql/package.json +0 -25
@@ -1,39 +1,51 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SpannerQueryRunner = void 0;
4
- var tslib_1 = require("tslib");
5
- var QueryFailedError_1 = require("../../error/QueryFailedError");
6
- var QueryRunnerAlreadyReleasedError_1 = require("../../error/QueryRunnerAlreadyReleasedError");
7
- var TransactionNotStartedError_1 = require("../../error/TransactionNotStartedError");
8
- var BaseQueryRunner_1 = require("../../query-runner/BaseQueryRunner");
9
- var Table_1 = require("../../schema-builder/table/Table");
10
- var TableCheck_1 = require("../../schema-builder/table/TableCheck");
11
- var TableColumn_1 = require("../../schema-builder/table/TableColumn");
12
- var TableForeignKey_1 = require("../../schema-builder/table/TableForeignKey");
13
- var TableIndex_1 = require("../../schema-builder/table/TableIndex");
14
- var TableUnique_1 = require("../../schema-builder/table/TableUnique");
15
- var View_1 = require("../../schema-builder/view/View");
16
- var Broadcaster_1 = require("../../subscriber/Broadcaster");
17
- var OrmUtils_1 = require("../../util/OrmUtils");
18
- var Query_1 = require("../Query");
19
- var error_1 = require("../../error");
20
- var QueryResult_1 = require("../../query-runner/QueryResult");
21
- var MetadataTableType_1 = require("../types/MetadataTableType");
4
+ const QueryFailedError_1 = require("../../error/QueryFailedError");
5
+ const QueryRunnerAlreadyReleasedError_1 = require("../../error/QueryRunnerAlreadyReleasedError");
6
+ const TransactionNotStartedError_1 = require("../../error/TransactionNotStartedError");
7
+ const BaseQueryRunner_1 = require("../../query-runner/BaseQueryRunner");
8
+ const Table_1 = require("../../schema-builder/table/Table");
9
+ const TableCheck_1 = require("../../schema-builder/table/TableCheck");
10
+ const TableColumn_1 = require("../../schema-builder/table/TableColumn");
11
+ const TableForeignKey_1 = require("../../schema-builder/table/TableForeignKey");
12
+ const TableIndex_1 = require("../../schema-builder/table/TableIndex");
13
+ const TableUnique_1 = require("../../schema-builder/table/TableUnique");
14
+ const View_1 = require("../../schema-builder/view/View");
15
+ const Broadcaster_1 = require("../../subscriber/Broadcaster");
16
+ const OrmUtils_1 = require("../../util/OrmUtils");
17
+ const Query_1 = require("../Query");
18
+ const error_1 = require("../../error");
19
+ const QueryResult_1 = require("../../query-runner/QueryResult");
20
+ const MetadataTableType_1 = require("../types/MetadataTableType");
22
21
  /**
23
22
  * Runs queries on a single postgres database connection.
24
23
  */
25
- var SpannerQueryRunner = /** @class */ (function (_super) {
26
- tslib_1.__extends(SpannerQueryRunner, _super);
24
+ class SpannerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
25
+ // -------------------------------------------------------------------------
26
+ // Public Implemented Properties
27
+ // -------------------------------------------------------------------------
28
+ /**
29
+ * Database driver used by connection.
30
+ */
31
+ driver;
32
+ /**
33
+ * Real database connection from a connection pool used to perform queries.
34
+ */
35
+ session;
36
+ /**
37
+ * Transaction currently executed by this session.
38
+ */
39
+ sessionTransaction;
27
40
  // -------------------------------------------------------------------------
28
41
  // Constructor
29
42
  // -------------------------------------------------------------------------
30
- function SpannerQueryRunner(driver, mode) {
31
- var _this = _super.call(this) || this;
32
- _this.driver = driver;
33
- _this.connection = driver.connection;
34
- _this.mode = mode;
35
- _this.broadcaster = new Broadcaster_1.Broadcaster(_this);
36
- return _this;
43
+ constructor(driver, mode) {
44
+ super();
45
+ this.driver = driver;
46
+ this.connection = driver.connection;
47
+ this.mode = mode;
48
+ this.broadcaster = new Broadcaster_1.Broadcaster(this);
37
49
  }
38
50
  // -------------------------------------------------------------------------
39
51
  // Public Methods
@@ -42,2213 +54,1215 @@ var SpannerQueryRunner = /** @class */ (function (_super) {
42
54
  * Creates/uses database connection from the connection pool to perform further operations.
43
55
  * Returns obtained database connection.
44
56
  */
45
- SpannerQueryRunner.prototype.connect = function () {
46
- return tslib_1.__awaiter(this, void 0, void 0, function () {
47
- var _a, session, _b;
48
- return tslib_1.__generator(this, function (_c) {
49
- switch (_c.label) {
50
- case 0:
51
- if (this.session) {
52
- return [2 /*return*/, Promise.resolve(this.session)];
53
- }
54
- return [4 /*yield*/, this.driver.instanceDatabase.createSession({})];
55
- case 1:
56
- _a = tslib_1.__read.apply(void 0, [_c.sent(), 1]), session = _a[0];
57
- this.session = session;
58
- _b = this;
59
- return [4 /*yield*/, session.transaction()];
60
- case 2:
61
- _b.sessionTransaction = _c.sent();
62
- return [2 /*return*/, this.session];
63
- }
64
- });
65
- });
66
- };
57
+ async connect() {
58
+ if (this.session) {
59
+ return Promise.resolve(this.session);
60
+ }
61
+ const [session] = await this.driver.instanceDatabase.createSession({});
62
+ this.session = session;
63
+ this.sessionTransaction = await session.transaction();
64
+ return this.session;
65
+ }
67
66
  /**
68
67
  * Releases used database connection.
69
68
  * You cannot use query runner methods once its released.
70
69
  */
71
- SpannerQueryRunner.prototype.release = function () {
72
- return tslib_1.__awaiter(this, void 0, void 0, function () {
73
- return tslib_1.__generator(this, function (_a) {
74
- switch (_a.label) {
75
- case 0:
76
- this.isReleased = true;
77
- if (!this.session) return [3 /*break*/, 2];
78
- return [4 /*yield*/, this.session.delete()];
79
- case 1:
80
- _a.sent();
81
- _a.label = 2;
82
- case 2:
83
- this.session = undefined;
84
- return [2 /*return*/, Promise.resolve()];
85
- }
86
- });
87
- });
88
- };
70
+ async release() {
71
+ this.isReleased = true;
72
+ if (this.session) {
73
+ await this.session.delete();
74
+ }
75
+ this.session = undefined;
76
+ return Promise.resolve();
77
+ }
89
78
  /**
90
79
  * Starts transaction.
91
80
  */
92
- SpannerQueryRunner.prototype.startTransaction = function (isolationLevel) {
93
- return tslib_1.__awaiter(this, void 0, void 0, function () {
94
- var err_1;
95
- return tslib_1.__generator(this, function (_a) {
96
- switch (_a.label) {
97
- case 0:
98
- this.isTransactionActive = true;
99
- _a.label = 1;
100
- case 1:
101
- _a.trys.push([1, 3, , 4]);
102
- return [4 /*yield*/, this.broadcaster.broadcast("BeforeTransactionStart")];
103
- case 2:
104
- _a.sent();
105
- return [3 /*break*/, 4];
106
- case 3:
107
- err_1 = _a.sent();
108
- this.isTransactionActive = false;
109
- throw err_1;
110
- case 4: return [4 /*yield*/, this.connect()];
111
- case 5:
112
- _a.sent();
113
- return [4 /*yield*/, this.sessionTransaction.begin()];
114
- case 6:
115
- _a.sent();
116
- this.connection.logger.logQuery("START TRANSACTION");
117
- return [4 /*yield*/, this.broadcaster.broadcast("AfterTransactionStart")];
118
- case 7:
119
- _a.sent();
120
- return [2 /*return*/];
121
- }
122
- });
123
- });
124
- };
81
+ async startTransaction(isolationLevel) {
82
+ this.isTransactionActive = true;
83
+ try {
84
+ await this.broadcaster.broadcast("BeforeTransactionStart");
85
+ }
86
+ catch (err) {
87
+ this.isTransactionActive = false;
88
+ throw err;
89
+ }
90
+ await this.connect();
91
+ await this.sessionTransaction.begin();
92
+ this.connection.logger.logQuery("START TRANSACTION");
93
+ await this.broadcaster.broadcast("AfterTransactionStart");
94
+ }
125
95
  /**
126
96
  * Commits transaction.
127
97
  * Error will be thrown if transaction was not started.
128
98
  */
129
- SpannerQueryRunner.prototype.commitTransaction = function () {
130
- return tslib_1.__awaiter(this, void 0, void 0, function () {
131
- return tslib_1.__generator(this, function (_a) {
132
- switch (_a.label) {
133
- case 0:
134
- if (!this.isTransactionActive || !this.sessionTransaction)
135
- throw new TransactionNotStartedError_1.TransactionNotStartedError();
136
- return [4 /*yield*/, this.broadcaster.broadcast("BeforeTransactionCommit")];
137
- case 1:
138
- _a.sent();
139
- return [4 /*yield*/, this.sessionTransaction.commit()];
140
- case 2:
141
- _a.sent();
142
- this.connection.logger.logQuery("COMMIT");
143
- this.isTransactionActive = false;
144
- return [4 /*yield*/, this.broadcaster.broadcast("AfterTransactionCommit")];
145
- case 3:
146
- _a.sent();
147
- return [2 /*return*/];
148
- }
149
- });
150
- });
151
- };
99
+ async commitTransaction() {
100
+ if (!this.isTransactionActive || !this.sessionTransaction)
101
+ throw new TransactionNotStartedError_1.TransactionNotStartedError();
102
+ await this.broadcaster.broadcast("BeforeTransactionCommit");
103
+ await this.sessionTransaction.commit();
104
+ this.connection.logger.logQuery("COMMIT");
105
+ this.isTransactionActive = false;
106
+ await this.broadcaster.broadcast("AfterTransactionCommit");
107
+ }
152
108
  /**
153
109
  * Rollbacks transaction.
154
110
  * Error will be thrown if transaction was not started.
155
111
  */
156
- SpannerQueryRunner.prototype.rollbackTransaction = function () {
157
- return tslib_1.__awaiter(this, void 0, void 0, function () {
158
- return tslib_1.__generator(this, function (_a) {
159
- switch (_a.label) {
160
- case 0:
161
- if (!this.isTransactionActive || !this.sessionTransaction)
162
- throw new TransactionNotStartedError_1.TransactionNotStartedError();
163
- return [4 /*yield*/, this.broadcaster.broadcast("BeforeTransactionRollback")];
164
- case 1:
165
- _a.sent();
166
- return [4 /*yield*/, this.sessionTransaction.rollback()];
167
- case 2:
168
- _a.sent();
169
- this.connection.logger.logQuery("ROLLBACK");
170
- this.isTransactionActive = false;
171
- return [4 /*yield*/, this.broadcaster.broadcast("AfterTransactionRollback")];
172
- case 3:
173
- _a.sent();
174
- return [2 /*return*/];
175
- }
176
- });
177
- });
178
- };
112
+ async rollbackTransaction() {
113
+ if (!this.isTransactionActive || !this.sessionTransaction)
114
+ throw new TransactionNotStartedError_1.TransactionNotStartedError();
115
+ await this.broadcaster.broadcast("BeforeTransactionRollback");
116
+ await this.sessionTransaction.rollback();
117
+ this.connection.logger.logQuery("ROLLBACK");
118
+ this.isTransactionActive = false;
119
+ await this.broadcaster.broadcast("AfterTransactionRollback");
120
+ }
179
121
  /**
180
122
  * Executes a given SQL query.
181
123
  */
182
- SpannerQueryRunner.prototype.query = function (query_1, parameters_1) {
183
- return tslib_1.__awaiter(this, arguments, void 0, function (query, parameters, useStructuredResult) {
184
- var queryStartTime, rawResult, isSelect, executor, error_2, rollbackError_1, maxQueryExecutionTime, queryEndTime, queryExecutionTime, result, err_2;
185
- if (useStructuredResult === void 0) { useStructuredResult = false; }
186
- return tslib_1.__generator(this, function (_a) {
187
- switch (_a.label) {
188
- case 0:
189
- if (this.isReleased)
190
- throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
191
- _a.label = 1;
192
- case 1:
193
- _a.trys.push([1, 15, 16, 17]);
194
- queryStartTime = +new Date();
195
- return [4 /*yield*/, this.connect()];
196
- case 2:
197
- _a.sent();
198
- rawResult = undefined;
199
- isSelect = query.startsWith("SELECT");
200
- executor = isSelect && !this.isTransactionActive
201
- ? this.driver.instanceDatabase
202
- : this.sessionTransaction;
203
- if (!(!this.isTransactionActive && !isSelect)) return [3 /*break*/, 4];
204
- return [4 /*yield*/, this.sessionTransaction.begin()];
205
- case 3:
206
- _a.sent();
207
- _a.label = 4;
208
- case 4:
209
- _a.trys.push([4, 8, , 14]);
210
- this.driver.connection.logger.logQuery(query, parameters, this);
211
- return [4 /*yield*/, executor.run({
212
- sql: query,
213
- params: parameters
214
- ? parameters.reduce(function (params, value, index) {
215
- params["param" + index] = value;
216
- return params;
217
- }, {})
218
- : undefined,
219
- json: true,
220
- })];
221
- case 5:
222
- rawResult = _a.sent();
223
- if (!(!this.isTransactionActive && !isSelect)) return [3 /*break*/, 7];
224
- return [4 /*yield*/, this.sessionTransaction.commit()];
225
- case 6:
226
- _a.sent();
227
- _a.label = 7;
228
- case 7: return [3 /*break*/, 14];
229
- case 8:
230
- error_2 = _a.sent();
231
- _a.label = 9;
232
- case 9:
233
- _a.trys.push([9, 12, , 13]);
234
- if (!(!this.isTransactionActive && !isSelect)) return [3 /*break*/, 11];
235
- return [4 /*yield*/, this.sessionTransaction.rollback()];
236
- case 10:
237
- _a.sent();
238
- _a.label = 11;
239
- case 11: return [3 /*break*/, 13];
240
- case 12:
241
- rollbackError_1 = _a.sent();
242
- return [3 /*break*/, 13];
243
- case 13: throw error_2;
244
- case 14:
245
- maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
246
- queryEndTime = +new Date();
247
- queryExecutionTime = queryEndTime - queryStartTime;
248
- if (maxQueryExecutionTime &&
249
- queryExecutionTime > maxQueryExecutionTime)
250
- this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
251
- result = new QueryResult_1.QueryResult();
252
- result.raw = rawResult;
253
- result.records = rawResult ? rawResult[0] : [];
254
- if (rawResult && rawResult[1] && rawResult[1].rowCountExact) {
255
- result.affected = parseInt(rawResult[1].rowCountExact);
256
- }
257
- if (!useStructuredResult) {
258
- return [2 /*return*/, result.records];
259
- }
260
- return [2 /*return*/, result];
261
- case 15:
262
- err_2 = _a.sent();
263
- this.driver.connection.logger.logQueryError(err_2, query, parameters, this);
264
- throw new QueryFailedError_1.QueryFailedError(query, parameters, err_2);
265
- case 16: return [7 /*endfinally*/];
266
- case 17: return [2 /*return*/];
124
+ async query(query, parameters, useStructuredResult = false) {
125
+ if (this.isReleased)
126
+ throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
127
+ try {
128
+ const queryStartTime = +new Date();
129
+ await this.connect();
130
+ let rawResult = undefined;
131
+ const isSelect = query.startsWith("SELECT");
132
+ const executor = isSelect && !this.isTransactionActive
133
+ ? this.driver.instanceDatabase
134
+ : this.sessionTransaction;
135
+ if (!this.isTransactionActive && !isSelect) {
136
+ await this.sessionTransaction.begin();
137
+ }
138
+ try {
139
+ this.driver.connection.logger.logQuery(query, parameters, this);
140
+ rawResult = await executor.run({
141
+ sql: query,
142
+ params: parameters
143
+ ? parameters.reduce((params, value, index) => {
144
+ params["param" + index] = value;
145
+ return params;
146
+ }, {})
147
+ : undefined,
148
+ json: true,
149
+ });
150
+ if (!this.isTransactionActive && !isSelect) {
151
+ await this.sessionTransaction.commit();
267
152
  }
268
- });
269
- });
270
- };
153
+ }
154
+ catch (error) {
155
+ try {
156
+ // we throw original error even if rollback thrown an error
157
+ if (!this.isTransactionActive && !isSelect)
158
+ await this.sessionTransaction.rollback();
159
+ }
160
+ catch (rollbackError) { }
161
+ throw error;
162
+ }
163
+ // log slow queries if maxQueryExecution time is set
164
+ const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
165
+ const queryEndTime = +new Date();
166
+ const queryExecutionTime = queryEndTime - queryStartTime;
167
+ if (maxQueryExecutionTime &&
168
+ queryExecutionTime > maxQueryExecutionTime)
169
+ this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
170
+ const result = new QueryResult_1.QueryResult();
171
+ result.raw = rawResult;
172
+ result.records = rawResult ? rawResult[0] : [];
173
+ if (rawResult && rawResult[1] && rawResult[1].rowCountExact) {
174
+ result.affected = parseInt(rawResult[1].rowCountExact);
175
+ }
176
+ if (!useStructuredResult) {
177
+ return result.records;
178
+ }
179
+ return result;
180
+ }
181
+ catch (err) {
182
+ this.driver.connection.logger.logQueryError(err, query, parameters, this);
183
+ throw new QueryFailedError_1.QueryFailedError(query, parameters, err);
184
+ }
185
+ finally {
186
+ }
187
+ }
271
188
  /**
272
189
  * Update database schema.
273
190
  * Used for creating/altering/dropping tables, columns, indexes, etc.
274
191
  *
275
192
  * DDL changing queries should be executed by `updateSchema()` method.
276
193
  */
277
- SpannerQueryRunner.prototype.updateDDL = function (query, parameters) {
278
- return tslib_1.__awaiter(this, void 0, void 0, function () {
279
- var queryStartTime, _a, operation, maxQueryExecutionTime, queryEndTime, queryExecutionTime, err_3;
280
- return tslib_1.__generator(this, function (_b) {
281
- switch (_b.label) {
282
- case 0:
283
- if (this.isReleased)
284
- throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
285
- this.driver.connection.logger.logQuery(query, parameters, this);
286
- _b.label = 1;
287
- case 1:
288
- _b.trys.push([1, 4, , 5]);
289
- queryStartTime = +new Date();
290
- return [4 /*yield*/, this.driver.instanceDatabase.updateSchema(query)];
291
- case 2:
292
- _a = tslib_1.__read.apply(void 0, [_b.sent(), 1]), operation = _a[0];
293
- return [4 /*yield*/, operation.promise()
294
- // log slow queries if maxQueryExecution time is set
295
- ];
296
- case 3:
297
- _b.sent();
298
- maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
299
- queryEndTime = +new Date();
300
- queryExecutionTime = queryEndTime - queryStartTime;
301
- if (maxQueryExecutionTime &&
302
- queryExecutionTime > maxQueryExecutionTime)
303
- this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
304
- return [3 /*break*/, 5];
305
- case 4:
306
- err_3 = _b.sent();
307
- this.driver.connection.logger.logQueryError(err_3, query, parameters, this);
308
- throw new QueryFailedError_1.QueryFailedError(query, parameters, err_3);
309
- case 5: return [2 /*return*/];
310
- }
311
- });
312
- });
313
- };
194
+ async updateDDL(query, parameters) {
195
+ if (this.isReleased)
196
+ throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
197
+ this.driver.connection.logger.logQuery(query, parameters, this);
198
+ try {
199
+ const queryStartTime = +new Date();
200
+ const [operation] = await this.driver.instanceDatabase.updateSchema(query);
201
+ await operation.promise();
202
+ // log slow queries if maxQueryExecution time is set
203
+ const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
204
+ const queryEndTime = +new Date();
205
+ const queryExecutionTime = queryEndTime - queryStartTime;
206
+ if (maxQueryExecutionTime &&
207
+ queryExecutionTime > maxQueryExecutionTime)
208
+ this.driver.connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
209
+ }
210
+ catch (err) {
211
+ this.driver.connection.logger.logQueryError(err, query, parameters, this);
212
+ throw new QueryFailedError_1.QueryFailedError(query, parameters, err);
213
+ }
214
+ }
314
215
  /**
315
216
  * Returns raw data stream.
316
217
  */
317
- SpannerQueryRunner.prototype.stream = function (query, parameters, onEnd, onError) {
318
- return tslib_1.__awaiter(this, void 0, void 0, function () {
319
- var request, stream;
320
- return tslib_1.__generator(this, function (_a) {
321
- if (this.isReleased)
322
- throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
323
- try {
324
- this.driver.connection.logger.logQuery(query, parameters, this);
325
- request = {
326
- sql: query,
327
- params: parameters
328
- ? parameters.reduce(function (params, value, index) {
329
- params["param" + index] = value;
330
- return params;
331
- }, {})
332
- : undefined,
333
- json: true,
334
- };
335
- stream = this.driver.instanceDatabase.runStream(request);
336
- if (onEnd) {
337
- stream.on("end", onEnd);
338
- }
339
- if (onError) {
340
- stream.on("error", onError);
341
- }
342
- return [2 /*return*/, stream];
343
- }
344
- catch (err) {
345
- this.driver.connection.logger.logQueryError(err, query, parameters, this);
346
- throw new QueryFailedError_1.QueryFailedError(query, parameters, err);
347
- }
348
- return [2 /*return*/];
349
- });
350
- });
351
- };
218
+ async stream(query, parameters, onEnd, onError) {
219
+ if (this.isReleased)
220
+ throw new QueryRunnerAlreadyReleasedError_1.QueryRunnerAlreadyReleasedError();
221
+ try {
222
+ this.driver.connection.logger.logQuery(query, parameters, this);
223
+ const request = {
224
+ sql: query,
225
+ params: parameters
226
+ ? parameters.reduce((params, value, index) => {
227
+ params["param" + index] = value;
228
+ return params;
229
+ }, {})
230
+ : undefined,
231
+ json: true,
232
+ };
233
+ const stream = this.driver.instanceDatabase.runStream(request);
234
+ if (onEnd) {
235
+ stream.on("end", onEnd);
236
+ }
237
+ if (onError) {
238
+ stream.on("error", onError);
239
+ }
240
+ return stream;
241
+ }
242
+ catch (err) {
243
+ this.driver.connection.logger.logQueryError(err, query, parameters, this);
244
+ throw new QueryFailedError_1.QueryFailedError(query, parameters, err);
245
+ }
246
+ }
352
247
  /**
353
248
  * Returns all available database names including system databases.
354
249
  */
355
- SpannerQueryRunner.prototype.getDatabases = function () {
356
- return tslib_1.__awaiter(this, void 0, void 0, function () {
357
- return tslib_1.__generator(this, function (_a) {
358
- return [2 /*return*/, Promise.resolve([])];
359
- });
360
- });
361
- };
250
+ async getDatabases() {
251
+ return Promise.resolve([]);
252
+ }
362
253
  /**
363
254
  * Returns all available schema names including system schemas.
364
255
  * If database parameter specified, returns schemas of that database.
365
256
  */
366
- SpannerQueryRunner.prototype.getSchemas = function (database) {
367
- return tslib_1.__awaiter(this, void 0, void 0, function () {
368
- return tslib_1.__generator(this, function (_a) {
369
- return [2 /*return*/, Promise.resolve([])];
370
- });
371
- });
372
- };
257
+ async getSchemas(database) {
258
+ return Promise.resolve([]);
259
+ }
373
260
  /**
374
261
  * Checks if database with the given name exist.
375
262
  */
376
- SpannerQueryRunner.prototype.hasDatabase = function (database) {
377
- return tslib_1.__awaiter(this, void 0, void 0, function () {
378
- return tslib_1.__generator(this, function (_a) {
379
- throw new error_1.TypeORMError("Check database queries are not supported by Spanner driver.");
380
- });
381
- });
382
- };
263
+ async hasDatabase(database) {
264
+ throw new error_1.TypeORMError(`Check database queries are not supported by Spanner driver.`);
265
+ }
383
266
  /**
384
267
  * Loads currently using database
385
268
  */
386
- SpannerQueryRunner.prototype.getCurrentDatabase = function () {
387
- return tslib_1.__awaiter(this, void 0, void 0, function () {
388
- return tslib_1.__generator(this, function (_a) {
389
- throw new error_1.TypeORMError("Check database queries are not supported by Spanner driver.");
390
- });
391
- });
392
- };
269
+ async getCurrentDatabase() {
270
+ throw new error_1.TypeORMError(`Check database queries are not supported by Spanner driver.`);
271
+ }
393
272
  /**
394
273
  * Checks if schema with the given name exist.
395
274
  */
396
- SpannerQueryRunner.prototype.hasSchema = function (schema) {
397
- return tslib_1.__awaiter(this, void 0, void 0, function () {
398
- var result;
399
- return tslib_1.__generator(this, function (_a) {
400
- switch (_a.label) {
401
- case 0: return [4 /*yield*/, this.query("SELECT * FROM \"information_schema\".\"schemata\" WHERE \"schema_name\" = '".concat(schema, "'"))];
402
- case 1:
403
- result = _a.sent();
404
- return [2 /*return*/, result.length ? true : false];
405
- }
406
- });
407
- });
408
- };
275
+ async hasSchema(schema) {
276
+ const result = await this.query(`SELECT * FROM "information_schema"."schemata" WHERE "schema_name" = '${schema}'`);
277
+ return result.length ? true : false;
278
+ }
409
279
  /**
410
280
  * Loads currently using database schema
411
281
  */
412
- SpannerQueryRunner.prototype.getCurrentSchema = function () {
413
- return tslib_1.__awaiter(this, void 0, void 0, function () {
414
- return tslib_1.__generator(this, function (_a) {
415
- throw new error_1.TypeORMError("Check schema queries are not supported by Spanner driver.");
416
- });
417
- });
418
- };
282
+ async getCurrentSchema() {
283
+ throw new error_1.TypeORMError(`Check schema queries are not supported by Spanner driver.`);
284
+ }
419
285
  /**
420
286
  * Checks if table with the given name exist in the database.
421
287
  */
422
- SpannerQueryRunner.prototype.hasTable = function (tableOrName) {
423
- return tslib_1.__awaiter(this, void 0, void 0, function () {
424
- var tableName, sql, result;
425
- return tslib_1.__generator(this, function (_a) {
426
- switch (_a.label) {
427
- case 0:
428
- tableName = tableOrName instanceof Table_1.Table ? tableOrName.name : tableOrName;
429
- sql = "SELECT * FROM `INFORMATION_SCHEMA`.`TABLES` " +
430
- "WHERE `TABLE_CATALOG` = '' AND `TABLE_SCHEMA` = '' AND `TABLE_TYPE` = 'BASE TABLE' " +
431
- "AND `TABLE_NAME` = '".concat(tableName, "'");
432
- return [4 /*yield*/, this.query(sql)];
433
- case 1:
434
- result = _a.sent();
435
- return [2 /*return*/, result.length ? true : false];
436
- }
437
- });
438
- });
439
- };
288
+ async hasTable(tableOrName) {
289
+ const tableName = tableOrName instanceof Table_1.Table ? tableOrName.name : tableOrName;
290
+ const sql = `SELECT * FROM \`INFORMATION_SCHEMA\`.\`TABLES\` ` +
291
+ `WHERE \`TABLE_CATALOG\` = '' AND \`TABLE_SCHEMA\` = '' AND \`TABLE_TYPE\` = 'BASE TABLE' ` +
292
+ `AND \`TABLE_NAME\` = '${tableName}'`;
293
+ const result = await this.query(sql);
294
+ return result.length ? true : false;
295
+ }
440
296
  /**
441
297
  * Checks if column with the given name exist in the given table.
442
298
  */
443
- SpannerQueryRunner.prototype.hasColumn = function (tableOrName, columnName) {
444
- return tslib_1.__awaiter(this, void 0, void 0, function () {
445
- var tableName, sql, result;
446
- return tslib_1.__generator(this, function (_a) {
447
- switch (_a.label) {
448
- case 0:
449
- tableName = tableOrName instanceof Table_1.Table ? tableOrName.name : tableOrName;
450
- sql = "SELECT * FROM `INFORMATION_SCHEMA`.`COLUMNS` " +
451
- "WHERE `TABLE_CATALOG` = '' AND `TABLE_SCHEMA` = '' " +
452
- "AND `TABLE_NAME` = '".concat(tableName, "' AND `COLUMN_NAME` = '").concat(columnName, "'");
453
- return [4 /*yield*/, this.query(sql)];
454
- case 1:
455
- result = _a.sent();
456
- return [2 /*return*/, result.length ? true : false];
457
- }
458
- });
459
- });
460
- };
299
+ async hasColumn(tableOrName, columnName) {
300
+ const tableName = tableOrName instanceof Table_1.Table ? tableOrName.name : tableOrName;
301
+ const sql = `SELECT * FROM \`INFORMATION_SCHEMA\`.\`COLUMNS\` ` +
302
+ `WHERE \`TABLE_CATALOG\` = '' AND \`TABLE_SCHEMA\` = '' ` +
303
+ `AND \`TABLE_NAME\` = '${tableName}' AND \`COLUMN_NAME\` = '${columnName}'`;
304
+ const result = await this.query(sql);
305
+ return result.length ? true : false;
306
+ }
461
307
  /**
462
308
  * Creates a new database.
463
309
  * Note: Spanner does not support database creation inside a transaction block.
464
310
  */
465
- SpannerQueryRunner.prototype.createDatabase = function (database, ifNotExist) {
466
- return tslib_1.__awaiter(this, void 0, void 0, function () {
467
- var databaseAlreadyExists, up, down;
468
- return tslib_1.__generator(this, function (_a) {
469
- switch (_a.label) {
470
- case 0:
471
- if (!ifNotExist) return [3 /*break*/, 2];
472
- return [4 /*yield*/, this.hasDatabase(database)];
473
- case 1:
474
- databaseAlreadyExists = _a.sent();
475
- if (databaseAlreadyExists)
476
- return [2 /*return*/, Promise.resolve()];
477
- _a.label = 2;
478
- case 2:
479
- up = "CREATE DATABASE \"".concat(database, "\"");
480
- down = "DROP DATABASE \"".concat(database, "\"");
481
- return [4 /*yield*/, this.executeQueries(new Query_1.Query(up), new Query_1.Query(down))];
482
- case 3:
483
- _a.sent();
484
- return [2 /*return*/];
485
- }
486
- });
487
- });
488
- };
311
+ async createDatabase(database, ifNotExist) {
312
+ if (ifNotExist) {
313
+ const databaseAlreadyExists = await this.hasDatabase(database);
314
+ if (databaseAlreadyExists)
315
+ return Promise.resolve();
316
+ }
317
+ const up = `CREATE DATABASE "${database}"`;
318
+ const down = `DROP DATABASE "${database}"`;
319
+ await this.executeQueries(new Query_1.Query(up), new Query_1.Query(down));
320
+ }
489
321
  /**
490
322
  * Drops database.
491
323
  * Note: Spanner does not support database dropping inside a transaction block.
492
324
  */
493
- SpannerQueryRunner.prototype.dropDatabase = function (database, ifExist) {
494
- return tslib_1.__awaiter(this, void 0, void 0, function () {
495
- var up, down;
496
- return tslib_1.__generator(this, function (_a) {
497
- switch (_a.label) {
498
- case 0:
499
- up = ifExist
500
- ? "DROP DATABASE IF EXISTS \"".concat(database, "\"")
501
- : "DROP DATABASE \"".concat(database, "\"");
502
- down = "CREATE DATABASE \"".concat(database, "\"");
503
- return [4 /*yield*/, this.executeQueries(new Query_1.Query(up), new Query_1.Query(down))];
504
- case 1:
505
- _a.sent();
506
- return [2 /*return*/];
507
- }
508
- });
509
- });
510
- };
325
+ async dropDatabase(database, ifExist) {
326
+ const up = ifExist
327
+ ? `DROP DATABASE IF EXISTS "${database}"`
328
+ : `DROP DATABASE "${database}"`;
329
+ const down = `CREATE DATABASE "${database}"`;
330
+ await this.executeQueries(new Query_1.Query(up), new Query_1.Query(down));
331
+ }
511
332
  /**
512
333
  * Creates a new table schema.
513
334
  */
514
- SpannerQueryRunner.prototype.createSchema = function (schemaPath, ifNotExist) {
515
- return tslib_1.__awaiter(this, void 0, void 0, function () {
516
- return tslib_1.__generator(this, function (_a) {
517
- return [2 /*return*/, Promise.resolve()];
518
- });
519
- });
520
- };
335
+ async createSchema(schemaPath, ifNotExist) {
336
+ return Promise.resolve();
337
+ }
521
338
  /**
522
339
  * Drops table schema.
523
340
  */
524
- SpannerQueryRunner.prototype.dropSchema = function (schemaPath, ifExist, isCascade) {
525
- return tslib_1.__awaiter(this, void 0, void 0, function () {
526
- return tslib_1.__generator(this, function (_a) {
527
- return [2 /*return*/, Promise.resolve()];
528
- });
529
- });
530
- };
341
+ async dropSchema(schemaPath, ifExist, isCascade) {
342
+ return Promise.resolve();
343
+ }
531
344
  /**
532
345
  * Creates a new table.
533
346
  */
534
- SpannerQueryRunner.prototype.createTable = function (table_1) {
535
- return tslib_1.__awaiter(this, arguments, void 0, function (table, ifNotExist, createForeignKeys, createIndices) {
536
- var isTableExist, upQueries, downQueries, generatedColumns, generatedColumns_1, generatedColumns_1_1, column, insertQuery, deleteQuery;
537
- var e_1, _a;
538
- var _this = this;
539
- if (ifNotExist === void 0) { ifNotExist = false; }
540
- if (createForeignKeys === void 0) { createForeignKeys = true; }
541
- if (createIndices === void 0) { createIndices = true; }
542
- return tslib_1.__generator(this, function (_b) {
543
- switch (_b.label) {
544
- case 0:
545
- if (!ifNotExist) return [3 /*break*/, 2];
546
- return [4 /*yield*/, this.hasTable(table)];
547
- case 1:
548
- isTableExist = _b.sent();
549
- if (isTableExist)
550
- return [2 /*return*/, Promise.resolve()];
551
- _b.label = 2;
552
- case 2:
553
- upQueries = [];
554
- downQueries = [];
555
- upQueries.push(this.createTableSql(table, createForeignKeys));
556
- downQueries.push(this.dropTableSql(table));
557
- // if createForeignKeys is true, we must drop created foreign keys in down query.
558
- // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.
559
- if (createForeignKeys)
560
- table.foreignKeys.forEach(function (foreignKey) {
561
- return downQueries.push(_this.dropForeignKeySql(table, foreignKey));
562
- });
563
- if (createIndices) {
564
- table.indices.forEach(function (index) {
565
- // new index may be passed without name. In this case we generate index name manually.
566
- if (!index.name)
567
- index.name = _this.connection.namingStrategy.indexName(table, index.columnNames, index.where);
568
- upQueries.push(_this.createIndexSql(table, index));
569
- downQueries.push(_this.dropIndexSql(table, index));
570
- });
571
- }
572
- generatedColumns = table.columns.filter(function (column) { return column.generatedType && column.asExpression; });
573
- try {
574
- for (generatedColumns_1 = tslib_1.__values(generatedColumns), generatedColumns_1_1 = generatedColumns_1.next(); !generatedColumns_1_1.done; generatedColumns_1_1 = generatedColumns_1.next()) {
575
- column = generatedColumns_1_1.value;
576
- insertQuery = this.insertTypeormMetadataSql({
577
- table: table.name,
578
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
579
- name: column.name,
580
- value: column.asExpression,
581
- });
582
- deleteQuery = this.deleteTypeormMetadataSql({
583
- table: table.name,
584
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
585
- name: column.name,
586
- });
587
- upQueries.push(insertQuery);
588
- downQueries.push(deleteQuery);
589
- }
590
- }
591
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
592
- finally {
593
- try {
594
- if (generatedColumns_1_1 && !generatedColumns_1_1.done && (_a = generatedColumns_1.return)) _a.call(generatedColumns_1);
595
- }
596
- finally { if (e_1) throw e_1.error; }
597
- }
598
- return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
599
- case 3:
600
- _b.sent();
601
- return [2 /*return*/];
602
- }
347
+ async createTable(table, ifNotExist = false, createForeignKeys = true, createIndices = true) {
348
+ if (ifNotExist) {
349
+ const isTableExist = await this.hasTable(table);
350
+ if (isTableExist)
351
+ return Promise.resolve();
352
+ }
353
+ const upQueries = [];
354
+ const downQueries = [];
355
+ upQueries.push(this.createTableSql(table, createForeignKeys));
356
+ downQueries.push(this.dropTableSql(table));
357
+ // if createForeignKeys is true, we must drop created foreign keys in down query.
358
+ // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.
359
+ if (createForeignKeys)
360
+ table.foreignKeys.forEach((foreignKey) => downQueries.push(this.dropForeignKeySql(table, foreignKey)));
361
+ if (createIndices) {
362
+ table.indices.forEach((index) => {
363
+ // new index may be passed without name. In this case we generate index name manually.
364
+ if (!index.name)
365
+ index.name = this.connection.namingStrategy.indexName(table, index.columnNames, index.where);
366
+ upQueries.push(this.createIndexSql(table, index));
367
+ downQueries.push(this.dropIndexSql(table, index));
603
368
  });
604
- });
605
- };
369
+ }
370
+ // if table has column with generated type, we must add the expression to the metadata table
371
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
372
+ for (const column of generatedColumns) {
373
+ const insertQuery = this.insertTypeormMetadataSql({
374
+ table: table.name,
375
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
376
+ name: column.name,
377
+ value: column.asExpression,
378
+ });
379
+ const deleteQuery = this.deleteTypeormMetadataSql({
380
+ table: table.name,
381
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
382
+ name: column.name,
383
+ });
384
+ upQueries.push(insertQuery);
385
+ downQueries.push(deleteQuery);
386
+ }
387
+ await this.executeQueries(upQueries, downQueries);
388
+ }
606
389
  /**
607
390
  * Drops the table.
608
391
  */
609
- SpannerQueryRunner.prototype.dropTable = function (target_1, ifExist_1) {
610
- return tslib_1.__awaiter(this, arguments, void 0, function (target, ifExist, dropForeignKeys, dropIndices) {
611
- var isTableExist, createForeignKeys, tablePath, table, upQueries, downQueries, generatedColumns, generatedColumns_2, generatedColumns_2_1, column, deleteQuery, insertQuery;
612
- var e_2, _a;
613
- var _this = this;
614
- if (dropForeignKeys === void 0) { dropForeignKeys = true; }
615
- if (dropIndices === void 0) { dropIndices = true; }
616
- return tslib_1.__generator(this, function (_b) {
617
- switch (_b.label) {
618
- case 0:
619
- if (!ifExist) return [3 /*break*/, 2];
620
- return [4 /*yield*/, this.hasTable(target)];
621
- case 1:
622
- isTableExist = _b.sent();
623
- if (!isTableExist)
624
- return [2 /*return*/, Promise.resolve()];
625
- _b.label = 2;
626
- case 2:
627
- createForeignKeys = dropForeignKeys;
628
- tablePath = this.getTablePath(target);
629
- return [4 /*yield*/, this.getCachedTable(tablePath)];
630
- case 3:
631
- table = _b.sent();
632
- upQueries = [];
633
- downQueries = [];
634
- if (dropIndices) {
635
- table.indices.forEach(function (index) {
636
- upQueries.push(_this.dropIndexSql(table, index));
637
- downQueries.push(_this.createIndexSql(table, index));
638
- });
639
- }
640
- if (dropForeignKeys)
641
- table.foreignKeys.forEach(function (foreignKey) {
642
- return upQueries.push(_this.dropForeignKeySql(table, foreignKey));
643
- });
644
- upQueries.push(this.dropTableSql(table));
645
- downQueries.push(this.createTableSql(table, createForeignKeys));
646
- generatedColumns = table.columns.filter(function (column) { return column.generatedType && column.asExpression; });
647
- try {
648
- for (generatedColumns_2 = tslib_1.__values(generatedColumns), generatedColumns_2_1 = generatedColumns_2.next(); !generatedColumns_2_1.done; generatedColumns_2_1 = generatedColumns_2.next()) {
649
- column = generatedColumns_2_1.value;
650
- deleteQuery = this.deleteTypeormMetadataSql({
651
- table: table.name,
652
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
653
- name: column.name,
654
- });
655
- insertQuery = this.insertTypeormMetadataSql({
656
- table: table.name,
657
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
658
- name: column.name,
659
- value: column.asExpression,
660
- });
661
- upQueries.push(deleteQuery);
662
- downQueries.push(insertQuery);
663
- }
664
- }
665
- catch (e_2_1) { e_2 = { error: e_2_1 }; }
666
- finally {
667
- try {
668
- if (generatedColumns_2_1 && !generatedColumns_2_1.done && (_a = generatedColumns_2.return)) _a.call(generatedColumns_2);
669
- }
670
- finally { if (e_2) throw e_2.error; }
671
- }
672
- return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
673
- case 4:
674
- _b.sent();
675
- return [2 /*return*/];
676
- }
392
+ async dropTable(target, ifExist, dropForeignKeys = true, dropIndices = true) {
393
+ // It needs because if table does not exist and dropForeignKeys or dropIndices is true, we don't need
394
+ // to perform drop queries for foreign keys and indices.
395
+ if (ifExist) {
396
+ const isTableExist = await this.hasTable(target);
397
+ if (!isTableExist)
398
+ return Promise.resolve();
399
+ }
400
+ // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.
401
+ const createForeignKeys = dropForeignKeys;
402
+ const tablePath = this.getTablePath(target);
403
+ const table = await this.getCachedTable(tablePath);
404
+ const upQueries = [];
405
+ const downQueries = [];
406
+ if (dropIndices) {
407
+ table.indices.forEach((index) => {
408
+ upQueries.push(this.dropIndexSql(table, index));
409
+ downQueries.push(this.createIndexSql(table, index));
677
410
  });
678
- });
679
- };
411
+ }
412
+ if (dropForeignKeys)
413
+ table.foreignKeys.forEach((foreignKey) => upQueries.push(this.dropForeignKeySql(table, foreignKey)));
414
+ upQueries.push(this.dropTableSql(table));
415
+ downQueries.push(this.createTableSql(table, createForeignKeys));
416
+ // if table had columns with generated type, we must remove the expression from the metadata table
417
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
418
+ for (const column of generatedColumns) {
419
+ const deleteQuery = this.deleteTypeormMetadataSql({
420
+ table: table.name,
421
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
422
+ name: column.name,
423
+ });
424
+ const insertQuery = this.insertTypeormMetadataSql({
425
+ table: table.name,
426
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
427
+ name: column.name,
428
+ value: column.asExpression,
429
+ });
430
+ upQueries.push(deleteQuery);
431
+ downQueries.push(insertQuery);
432
+ }
433
+ await this.executeQueries(upQueries, downQueries);
434
+ }
680
435
  /**
681
436
  * Creates a new view.
682
437
  */
683
- SpannerQueryRunner.prototype.createView = function (view) {
684
- return tslib_1.__awaiter(this, void 0, void 0, function () {
685
- var upQueries, downQueries, _a, _b, _c, _d;
686
- return tslib_1.__generator(this, function (_e) {
687
- switch (_e.label) {
688
- case 0:
689
- upQueries = [];
690
- downQueries = [];
691
- upQueries.push(this.createViewSql(view));
692
- _b = (_a = upQueries).push;
693
- return [4 /*yield*/, this.insertViewDefinitionSql(view)];
694
- case 1:
695
- _b.apply(_a, [_e.sent()]);
696
- downQueries.push(this.dropViewSql(view));
697
- _d = (_c = downQueries).push;
698
- return [4 /*yield*/, this.deleteViewDefinitionSql(view)];
699
- case 2:
700
- _d.apply(_c, [_e.sent()]);
701
- return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
702
- case 3:
703
- _e.sent();
704
- return [2 /*return*/];
705
- }
706
- });
707
- });
708
- };
438
+ async createView(view) {
439
+ const upQueries = [];
440
+ const downQueries = [];
441
+ upQueries.push(this.createViewSql(view));
442
+ upQueries.push(await this.insertViewDefinitionSql(view));
443
+ downQueries.push(this.dropViewSql(view));
444
+ downQueries.push(await this.deleteViewDefinitionSql(view));
445
+ await this.executeQueries(upQueries, downQueries);
446
+ }
709
447
  /**
710
448
  * Drops the view.
711
449
  */
712
- SpannerQueryRunner.prototype.dropView = function (target) {
713
- return tslib_1.__awaiter(this, void 0, void 0, function () {
714
- var viewName, view, upQueries, downQueries, _a, _b, _c, _d;
715
- return tslib_1.__generator(this, function (_e) {
716
- switch (_e.label) {
717
- case 0:
718
- viewName = target instanceof View_1.View ? target.name : target;
719
- return [4 /*yield*/, this.getCachedView(viewName)];
720
- case 1:
721
- view = _e.sent();
722
- upQueries = [];
723
- downQueries = [];
724
- _b = (_a = upQueries).push;
725
- return [4 /*yield*/, this.deleteViewDefinitionSql(view)];
726
- case 2:
727
- _b.apply(_a, [_e.sent()]);
728
- upQueries.push(this.dropViewSql(view));
729
- _d = (_c = downQueries).push;
730
- return [4 /*yield*/, this.insertViewDefinitionSql(view)];
731
- case 3:
732
- _d.apply(_c, [_e.sent()]);
733
- downQueries.push(this.createViewSql(view));
734
- return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
735
- case 4:
736
- _e.sent();
737
- return [2 /*return*/];
738
- }
739
- });
740
- });
741
- };
450
+ async dropView(target) {
451
+ const viewName = target instanceof View_1.View ? target.name : target;
452
+ const view = await this.getCachedView(viewName);
453
+ const upQueries = [];
454
+ const downQueries = [];
455
+ upQueries.push(await this.deleteViewDefinitionSql(view));
456
+ upQueries.push(this.dropViewSql(view));
457
+ downQueries.push(await this.insertViewDefinitionSql(view));
458
+ downQueries.push(this.createViewSql(view));
459
+ await this.executeQueries(upQueries, downQueries);
460
+ }
742
461
  /**
743
462
  * Renames the given table.
744
463
  */
745
- SpannerQueryRunner.prototype.renameTable = function (oldTableOrName, newTableName) {
746
- return tslib_1.__awaiter(this, void 0, void 0, function () {
747
- return tslib_1.__generator(this, function (_a) {
748
- throw new error_1.TypeORMError("Rename table queries are not supported by Spanner driver.");
749
- });
750
- });
751
- };
464
+ async renameTable(oldTableOrName, newTableName) {
465
+ throw new error_1.TypeORMError(`Rename table queries are not supported by Spanner driver.`);
466
+ }
752
467
  /**
753
468
  * Creates a new column from the column in the table.
754
469
  */
755
- SpannerQueryRunner.prototype.addColumn = function (tableOrName, column) {
756
- return tslib_1.__awaiter(this, void 0, void 0, function () {
757
- var table, _a, clonedTable, upQueries, downQueries, columnIndex, uniqueIndex, insertQuery, deleteQuery;
758
- return tslib_1.__generator(this, function (_b) {
759
- switch (_b.label) {
760
- case 0:
761
- if (!(tableOrName instanceof Table_1.Table)) return [3 /*break*/, 1];
762
- _a = tableOrName;
763
- return [3 /*break*/, 3];
764
- case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];
765
- case 2:
766
- _a = _b.sent();
767
- _b.label = 3;
768
- case 3:
769
- table = _a;
770
- clonedTable = table.clone();
771
- upQueries = [];
772
- downQueries = [];
773
- upQueries.push(new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " ADD ").concat(this.buildCreateColumnSql(column))));
774
- downQueries.push(new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " DROP COLUMN ").concat(this.driver.escape(column.name))));
775
- columnIndex = clonedTable.indices.find(function (index) {
776
- return index.columnNames.length === 1 &&
777
- index.columnNames[0] === column.name;
778
- });
779
- if (columnIndex) {
780
- upQueries.push(this.createIndexSql(table, columnIndex));
781
- downQueries.push(this.dropIndexSql(table, columnIndex));
782
- }
783
- else if (column.isUnique) {
784
- uniqueIndex = new TableIndex_1.TableIndex({
785
- name: this.connection.namingStrategy.indexName(table, [
786
- column.name,
787
- ]),
788
- columnNames: [column.name],
789
- isUnique: true,
790
- });
791
- clonedTable.indices.push(uniqueIndex);
792
- clonedTable.uniques.push(new TableUnique_1.TableUnique({
793
- name: uniqueIndex.name,
794
- columnNames: uniqueIndex.columnNames,
795
- }));
796
- upQueries.push(this.createIndexSql(table, uniqueIndex));
797
- downQueries.push(this.dropIndexSql(table, uniqueIndex));
798
- }
799
- if (column.generatedType && column.asExpression) {
800
- insertQuery = this.insertTypeormMetadataSql({
801
- table: table.name,
802
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
803
- name: column.name,
804
- value: column.asExpression,
805
- });
806
- deleteQuery = this.deleteTypeormMetadataSql({
807
- table: table.name,
808
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
809
- name: column.name,
810
- });
811
- upQueries.push(insertQuery);
812
- downQueries.push(deleteQuery);
813
- }
814
- return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
815
- case 4:
816
- _b.sent();
817
- clonedTable.addColumn(column);
818
- this.replaceCachedTable(table, clonedTable);
819
- return [2 /*return*/];
820
- }
821
- });
822
- });
823
- };
470
+ async addColumn(tableOrName, column) {
471
+ const table = tableOrName instanceof Table_1.Table
472
+ ? tableOrName
473
+ : await this.getCachedTable(tableOrName);
474
+ const clonedTable = table.clone();
475
+ const upQueries = [];
476
+ const downQueries = [];
477
+ upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column)}`));
478
+ downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN ${this.driver.escape(column.name)}`));
479
+ // create column index
480
+ const columnIndex = clonedTable.indices.find((index) => index.columnNames.length === 1 &&
481
+ index.columnNames[0] === column.name);
482
+ if (columnIndex) {
483
+ upQueries.push(this.createIndexSql(table, columnIndex));
484
+ downQueries.push(this.dropIndexSql(table, columnIndex));
485
+ }
486
+ else if (column.isUnique) {
487
+ const uniqueIndex = new TableIndex_1.TableIndex({
488
+ name: this.connection.namingStrategy.indexName(table, [
489
+ column.name,
490
+ ]),
491
+ columnNames: [column.name],
492
+ isUnique: true,
493
+ });
494
+ clonedTable.indices.push(uniqueIndex);
495
+ clonedTable.uniques.push(new TableUnique_1.TableUnique({
496
+ name: uniqueIndex.name,
497
+ columnNames: uniqueIndex.columnNames,
498
+ }));
499
+ upQueries.push(this.createIndexSql(table, uniqueIndex));
500
+ downQueries.push(this.dropIndexSql(table, uniqueIndex));
501
+ }
502
+ if (column.generatedType && column.asExpression) {
503
+ const insertQuery = this.insertTypeormMetadataSql({
504
+ table: table.name,
505
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
506
+ name: column.name,
507
+ value: column.asExpression,
508
+ });
509
+ const deleteQuery = this.deleteTypeormMetadataSql({
510
+ table: table.name,
511
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
512
+ name: column.name,
513
+ });
514
+ upQueries.push(insertQuery);
515
+ downQueries.push(deleteQuery);
516
+ }
517
+ await this.executeQueries(upQueries, downQueries);
518
+ clonedTable.addColumn(column);
519
+ this.replaceCachedTable(table, clonedTable);
520
+ }
824
521
  /**
825
522
  * Creates a new columns from the column in the table.
826
523
  */
827
- SpannerQueryRunner.prototype.addColumns = function (tableOrName, columns) {
828
- return tslib_1.__awaiter(this, void 0, void 0, function () {
829
- var columns_1, columns_1_1, column, e_3_1;
830
- var e_3, _a;
831
- return tslib_1.__generator(this, function (_b) {
832
- switch (_b.label) {
833
- case 0:
834
- _b.trys.push([0, 5, 6, 7]);
835
- columns_1 = tslib_1.__values(columns), columns_1_1 = columns_1.next();
836
- _b.label = 1;
837
- case 1:
838
- if (!!columns_1_1.done) return [3 /*break*/, 4];
839
- column = columns_1_1.value;
840
- return [4 /*yield*/, this.addColumn(tableOrName, column)];
841
- case 2:
842
- _b.sent();
843
- _b.label = 3;
844
- case 3:
845
- columns_1_1 = columns_1.next();
846
- return [3 /*break*/, 1];
847
- case 4: return [3 /*break*/, 7];
848
- case 5:
849
- e_3_1 = _b.sent();
850
- e_3 = { error: e_3_1 };
851
- return [3 /*break*/, 7];
852
- case 6:
853
- try {
854
- if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
855
- }
856
- finally { if (e_3) throw e_3.error; }
857
- return [7 /*endfinally*/];
858
- case 7: return [2 /*return*/];
859
- }
860
- });
861
- });
862
- };
524
+ async addColumns(tableOrName, columns) {
525
+ for (const column of columns) {
526
+ await this.addColumn(tableOrName, column);
527
+ }
528
+ }
863
529
  /**
864
530
  * Renames column in the given table.
865
531
  */
866
- SpannerQueryRunner.prototype.renameColumn = function (tableOrName, oldTableColumnOrName, newTableColumnOrName) {
867
- return tslib_1.__awaiter(this, void 0, void 0, function () {
868
- var table, _a, oldColumn, newColumn;
869
- return tslib_1.__generator(this, function (_b) {
870
- switch (_b.label) {
871
- case 0:
872
- if (!(tableOrName instanceof Table_1.Table)) return [3 /*break*/, 1];
873
- _a = tableOrName;
874
- return [3 /*break*/, 3];
875
- case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];
876
- case 2:
877
- _a = _b.sent();
878
- _b.label = 3;
879
- case 3:
880
- table = _a;
881
- oldColumn = oldTableColumnOrName instanceof TableColumn_1.TableColumn
882
- ? oldTableColumnOrName
883
- : table.columns.find(function (c) { return c.name === oldTableColumnOrName; });
884
- if (!oldColumn)
885
- throw new error_1.TypeORMError("Column \"".concat(oldTableColumnOrName, "\" was not found in the \"").concat(table.name, "\" table."));
886
- if (newTableColumnOrName instanceof TableColumn_1.TableColumn) {
887
- newColumn = newTableColumnOrName;
888
- }
889
- else {
890
- newColumn = oldColumn.clone();
891
- newColumn.name = newTableColumnOrName;
892
- }
893
- return [2 /*return*/, this.changeColumn(table, oldColumn, newColumn)];
894
- }
895
- });
896
- });
897
- };
532
+ async renameColumn(tableOrName, oldTableColumnOrName, newTableColumnOrName) {
533
+ const table = tableOrName instanceof Table_1.Table
534
+ ? tableOrName
535
+ : await this.getCachedTable(tableOrName);
536
+ const oldColumn = oldTableColumnOrName instanceof TableColumn_1.TableColumn
537
+ ? oldTableColumnOrName
538
+ : table.columns.find((c) => c.name === oldTableColumnOrName);
539
+ if (!oldColumn)
540
+ throw new error_1.TypeORMError(`Column "${oldTableColumnOrName}" was not found in the "${table.name}" table.`);
541
+ let newColumn;
542
+ if (newTableColumnOrName instanceof TableColumn_1.TableColumn) {
543
+ newColumn = newTableColumnOrName;
544
+ }
545
+ else {
546
+ newColumn = oldColumn.clone();
547
+ newColumn.name = newTableColumnOrName;
548
+ }
549
+ return this.changeColumn(table, oldColumn, newColumn);
550
+ }
898
551
  /**
899
552
  * Changes a column in the table.
900
553
  */
901
- SpannerQueryRunner.prototype.changeColumn = function (tableOrName, oldTableColumnOrName, newColumn) {
902
- return tslib_1.__awaiter(this, void 0, void 0, function () {
903
- var table, _a, clonedTable, upQueries, downQueries, oldColumn, uniqueIndex, uniqueIndex_1, tableUnique;
904
- return tslib_1.__generator(this, function (_b) {
905
- switch (_b.label) {
906
- case 0:
907
- if (!(tableOrName instanceof Table_1.Table)) return [3 /*break*/, 1];
908
- _a = tableOrName;
909
- return [3 /*break*/, 3];
910
- case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];
911
- case 2:
912
- _a = _b.sent();
913
- _b.label = 3;
914
- case 3:
915
- table = _a;
916
- clonedTable = table.clone();
917
- upQueries = [];
918
- downQueries = [];
919
- oldColumn = oldTableColumnOrName instanceof TableColumn_1.TableColumn
920
- ? oldTableColumnOrName
921
- : table.columns.find(function (column) { return column.name === oldTableColumnOrName; });
922
- if (!oldColumn)
923
- throw new error_1.TypeORMError("Column \"".concat(oldTableColumnOrName, "\" was not found in the \"").concat(table.name, "\" table."));
924
- if (!(oldColumn.name !== newColumn.name ||
925
- oldColumn.type !== newColumn.type ||
926
- oldColumn.length !== newColumn.length ||
927
- oldColumn.isArray !== newColumn.isArray ||
928
- oldColumn.generatedType !== newColumn.generatedType ||
929
- oldColumn.asExpression !== newColumn.asExpression)) return [3 /*break*/, 6];
930
- // To avoid data conversion, we just recreate column
931
- return [4 /*yield*/, this.dropColumn(table, oldColumn)];
932
- case 4:
933
- // To avoid data conversion, we just recreate column
934
- _b.sent();
935
- return [4 /*yield*/, this.addColumn(table, newColumn)
936
- // update cloned table
937
- ];
938
- case 5:
939
- _b.sent();
940
- // update cloned table
941
- clonedTable = table.clone();
942
- return [3 /*break*/, 7];
943
- case 6:
944
- if (newColumn.precision !== oldColumn.precision ||
945
- newColumn.scale !== oldColumn.scale) {
946
- upQueries.push(new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " ALTER COLUMN \"").concat(newColumn.name, "\" TYPE ").concat(this.driver.createFullType(newColumn))));
947
- downQueries.push(new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " ALTER COLUMN \"").concat(newColumn.name, "\" TYPE ").concat(this.driver.createFullType(oldColumn))));
948
- }
949
- if (oldColumn.isNullable !== newColumn.isNullable) {
950
- if (newColumn.isNullable) {
951
- upQueries.push(new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " ALTER COLUMN \"").concat(oldColumn.name, "\" DROP NOT NULL")));
952
- downQueries.push(new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " ALTER COLUMN \"").concat(oldColumn.name, "\" SET NOT NULL")));
953
- }
954
- else {
955
- upQueries.push(new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " ALTER COLUMN \"").concat(oldColumn.name, "\" SET NOT NULL")));
956
- downQueries.push(new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " ALTER COLUMN \"").concat(oldColumn.name, "\" DROP NOT NULL")));
957
- }
958
- }
959
- if (newColumn.isUnique !== oldColumn.isUnique) {
960
- if (newColumn.isUnique === true) {
961
- uniqueIndex = new TableIndex_1.TableIndex({
962
- name: this.connection.namingStrategy.indexName(table, [
963
- newColumn.name,
964
- ]),
965
- columnNames: [newColumn.name],
966
- isUnique: true,
967
- });
968
- clonedTable.indices.push(uniqueIndex);
969
- clonedTable.uniques.push(new TableUnique_1.TableUnique({
970
- name: uniqueIndex.name,
971
- columnNames: uniqueIndex.columnNames,
972
- }));
973
- upQueries.push(this.createIndexSql(table, uniqueIndex));
974
- downQueries.push(this.dropIndexSql(table, uniqueIndex));
975
- }
976
- else {
977
- uniqueIndex_1 = clonedTable.indices.find(function (index) {
978
- return (index.columnNames.length === 1 &&
979
- index.isUnique === true &&
980
- !!index.columnNames.find(function (columnName) { return columnName === newColumn.name; }));
981
- });
982
- clonedTable.indices.splice(clonedTable.indices.indexOf(uniqueIndex_1), 1);
983
- tableUnique = clonedTable.uniques.find(function (unique) { return unique.name === uniqueIndex_1.name; });
984
- clonedTable.uniques.splice(clonedTable.uniques.indexOf(tableUnique), 1);
985
- upQueries.push(this.dropIndexSql(table, uniqueIndex_1));
986
- downQueries.push(this.createIndexSql(table, uniqueIndex_1));
987
- }
988
- }
989
- _b.label = 7;
990
- case 7: return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
991
- case 8:
992
- _b.sent();
993
- this.replaceCachedTable(table, clonedTable);
994
- return [2 /*return*/];
554
+ async changeColumn(tableOrName, oldTableColumnOrName, newColumn) {
555
+ const table = tableOrName instanceof Table_1.Table
556
+ ? tableOrName
557
+ : await this.getCachedTable(tableOrName);
558
+ let clonedTable = table.clone();
559
+ const upQueries = [];
560
+ const downQueries = [];
561
+ const oldColumn = oldTableColumnOrName instanceof TableColumn_1.TableColumn
562
+ ? oldTableColumnOrName
563
+ : table.columns.find((column) => column.name === oldTableColumnOrName);
564
+ if (!oldColumn)
565
+ throw new error_1.TypeORMError(`Column "${oldTableColumnOrName}" was not found in the "${table.name}" table.`);
566
+ if (oldColumn.name !== newColumn.name ||
567
+ oldColumn.type !== newColumn.type ||
568
+ oldColumn.length !== newColumn.length ||
569
+ oldColumn.isArray !== newColumn.isArray ||
570
+ oldColumn.generatedType !== newColumn.generatedType ||
571
+ oldColumn.asExpression !== newColumn.asExpression) {
572
+ // To avoid data conversion, we just recreate column
573
+ await this.dropColumn(table, oldColumn);
574
+ await this.addColumn(table, newColumn);
575
+ // update cloned table
576
+ clonedTable = table.clone();
577
+ }
578
+ else {
579
+ if (newColumn.precision !== oldColumn.precision ||
580
+ newColumn.scale !== oldColumn.scale) {
581
+ upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ALTER COLUMN "${newColumn.name}" TYPE ${this.driver.createFullType(newColumn)}`));
582
+ downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ALTER COLUMN "${newColumn.name}" TYPE ${this.driver.createFullType(oldColumn)}`));
583
+ }
584
+ if (oldColumn.isNullable !== newColumn.isNullable) {
585
+ if (newColumn.isNullable) {
586
+ upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ALTER COLUMN "${oldColumn.name}" DROP NOT NULL`));
587
+ downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ALTER COLUMN "${oldColumn.name}" SET NOT NULL`));
995
588
  }
996
- });
997
- });
998
- };
589
+ else {
590
+ upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ALTER COLUMN "${oldColumn.name}" SET NOT NULL`));
591
+ downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ALTER COLUMN "${oldColumn.name}" DROP NOT NULL`));
592
+ }
593
+ }
594
+ if (newColumn.isUnique !== oldColumn.isUnique) {
595
+ if (newColumn.isUnique === true) {
596
+ const uniqueIndex = new TableIndex_1.TableIndex({
597
+ name: this.connection.namingStrategy.indexName(table, [
598
+ newColumn.name,
599
+ ]),
600
+ columnNames: [newColumn.name],
601
+ isUnique: true,
602
+ });
603
+ clonedTable.indices.push(uniqueIndex);
604
+ clonedTable.uniques.push(new TableUnique_1.TableUnique({
605
+ name: uniqueIndex.name,
606
+ columnNames: uniqueIndex.columnNames,
607
+ }));
608
+ upQueries.push(this.createIndexSql(table, uniqueIndex));
609
+ downQueries.push(this.dropIndexSql(table, uniqueIndex));
610
+ }
611
+ else {
612
+ const uniqueIndex = clonedTable.indices.find((index) => {
613
+ return (index.columnNames.length === 1 &&
614
+ index.isUnique === true &&
615
+ !!index.columnNames.find((columnName) => columnName === newColumn.name));
616
+ });
617
+ clonedTable.indices.splice(clonedTable.indices.indexOf(uniqueIndex), 1);
618
+ const tableUnique = clonedTable.uniques.find((unique) => unique.name === uniqueIndex.name);
619
+ clonedTable.uniques.splice(clonedTable.uniques.indexOf(tableUnique), 1);
620
+ upQueries.push(this.dropIndexSql(table, uniqueIndex));
621
+ downQueries.push(this.createIndexSql(table, uniqueIndex));
622
+ }
623
+ }
624
+ }
625
+ await this.executeQueries(upQueries, downQueries);
626
+ this.replaceCachedTable(table, clonedTable);
627
+ }
999
628
  /**
1000
629
  * Changes a column in the table.
1001
630
  */
1002
- SpannerQueryRunner.prototype.changeColumns = function (tableOrName, changedColumns) {
1003
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1004
- var changedColumns_1, changedColumns_1_1, _a, oldColumn, newColumn, e_4_1;
1005
- var e_4, _b;
1006
- return tslib_1.__generator(this, function (_c) {
1007
- switch (_c.label) {
1008
- case 0:
1009
- _c.trys.push([0, 5, 6, 7]);
1010
- changedColumns_1 = tslib_1.__values(changedColumns), changedColumns_1_1 = changedColumns_1.next();
1011
- _c.label = 1;
1012
- case 1:
1013
- if (!!changedColumns_1_1.done) return [3 /*break*/, 4];
1014
- _a = changedColumns_1_1.value, oldColumn = _a.oldColumn, newColumn = _a.newColumn;
1015
- return [4 /*yield*/, this.changeColumn(tableOrName, oldColumn, newColumn)];
1016
- case 2:
1017
- _c.sent();
1018
- _c.label = 3;
1019
- case 3:
1020
- changedColumns_1_1 = changedColumns_1.next();
1021
- return [3 /*break*/, 1];
1022
- case 4: return [3 /*break*/, 7];
1023
- case 5:
1024
- e_4_1 = _c.sent();
1025
- e_4 = { error: e_4_1 };
1026
- return [3 /*break*/, 7];
1027
- case 6:
1028
- try {
1029
- if (changedColumns_1_1 && !changedColumns_1_1.done && (_b = changedColumns_1.return)) _b.call(changedColumns_1);
1030
- }
1031
- finally { if (e_4) throw e_4.error; }
1032
- return [7 /*endfinally*/];
1033
- case 7: return [2 /*return*/];
1034
- }
1035
- });
1036
- });
1037
- };
631
+ async changeColumns(tableOrName, changedColumns) {
632
+ for (const { oldColumn, newColumn } of changedColumns) {
633
+ await this.changeColumn(tableOrName, oldColumn, newColumn);
634
+ }
635
+ }
1038
636
  /**
1039
637
  * Drops column in the table.
1040
638
  */
1041
- SpannerQueryRunner.prototype.dropColumn = function (tableOrName, columnOrName) {
1042
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1043
- var table, _a, column, clonedTable, upQueries, downQueries, columnIndex, columnCheck, deleteQuery, insertQuery;
1044
- return tslib_1.__generator(this, function (_b) {
1045
- switch (_b.label) {
1046
- case 0:
1047
- if (!(tableOrName instanceof Table_1.Table)) return [3 /*break*/, 1];
1048
- _a = tableOrName;
1049
- return [3 /*break*/, 3];
1050
- case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];
1051
- case 2:
1052
- _a = _b.sent();
1053
- _b.label = 3;
1054
- case 3:
1055
- table = _a;
1056
- column = columnOrName instanceof TableColumn_1.TableColumn
1057
- ? columnOrName
1058
- : table.findColumnByName(columnOrName);
1059
- if (!column)
1060
- throw new error_1.TypeORMError("Column \"".concat(columnOrName, "\" was not found in table \"").concat(table.name, "\""));
1061
- clonedTable = table.clone();
1062
- upQueries = [];
1063
- downQueries = [];
1064
- columnIndex = clonedTable.indices.find(function (index) {
1065
- return index.columnNames.length === 1 &&
1066
- index.columnNames[0] === column.name;
1067
- });
1068
- if (columnIndex) {
1069
- clonedTable.indices.splice(clonedTable.indices.indexOf(columnIndex), 1);
1070
- upQueries.push(this.dropIndexSql(table, columnIndex));
1071
- downQueries.push(this.createIndexSql(table, columnIndex));
1072
- }
1073
- columnCheck = clonedTable.checks.find(function (check) {
1074
- return !!check.columnNames &&
1075
- check.columnNames.length === 1 &&
1076
- check.columnNames[0] === column.name;
1077
- });
1078
- if (columnCheck) {
1079
- clonedTable.checks.splice(clonedTable.checks.indexOf(columnCheck), 1);
1080
- upQueries.push(this.dropCheckConstraintSql(table, columnCheck));
1081
- downQueries.push(this.createCheckConstraintSql(table, columnCheck));
1082
- }
1083
- upQueries.push(new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " DROP COLUMN ").concat(this.driver.escape(column.name))));
1084
- downQueries.push(new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " ADD ").concat(this.buildCreateColumnSql(column))));
1085
- if (column.generatedType && column.asExpression) {
1086
- deleteQuery = this.deleteTypeormMetadataSql({
1087
- table: table.name,
1088
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1089
- name: column.name,
1090
- });
1091
- insertQuery = this.insertTypeormMetadataSql({
1092
- table: table.name,
1093
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1094
- name: column.name,
1095
- value: column.asExpression,
1096
- });
1097
- upQueries.push(deleteQuery);
1098
- downQueries.push(insertQuery);
1099
- }
1100
- return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
1101
- case 4:
1102
- _b.sent();
1103
- clonedTable.removeColumn(column);
1104
- this.replaceCachedTable(table, clonedTable);
1105
- return [2 /*return*/];
1106
- }
1107
- });
1108
- });
1109
- };
639
+ async dropColumn(tableOrName, columnOrName) {
640
+ const table = tableOrName instanceof Table_1.Table
641
+ ? tableOrName
642
+ : await this.getCachedTable(tableOrName);
643
+ const column = columnOrName instanceof TableColumn_1.TableColumn
644
+ ? columnOrName
645
+ : table.findColumnByName(columnOrName);
646
+ if (!column)
647
+ throw new error_1.TypeORMError(`Column "${columnOrName}" was not found in table "${table.name}"`);
648
+ const clonedTable = table.clone();
649
+ const upQueries = [];
650
+ const downQueries = [];
651
+ // drop column index
652
+ const columnIndex = clonedTable.indices.find((index) => index.columnNames.length === 1 &&
653
+ index.columnNames[0] === column.name);
654
+ if (columnIndex) {
655
+ clonedTable.indices.splice(clonedTable.indices.indexOf(columnIndex), 1);
656
+ upQueries.push(this.dropIndexSql(table, columnIndex));
657
+ downQueries.push(this.createIndexSql(table, columnIndex));
658
+ }
659
+ // drop column check
660
+ const columnCheck = clonedTable.checks.find((check) => !!check.columnNames &&
661
+ check.columnNames.length === 1 &&
662
+ check.columnNames[0] === column.name);
663
+ if (columnCheck) {
664
+ clonedTable.checks.splice(clonedTable.checks.indexOf(columnCheck), 1);
665
+ upQueries.push(this.dropCheckConstraintSql(table, columnCheck));
666
+ downQueries.push(this.createCheckConstraintSql(table, columnCheck));
667
+ }
668
+ upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN ${this.driver.escape(column.name)}`));
669
+ downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column)}`));
670
+ if (column.generatedType && column.asExpression) {
671
+ const deleteQuery = this.deleteTypeormMetadataSql({
672
+ table: table.name,
673
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
674
+ name: column.name,
675
+ });
676
+ const insertQuery = this.insertTypeormMetadataSql({
677
+ table: table.name,
678
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
679
+ name: column.name,
680
+ value: column.asExpression,
681
+ });
682
+ upQueries.push(deleteQuery);
683
+ downQueries.push(insertQuery);
684
+ }
685
+ await this.executeQueries(upQueries, downQueries);
686
+ clonedTable.removeColumn(column);
687
+ this.replaceCachedTable(table, clonedTable);
688
+ }
1110
689
  /**
1111
690
  * Drops the columns in the table.
1112
691
  */
1113
- SpannerQueryRunner.prototype.dropColumns = function (tableOrName, columns) {
1114
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1115
- var columns_2, columns_2_1, column, e_5_1;
1116
- var e_5, _a;
1117
- return tslib_1.__generator(this, function (_b) {
1118
- switch (_b.label) {
1119
- case 0:
1120
- _b.trys.push([0, 5, 6, 7]);
1121
- columns_2 = tslib_1.__values(columns), columns_2_1 = columns_2.next();
1122
- _b.label = 1;
1123
- case 1:
1124
- if (!!columns_2_1.done) return [3 /*break*/, 4];
1125
- column = columns_2_1.value;
1126
- return [4 /*yield*/, this.dropColumn(tableOrName, column)];
1127
- case 2:
1128
- _b.sent();
1129
- _b.label = 3;
1130
- case 3:
1131
- columns_2_1 = columns_2.next();
1132
- return [3 /*break*/, 1];
1133
- case 4: return [3 /*break*/, 7];
1134
- case 5:
1135
- e_5_1 = _b.sent();
1136
- e_5 = { error: e_5_1 };
1137
- return [3 /*break*/, 7];
1138
- case 6:
1139
- try {
1140
- if (columns_2_1 && !columns_2_1.done && (_a = columns_2.return)) _a.call(columns_2);
1141
- }
1142
- finally { if (e_5) throw e_5.error; }
1143
- return [7 /*endfinally*/];
1144
- case 7: return [2 /*return*/];
1145
- }
1146
- });
1147
- });
1148
- };
692
+ async dropColumns(tableOrName, columns) {
693
+ for (const column of columns) {
694
+ await this.dropColumn(tableOrName, column);
695
+ }
696
+ }
1149
697
  /**
1150
698
  * Creates a new primary key.
1151
699
  *
1152
700
  * Not supported in Spanner.
1153
701
  * @see https://cloud.google.com/spanner/docs/schema-and-data-model#notes_about_key_columns
1154
702
  */
1155
- SpannerQueryRunner.prototype.createPrimaryKey = function (tableOrName, columnNames) {
1156
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1157
- return tslib_1.__generator(this, function (_a) {
1158
- throw new Error("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.");
1159
- });
1160
- });
1161
- };
703
+ async createPrimaryKey(tableOrName, columnNames) {
704
+ throw new Error("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.");
705
+ }
1162
706
  /**
1163
707
  * Updates composite primary keys.
1164
708
  */
1165
- SpannerQueryRunner.prototype.updatePrimaryKeys = function (tableOrName, columns) {
1166
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1167
- return tslib_1.__generator(this, function (_a) {
1168
- throw new Error("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.");
1169
- });
1170
- });
1171
- };
709
+ async updatePrimaryKeys(tableOrName, columns) {
710
+ throw new Error("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.");
711
+ }
1172
712
  /**
1173
713
  * Creates a new primary key.
1174
714
  *
1175
715
  * Not supported in Spanner.
1176
716
  * @see https://cloud.google.com/spanner/docs/schema-and-data-model#notes_about_key_columns
1177
717
  */
1178
- SpannerQueryRunner.prototype.dropPrimaryKey = function (tableOrName) {
1179
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1180
- return tslib_1.__generator(this, function (_a) {
1181
- throw new Error("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.");
1182
- });
1183
- });
1184
- };
718
+ async dropPrimaryKey(tableOrName) {
719
+ throw new Error("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.");
720
+ }
1185
721
  /**
1186
722
  * Creates new unique constraint.
1187
723
  */
1188
- SpannerQueryRunner.prototype.createUniqueConstraint = function (tableOrName, uniqueConstraint) {
1189
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1190
- return tslib_1.__generator(this, function (_a) {
1191
- throw new error_1.TypeORMError("Spanner does not support unique constraints. Use unique index instead.");
1192
- });
1193
- });
1194
- };
724
+ async createUniqueConstraint(tableOrName, uniqueConstraint) {
725
+ throw new error_1.TypeORMError(`Spanner does not support unique constraints. Use unique index instead.`);
726
+ }
1195
727
  /**
1196
728
  * Creates new unique constraints.
1197
729
  */
1198
- SpannerQueryRunner.prototype.createUniqueConstraints = function (tableOrName, uniqueConstraints) {
1199
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1200
- return tslib_1.__generator(this, function (_a) {
1201
- throw new error_1.TypeORMError("Spanner does not support unique constraints. Use unique index instead.");
1202
- });
1203
- });
1204
- };
730
+ async createUniqueConstraints(tableOrName, uniqueConstraints) {
731
+ throw new error_1.TypeORMError(`Spanner does not support unique constraints. Use unique index instead.`);
732
+ }
1205
733
  /**
1206
734
  * Drops unique constraint.
1207
735
  */
1208
- SpannerQueryRunner.prototype.dropUniqueConstraint = function (tableOrName, uniqueOrName) {
1209
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1210
- return tslib_1.__generator(this, function (_a) {
1211
- throw new error_1.TypeORMError("Spanner does not support unique constraints. Use unique index instead.");
1212
- });
1213
- });
1214
- };
736
+ async dropUniqueConstraint(tableOrName, uniqueOrName) {
737
+ throw new error_1.TypeORMError(`Spanner does not support unique constraints. Use unique index instead.`);
738
+ }
1215
739
  /**
1216
740
  * Drops unique constraints.
1217
741
  */
1218
- SpannerQueryRunner.prototype.dropUniqueConstraints = function (tableOrName, uniqueConstraints) {
1219
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1220
- return tslib_1.__generator(this, function (_a) {
1221
- throw new error_1.TypeORMError("Spanner does not support unique constraints. Use unique index instead.");
1222
- });
1223
- });
1224
- };
742
+ async dropUniqueConstraints(tableOrName, uniqueConstraints) {
743
+ throw new error_1.TypeORMError(`Spanner does not support unique constraints. Use unique index instead.`);
744
+ }
1225
745
  /**
1226
746
  * Creates new check constraint.
1227
747
  */
1228
- SpannerQueryRunner.prototype.createCheckConstraint = function (tableOrName, checkConstraint) {
1229
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1230
- var table, _a, up, down;
1231
- return tslib_1.__generator(this, function (_b) {
1232
- switch (_b.label) {
1233
- case 0:
1234
- if (!(tableOrName instanceof Table_1.Table)) return [3 /*break*/, 1];
1235
- _a = tableOrName;
1236
- return [3 /*break*/, 3];
1237
- case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)
1238
- // new check constraint may be passed without name. In this case we generate unique name manually.
1239
- ];
1240
- case 2:
1241
- _a = _b.sent();
1242
- _b.label = 3;
1243
- case 3:
1244
- table = _a;
1245
- // new check constraint may be passed without name. In this case we generate unique name manually.
1246
- if (!checkConstraint.name)
1247
- checkConstraint.name =
1248
- this.connection.namingStrategy.checkConstraintName(table, checkConstraint.expression);
1249
- up = this.createCheckConstraintSql(table, checkConstraint);
1250
- down = this.dropCheckConstraintSql(table, checkConstraint);
1251
- return [4 /*yield*/, this.executeQueries(up, down)];
1252
- case 4:
1253
- _b.sent();
1254
- table.addCheckConstraint(checkConstraint);
1255
- return [2 /*return*/];
1256
- }
1257
- });
1258
- });
1259
- };
748
+ async createCheckConstraint(tableOrName, checkConstraint) {
749
+ const table = tableOrName instanceof Table_1.Table
750
+ ? tableOrName
751
+ : await this.getCachedTable(tableOrName);
752
+ // new check constraint may be passed without name. In this case we generate unique name manually.
753
+ if (!checkConstraint.name)
754
+ checkConstraint.name =
755
+ this.connection.namingStrategy.checkConstraintName(table, checkConstraint.expression);
756
+ const up = this.createCheckConstraintSql(table, checkConstraint);
757
+ const down = this.dropCheckConstraintSql(table, checkConstraint);
758
+ await this.executeQueries(up, down);
759
+ table.addCheckConstraint(checkConstraint);
760
+ }
1260
761
  /**
1261
762
  * Creates new check constraints.
1262
763
  */
1263
- SpannerQueryRunner.prototype.createCheckConstraints = function (tableOrName, checkConstraints) {
1264
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1265
- var promises;
1266
- var _this = this;
1267
- return tslib_1.__generator(this, function (_a) {
1268
- switch (_a.label) {
1269
- case 0:
1270
- promises = checkConstraints.map(function (checkConstraint) {
1271
- return _this.createCheckConstraint(tableOrName, checkConstraint);
1272
- });
1273
- return [4 /*yield*/, Promise.all(promises)];
1274
- case 1:
1275
- _a.sent();
1276
- return [2 /*return*/];
1277
- }
1278
- });
1279
- });
1280
- };
764
+ async createCheckConstraints(tableOrName, checkConstraints) {
765
+ const promises = checkConstraints.map((checkConstraint) => this.createCheckConstraint(tableOrName, checkConstraint));
766
+ await Promise.all(promises);
767
+ }
1281
768
  /**
1282
769
  * Drops check constraint.
1283
770
  */
1284
- SpannerQueryRunner.prototype.dropCheckConstraint = function (tableOrName, checkOrName) {
1285
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1286
- var table, _a, checkConstraint, up, down;
1287
- return tslib_1.__generator(this, function (_b) {
1288
- switch (_b.label) {
1289
- case 0:
1290
- if (!(tableOrName instanceof Table_1.Table)) return [3 /*break*/, 1];
1291
- _a = tableOrName;
1292
- return [3 /*break*/, 3];
1293
- case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];
1294
- case 2:
1295
- _a = _b.sent();
1296
- _b.label = 3;
1297
- case 3:
1298
- table = _a;
1299
- checkConstraint = checkOrName instanceof TableCheck_1.TableCheck
1300
- ? checkOrName
1301
- : table.checks.find(function (c) { return c.name === checkOrName; });
1302
- if (!checkConstraint)
1303
- throw new error_1.TypeORMError("Supplied check constraint was not found in table ".concat(table.name));
1304
- up = this.dropCheckConstraintSql(table, checkConstraint);
1305
- down = this.createCheckConstraintSql(table, checkConstraint);
1306
- return [4 /*yield*/, this.executeQueries(up, down)];
1307
- case 4:
1308
- _b.sent();
1309
- table.removeCheckConstraint(checkConstraint);
1310
- return [2 /*return*/];
1311
- }
1312
- });
1313
- });
1314
- };
771
+ async dropCheckConstraint(tableOrName, checkOrName) {
772
+ const table = tableOrName instanceof Table_1.Table
773
+ ? tableOrName
774
+ : await this.getCachedTable(tableOrName);
775
+ const checkConstraint = checkOrName instanceof TableCheck_1.TableCheck
776
+ ? checkOrName
777
+ : table.checks.find((c) => c.name === checkOrName);
778
+ if (!checkConstraint)
779
+ throw new error_1.TypeORMError(`Supplied check constraint was not found in table ${table.name}`);
780
+ const up = this.dropCheckConstraintSql(table, checkConstraint);
781
+ const down = this.createCheckConstraintSql(table, checkConstraint);
782
+ await this.executeQueries(up, down);
783
+ table.removeCheckConstraint(checkConstraint);
784
+ }
1315
785
  /**
1316
786
  * Drops check constraints.
1317
787
  */
1318
- SpannerQueryRunner.prototype.dropCheckConstraints = function (tableOrName, checkConstraints) {
1319
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1320
- var promises;
1321
- var _this = this;
1322
- return tslib_1.__generator(this, function (_a) {
1323
- switch (_a.label) {
1324
- case 0:
1325
- promises = checkConstraints.map(function (checkConstraint) {
1326
- return _this.dropCheckConstraint(tableOrName, checkConstraint);
1327
- });
1328
- return [4 /*yield*/, Promise.all(promises)];
1329
- case 1:
1330
- _a.sent();
1331
- return [2 /*return*/];
1332
- }
1333
- });
1334
- });
1335
- };
788
+ async dropCheckConstraints(tableOrName, checkConstraints) {
789
+ const promises = checkConstraints.map((checkConstraint) => this.dropCheckConstraint(tableOrName, checkConstraint));
790
+ await Promise.all(promises);
791
+ }
1336
792
  /**
1337
793
  * Creates new exclusion constraint.
1338
794
  */
1339
- SpannerQueryRunner.prototype.createExclusionConstraint = function (tableOrName, exclusionConstraint) {
1340
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1341
- return tslib_1.__generator(this, function (_a) {
1342
- throw new error_1.TypeORMError("Spanner does not support exclusion constraints.");
1343
- });
1344
- });
1345
- };
795
+ async createExclusionConstraint(tableOrName, exclusionConstraint) {
796
+ throw new error_1.TypeORMError(`Spanner does not support exclusion constraints.`);
797
+ }
1346
798
  /**
1347
799
  * Creates new exclusion constraints.
1348
800
  */
1349
- SpannerQueryRunner.prototype.createExclusionConstraints = function (tableOrName, exclusionConstraints) {
1350
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1351
- return tslib_1.__generator(this, function (_a) {
1352
- throw new error_1.TypeORMError("Spanner does not support exclusion constraints.");
1353
- });
1354
- });
1355
- };
801
+ async createExclusionConstraints(tableOrName, exclusionConstraints) {
802
+ throw new error_1.TypeORMError(`Spanner does not support exclusion constraints.`);
803
+ }
1356
804
  /**
1357
805
  * Drops exclusion constraint.
1358
806
  */
1359
- SpannerQueryRunner.prototype.dropExclusionConstraint = function (tableOrName, exclusionOrName) {
1360
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1361
- return tslib_1.__generator(this, function (_a) {
1362
- throw new error_1.TypeORMError("Spanner does not support exclusion constraints.");
1363
- });
1364
- });
1365
- };
807
+ async dropExclusionConstraint(tableOrName, exclusionOrName) {
808
+ throw new error_1.TypeORMError(`Spanner does not support exclusion constraints.`);
809
+ }
1366
810
  /**
1367
811
  * Drops exclusion constraints.
1368
812
  */
1369
- SpannerQueryRunner.prototype.dropExclusionConstraints = function (tableOrName, exclusionConstraints) {
1370
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1371
- return tslib_1.__generator(this, function (_a) {
1372
- throw new error_1.TypeORMError("Spanner does not support exclusion constraints.");
1373
- });
1374
- });
1375
- };
813
+ async dropExclusionConstraints(tableOrName, exclusionConstraints) {
814
+ throw new error_1.TypeORMError(`Spanner does not support exclusion constraints.`);
815
+ }
1376
816
  /**
1377
817
  * Creates a new foreign key.
1378
818
  */
1379
- SpannerQueryRunner.prototype.createForeignKey = function (tableOrName, foreignKey) {
1380
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1381
- var table, _a, up, down;
1382
- return tslib_1.__generator(this, function (_b) {
1383
- switch (_b.label) {
1384
- case 0:
1385
- if (!(tableOrName instanceof Table_1.Table)) return [3 /*break*/, 1];
1386
- _a = tableOrName;
1387
- return [3 /*break*/, 3];
1388
- case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)
1389
- // new FK may be passed without name. In this case we generate FK name manually.
1390
- ];
1391
- case 2:
1392
- _a = _b.sent();
1393
- _b.label = 3;
1394
- case 3:
1395
- table = _a;
1396
- // new FK may be passed without name. In this case we generate FK name manually.
1397
- if (!foreignKey.name)
1398
- foreignKey.name = this.connection.namingStrategy.foreignKeyName(table, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
1399
- up = this.createForeignKeySql(table, foreignKey);
1400
- down = this.dropForeignKeySql(table, foreignKey);
1401
- return [4 /*yield*/, this.executeQueries(up, down)];
1402
- case 4:
1403
- _b.sent();
1404
- table.addForeignKey(foreignKey);
1405
- return [2 /*return*/];
1406
- }
1407
- });
1408
- });
1409
- };
819
+ async createForeignKey(tableOrName, foreignKey) {
820
+ const table = tableOrName instanceof Table_1.Table
821
+ ? tableOrName
822
+ : await this.getCachedTable(tableOrName);
823
+ // new FK may be passed without name. In this case we generate FK name manually.
824
+ if (!foreignKey.name)
825
+ foreignKey.name = this.connection.namingStrategy.foreignKeyName(table, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
826
+ const up = this.createForeignKeySql(table, foreignKey);
827
+ const down = this.dropForeignKeySql(table, foreignKey);
828
+ await this.executeQueries(up, down);
829
+ table.addForeignKey(foreignKey);
830
+ }
1410
831
  /**
1411
832
  * Creates a new foreign keys.
1412
833
  */
1413
- SpannerQueryRunner.prototype.createForeignKeys = function (tableOrName, foreignKeys) {
1414
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1415
- var foreignKeys_1, foreignKeys_1_1, foreignKey, e_6_1;
1416
- var e_6, _a;
1417
- return tslib_1.__generator(this, function (_b) {
1418
- switch (_b.label) {
1419
- case 0:
1420
- _b.trys.push([0, 5, 6, 7]);
1421
- foreignKeys_1 = tslib_1.__values(foreignKeys), foreignKeys_1_1 = foreignKeys_1.next();
1422
- _b.label = 1;
1423
- case 1:
1424
- if (!!foreignKeys_1_1.done) return [3 /*break*/, 4];
1425
- foreignKey = foreignKeys_1_1.value;
1426
- return [4 /*yield*/, this.createForeignKey(tableOrName, foreignKey)];
1427
- case 2:
1428
- _b.sent();
1429
- _b.label = 3;
1430
- case 3:
1431
- foreignKeys_1_1 = foreignKeys_1.next();
1432
- return [3 /*break*/, 1];
1433
- case 4: return [3 /*break*/, 7];
1434
- case 5:
1435
- e_6_1 = _b.sent();
1436
- e_6 = { error: e_6_1 };
1437
- return [3 /*break*/, 7];
1438
- case 6:
1439
- try {
1440
- if (foreignKeys_1_1 && !foreignKeys_1_1.done && (_a = foreignKeys_1.return)) _a.call(foreignKeys_1);
1441
- }
1442
- finally { if (e_6) throw e_6.error; }
1443
- return [7 /*endfinally*/];
1444
- case 7: return [2 /*return*/];
1445
- }
1446
- });
1447
- });
1448
- };
834
+ async createForeignKeys(tableOrName, foreignKeys) {
835
+ for (const foreignKey of foreignKeys) {
836
+ await this.createForeignKey(tableOrName, foreignKey);
837
+ }
838
+ }
1449
839
  /**
1450
840
  * Drops a foreign key from the table.
1451
841
  */
1452
- SpannerQueryRunner.prototype.dropForeignKey = function (tableOrName, foreignKeyOrName) {
1453
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1454
- var table, _a, foreignKey, up, down;
1455
- return tslib_1.__generator(this, function (_b) {
1456
- switch (_b.label) {
1457
- case 0:
1458
- if (!(tableOrName instanceof Table_1.Table)) return [3 /*break*/, 1];
1459
- _a = tableOrName;
1460
- return [3 /*break*/, 3];
1461
- case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];
1462
- case 2:
1463
- _a = _b.sent();
1464
- _b.label = 3;
1465
- case 3:
1466
- table = _a;
1467
- foreignKey = foreignKeyOrName instanceof TableForeignKey_1.TableForeignKey
1468
- ? foreignKeyOrName
1469
- : table.foreignKeys.find(function (fk) { return fk.name === foreignKeyOrName; });
1470
- if (!foreignKey)
1471
- throw new error_1.TypeORMError("Supplied foreign key was not found in table ".concat(table.name));
1472
- up = this.dropForeignKeySql(table, foreignKey);
1473
- down = this.createForeignKeySql(table, foreignKey);
1474
- return [4 /*yield*/, this.executeQueries(up, down)];
1475
- case 4:
1476
- _b.sent();
1477
- table.removeForeignKey(foreignKey);
1478
- return [2 /*return*/];
1479
- }
1480
- });
1481
- });
1482
- };
842
+ async dropForeignKey(tableOrName, foreignKeyOrName) {
843
+ const table = tableOrName instanceof Table_1.Table
844
+ ? tableOrName
845
+ : await this.getCachedTable(tableOrName);
846
+ const foreignKey = foreignKeyOrName instanceof TableForeignKey_1.TableForeignKey
847
+ ? foreignKeyOrName
848
+ : table.foreignKeys.find((fk) => fk.name === foreignKeyOrName);
849
+ if (!foreignKey)
850
+ throw new error_1.TypeORMError(`Supplied foreign key was not found in table ${table.name}`);
851
+ const up = this.dropForeignKeySql(table, foreignKey);
852
+ const down = this.createForeignKeySql(table, foreignKey);
853
+ await this.executeQueries(up, down);
854
+ table.removeForeignKey(foreignKey);
855
+ }
1483
856
  /**
1484
857
  * Drops a foreign keys from the table.
1485
858
  */
1486
- SpannerQueryRunner.prototype.dropForeignKeys = function (tableOrName, foreignKeys) {
1487
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1488
- var foreignKeys_2, foreignKeys_2_1, foreignKey, e_7_1;
1489
- var e_7, _a;
1490
- return tslib_1.__generator(this, function (_b) {
1491
- switch (_b.label) {
1492
- case 0:
1493
- _b.trys.push([0, 5, 6, 7]);
1494
- foreignKeys_2 = tslib_1.__values(foreignKeys), foreignKeys_2_1 = foreignKeys_2.next();
1495
- _b.label = 1;
1496
- case 1:
1497
- if (!!foreignKeys_2_1.done) return [3 /*break*/, 4];
1498
- foreignKey = foreignKeys_2_1.value;
1499
- return [4 /*yield*/, this.dropForeignKey(tableOrName, foreignKey)];
1500
- case 2:
1501
- _b.sent();
1502
- _b.label = 3;
1503
- case 3:
1504
- foreignKeys_2_1 = foreignKeys_2.next();
1505
- return [3 /*break*/, 1];
1506
- case 4: return [3 /*break*/, 7];
1507
- case 5:
1508
- e_7_1 = _b.sent();
1509
- e_7 = { error: e_7_1 };
1510
- return [3 /*break*/, 7];
1511
- case 6:
1512
- try {
1513
- if (foreignKeys_2_1 && !foreignKeys_2_1.done && (_a = foreignKeys_2.return)) _a.call(foreignKeys_2);
1514
- }
1515
- finally { if (e_7) throw e_7.error; }
1516
- return [7 /*endfinally*/];
1517
- case 7: return [2 /*return*/];
1518
- }
1519
- });
1520
- });
1521
- };
859
+ async dropForeignKeys(tableOrName, foreignKeys) {
860
+ for (const foreignKey of foreignKeys) {
861
+ await this.dropForeignKey(tableOrName, foreignKey);
862
+ }
863
+ }
1522
864
  /**
1523
865
  * Creates a new index.
1524
866
  */
1525
- SpannerQueryRunner.prototype.createIndex = function (tableOrName, index) {
1526
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1527
- var table, _a, up, down;
1528
- return tslib_1.__generator(this, function (_b) {
1529
- switch (_b.label) {
1530
- case 0:
1531
- if (!(tableOrName instanceof Table_1.Table)) return [3 /*break*/, 1];
1532
- _a = tableOrName;
1533
- return [3 /*break*/, 3];
1534
- case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)
1535
- // new index may be passed without name. In this case we generate index name manually.
1536
- ];
1537
- case 2:
1538
- _a = _b.sent();
1539
- _b.label = 3;
1540
- case 3:
1541
- table = _a;
1542
- // new index may be passed without name. In this case we generate index name manually.
1543
- if (!index.name)
1544
- index.name = this.generateIndexName(table, index);
1545
- up = this.createIndexSql(table, index);
1546
- down = this.dropIndexSql(table, index);
1547
- return [4 /*yield*/, this.executeQueries(up, down)];
1548
- case 4:
1549
- _b.sent();
1550
- table.addIndex(index);
1551
- return [2 /*return*/];
1552
- }
1553
- });
1554
- });
1555
- };
867
+ async createIndex(tableOrName, index) {
868
+ const table = tableOrName instanceof Table_1.Table
869
+ ? tableOrName
870
+ : await this.getCachedTable(tableOrName);
871
+ // new index may be passed without name. In this case we generate index name manually.
872
+ if (!index.name)
873
+ index.name = this.generateIndexName(table, index);
874
+ const up = this.createIndexSql(table, index);
875
+ const down = this.dropIndexSql(table, index);
876
+ await this.executeQueries(up, down);
877
+ table.addIndex(index);
878
+ }
1556
879
  /**
1557
880
  * Creates a new indices
1558
881
  */
1559
- SpannerQueryRunner.prototype.createIndices = function (tableOrName, indices) {
1560
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1561
- var indices_1, indices_1_1, index, e_8_1;
1562
- var e_8, _a;
1563
- return tslib_1.__generator(this, function (_b) {
1564
- switch (_b.label) {
1565
- case 0:
1566
- _b.trys.push([0, 5, 6, 7]);
1567
- indices_1 = tslib_1.__values(indices), indices_1_1 = indices_1.next();
1568
- _b.label = 1;
1569
- case 1:
1570
- if (!!indices_1_1.done) return [3 /*break*/, 4];
1571
- index = indices_1_1.value;
1572
- return [4 /*yield*/, this.createIndex(tableOrName, index)];
1573
- case 2:
1574
- _b.sent();
1575
- _b.label = 3;
1576
- case 3:
1577
- indices_1_1 = indices_1.next();
1578
- return [3 /*break*/, 1];
1579
- case 4: return [3 /*break*/, 7];
1580
- case 5:
1581
- e_8_1 = _b.sent();
1582
- e_8 = { error: e_8_1 };
1583
- return [3 /*break*/, 7];
1584
- case 6:
1585
- try {
1586
- if (indices_1_1 && !indices_1_1.done && (_a = indices_1.return)) _a.call(indices_1);
1587
- }
1588
- finally { if (e_8) throw e_8.error; }
1589
- return [7 /*endfinally*/];
1590
- case 7: return [2 /*return*/];
1591
- }
1592
- });
1593
- });
1594
- };
882
+ async createIndices(tableOrName, indices) {
883
+ for (const index of indices) {
884
+ await this.createIndex(tableOrName, index);
885
+ }
886
+ }
1595
887
  /**
1596
888
  * Drops an index from the table.
1597
889
  */
1598
- SpannerQueryRunner.prototype.dropIndex = function (tableOrName, indexOrName) {
1599
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1600
- var table, _a, index, up, down;
1601
- return tslib_1.__generator(this, function (_b) {
1602
- switch (_b.label) {
1603
- case 0:
1604
- if (!(tableOrName instanceof Table_1.Table)) return [3 /*break*/, 1];
1605
- _a = tableOrName;
1606
- return [3 /*break*/, 3];
1607
- case 1: return [4 /*yield*/, this.getCachedTable(tableOrName)];
1608
- case 2:
1609
- _a = _b.sent();
1610
- _b.label = 3;
1611
- case 3:
1612
- table = _a;
1613
- index = indexOrName instanceof TableIndex_1.TableIndex
1614
- ? indexOrName
1615
- : table.indices.find(function (i) { return i.name === indexOrName; });
1616
- if (!index)
1617
- throw new error_1.TypeORMError("Supplied index ".concat(indexOrName, " was not found in table ").concat(table.name));
1618
- // new index may be passed without name. In this case we generate index name manually.
1619
- if (!index.name)
1620
- index.name = this.generateIndexName(table, index);
1621
- up = this.dropIndexSql(table, index);
1622
- down = this.createIndexSql(table, index);
1623
- return [4 /*yield*/, this.executeQueries(up, down)];
1624
- case 4:
1625
- _b.sent();
1626
- table.removeIndex(index);
1627
- return [2 /*return*/];
1628
- }
1629
- });
1630
- });
1631
- };
890
+ async dropIndex(tableOrName, indexOrName) {
891
+ const table = tableOrName instanceof Table_1.Table
892
+ ? tableOrName
893
+ : await this.getCachedTable(tableOrName);
894
+ const index = indexOrName instanceof TableIndex_1.TableIndex
895
+ ? indexOrName
896
+ : table.indices.find((i) => i.name === indexOrName);
897
+ if (!index)
898
+ throw new error_1.TypeORMError(`Supplied index ${indexOrName} was not found in table ${table.name}`);
899
+ // new index may be passed without name. In this case we generate index name manually.
900
+ if (!index.name)
901
+ index.name = this.generateIndexName(table, index);
902
+ const up = this.dropIndexSql(table, index);
903
+ const down = this.createIndexSql(table, index);
904
+ await this.executeQueries(up, down);
905
+ table.removeIndex(index);
906
+ }
1632
907
  /**
1633
908
  * Drops an indices from the table.
1634
909
  */
1635
- SpannerQueryRunner.prototype.dropIndices = function (tableOrName, indices) {
1636
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1637
- var indices_2, indices_2_1, index, e_9_1;
1638
- var e_9, _a;
1639
- return tslib_1.__generator(this, function (_b) {
1640
- switch (_b.label) {
1641
- case 0:
1642
- _b.trys.push([0, 5, 6, 7]);
1643
- indices_2 = tslib_1.__values(indices), indices_2_1 = indices_2.next();
1644
- _b.label = 1;
1645
- case 1:
1646
- if (!!indices_2_1.done) return [3 /*break*/, 4];
1647
- index = indices_2_1.value;
1648
- return [4 /*yield*/, this.dropIndex(tableOrName, index)];
1649
- case 2:
1650
- _b.sent();
1651
- _b.label = 3;
1652
- case 3:
1653
- indices_2_1 = indices_2.next();
1654
- return [3 /*break*/, 1];
1655
- case 4: return [3 /*break*/, 7];
1656
- case 5:
1657
- e_9_1 = _b.sent();
1658
- e_9 = { error: e_9_1 };
1659
- return [3 /*break*/, 7];
1660
- case 6:
1661
- try {
1662
- if (indices_2_1 && !indices_2_1.done && (_a = indices_2.return)) _a.call(indices_2);
1663
- }
1664
- finally { if (e_9) throw e_9.error; }
1665
- return [7 /*endfinally*/];
1666
- case 7: return [2 /*return*/];
1667
- }
1668
- });
1669
- });
1670
- };
910
+ async dropIndices(tableOrName, indices) {
911
+ for (const index of indices) {
912
+ await this.dropIndex(tableOrName, index);
913
+ }
914
+ }
1671
915
  /**
1672
916
  * Clears all table contents.
1673
917
  * Spanner does not support TRUNCATE TABLE statement, so we use DELETE FROM.
1674
918
  */
1675
- SpannerQueryRunner.prototype.clearTable = function (tableName) {
1676
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1677
- return tslib_1.__generator(this, function (_a) {
1678
- switch (_a.label) {
1679
- case 0: return [4 /*yield*/, this.query("DELETE FROM ".concat(this.escapePath(tableName), " WHERE true"))];
1680
- case 1:
1681
- _a.sent();
1682
- return [2 /*return*/];
1683
- }
1684
- });
1685
- });
1686
- };
919
+ async clearTable(tableName) {
920
+ await this.query(`DELETE FROM ${this.escapePath(tableName)} WHERE true`);
921
+ }
1687
922
  /**
1688
923
  * Removes all tables from the currently connected database.
1689
924
  */
1690
- SpannerQueryRunner.prototype.clearDatabase = function () {
1691
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1692
- var selectIndexDropsQuery, dropIndexQueries, selectFKDropsQuery, dropFKQueries, dropTablesQuery, dropTableQueries, isAnotherTransactionActive, dropIndexQueries_1, dropIndexQueries_1_1, query, e_10_1, dropFKQueries_1, dropFKQueries_1_1, query, e_11_1, dropTableQueries_1, dropTableQueries_1_1, query, e_12_1, error_3, rollbackError_2;
1693
- var e_10, _a, e_11, _b, e_12, _c;
1694
- return tslib_1.__generator(this, function (_d) {
1695
- switch (_d.label) {
1696
- case 0:
1697
- selectIndexDropsQuery = "SELECT concat('DROP INDEX `', INDEX_NAME, '`') AS `query` " +
1698
- "FROM `INFORMATION_SCHEMA`.`INDEXES` " +
1699
- "WHERE `TABLE_CATALOG` = '' AND `TABLE_SCHEMA` = '' AND `INDEX_TYPE` = 'INDEX' AND `SPANNER_IS_MANAGED` = false";
1700
- return [4 /*yield*/, this.query(selectIndexDropsQuery)
1701
- // drop foreign key queries
1702
- ];
1703
- case 1:
1704
- dropIndexQueries = _d.sent();
1705
- selectFKDropsQuery = "SELECT concat('ALTER TABLE `', TABLE_NAME, '`', ' DROP CONSTRAINT `', CONSTRAINT_NAME, '`') AS `query` " +
1706
- "FROM `INFORMATION_SCHEMA`.`TABLE_CONSTRAINTS` " +
1707
- "WHERE `TABLE_CATALOG` = '' AND `TABLE_SCHEMA` = '' AND `CONSTRAINT_TYPE` = 'FOREIGN KEY'";
1708
- return [4 /*yield*/, this.query(selectFKDropsQuery)
1709
- // drop view queries
1710
- // const selectViewDropsQuery = `SELECT concat('DROP VIEW \`', TABLE_NAME, '\`') AS \`query\` FROM \`INFORMATION_SCHEMA\`.\`VIEWS\``
1711
- // const dropViewQueries: ObjectLiteral[] = await this.query(
1712
- // selectViewDropsQuery,
1713
- // )
1714
- // drop table queries
1715
- ];
1716
- case 2:
1717
- dropFKQueries = _d.sent();
1718
- dropTablesQuery = "SELECT concat('DROP TABLE `', TABLE_NAME, '`') AS `query` " +
1719
- "FROM `INFORMATION_SCHEMA`.`TABLES` " +
1720
- "WHERE `TABLE_CATALOG` = '' AND `TABLE_SCHEMA` = '' AND `TABLE_TYPE` = 'BASE TABLE'";
1721
- return [4 /*yield*/, this.query(dropTablesQuery)];
1722
- case 3:
1723
- dropTableQueries = _d.sent();
1724
- if (!dropIndexQueries.length &&
1725
- !dropFKQueries.length &&
1726
- // !dropViewQueries.length &&
1727
- !dropTableQueries.length)
1728
- return [2 /*return*/];
1729
- isAnotherTransactionActive = this.isTransactionActive;
1730
- if (!!isAnotherTransactionActive) return [3 /*break*/, 5];
1731
- return [4 /*yield*/, this.startTransaction()];
1732
- case 4:
1733
- _d.sent();
1734
- _d.label = 5;
1735
- case 5:
1736
- _d.trys.push([5, 29, , 35]);
1737
- _d.label = 6;
1738
- case 6:
1739
- _d.trys.push([6, 11, 12, 13]);
1740
- dropIndexQueries_1 = tslib_1.__values(dropIndexQueries), dropIndexQueries_1_1 = dropIndexQueries_1.next();
1741
- _d.label = 7;
1742
- case 7:
1743
- if (!!dropIndexQueries_1_1.done) return [3 /*break*/, 10];
1744
- query = dropIndexQueries_1_1.value;
1745
- return [4 /*yield*/, this.updateDDL(query["query"])];
1746
- case 8:
1747
- _d.sent();
1748
- _d.label = 9;
1749
- case 9:
1750
- dropIndexQueries_1_1 = dropIndexQueries_1.next();
1751
- return [3 /*break*/, 7];
1752
- case 10: return [3 /*break*/, 13];
1753
- case 11:
1754
- e_10_1 = _d.sent();
1755
- e_10 = { error: e_10_1 };
1756
- return [3 /*break*/, 13];
1757
- case 12:
1758
- try {
1759
- if (dropIndexQueries_1_1 && !dropIndexQueries_1_1.done && (_a = dropIndexQueries_1.return)) _a.call(dropIndexQueries_1);
1760
- }
1761
- finally { if (e_10) throw e_10.error; }
1762
- return [7 /*endfinally*/];
1763
- case 13:
1764
- _d.trys.push([13, 18, 19, 20]);
1765
- dropFKQueries_1 = tslib_1.__values(dropFKQueries), dropFKQueries_1_1 = dropFKQueries_1.next();
1766
- _d.label = 14;
1767
- case 14:
1768
- if (!!dropFKQueries_1_1.done) return [3 /*break*/, 17];
1769
- query = dropFKQueries_1_1.value;
1770
- return [4 /*yield*/, this.updateDDL(query["query"])];
1771
- case 15:
1772
- _d.sent();
1773
- _d.label = 16;
1774
- case 16:
1775
- dropFKQueries_1_1 = dropFKQueries_1.next();
1776
- return [3 /*break*/, 14];
1777
- case 17: return [3 /*break*/, 20];
1778
- case 18:
1779
- e_11_1 = _d.sent();
1780
- e_11 = { error: e_11_1 };
1781
- return [3 /*break*/, 20];
1782
- case 19:
1783
- try {
1784
- if (dropFKQueries_1_1 && !dropFKQueries_1_1.done && (_b = dropFKQueries_1.return)) _b.call(dropFKQueries_1);
1785
- }
1786
- finally { if (e_11) throw e_11.error; }
1787
- return [7 /*endfinally*/];
1788
- case 20:
1789
- _d.trys.push([20, 25, 26, 27]);
1790
- dropTableQueries_1 = tslib_1.__values(dropTableQueries), dropTableQueries_1_1 = dropTableQueries_1.next();
1791
- _d.label = 21;
1792
- case 21:
1793
- if (!!dropTableQueries_1_1.done) return [3 /*break*/, 24];
1794
- query = dropTableQueries_1_1.value;
1795
- return [4 /*yield*/, this.updateDDL(query["query"])];
1796
- case 22:
1797
- _d.sent();
1798
- _d.label = 23;
1799
- case 23:
1800
- dropTableQueries_1_1 = dropTableQueries_1.next();
1801
- return [3 /*break*/, 21];
1802
- case 24: return [3 /*break*/, 27];
1803
- case 25:
1804
- e_12_1 = _d.sent();
1805
- e_12 = { error: e_12_1 };
1806
- return [3 /*break*/, 27];
1807
- case 26:
1808
- try {
1809
- if (dropTableQueries_1_1 && !dropTableQueries_1_1.done && (_c = dropTableQueries_1.return)) _c.call(dropTableQueries_1);
1810
- }
1811
- finally { if (e_12) throw e_12.error; }
1812
- return [7 /*endfinally*/];
1813
- case 27: return [4 /*yield*/, this.commitTransaction()];
1814
- case 28:
1815
- _d.sent();
1816
- return [3 /*break*/, 35];
1817
- case 29:
1818
- error_3 = _d.sent();
1819
- _d.label = 30;
1820
- case 30:
1821
- _d.trys.push([30, 33, , 34]);
1822
- if (!!isAnotherTransactionActive) return [3 /*break*/, 32];
1823
- return [4 /*yield*/, this.rollbackTransaction()];
1824
- case 31:
1825
- _d.sent();
1826
- _d.label = 32;
1827
- case 32: return [3 /*break*/, 34];
1828
- case 33:
1829
- rollbackError_2 = _d.sent();
1830
- return [3 /*break*/, 34];
1831
- case 34: throw error_3;
1832
- case 35: return [2 /*return*/];
1833
- }
1834
- });
1835
- });
1836
- };
925
+ async clearDatabase() {
926
+ // drop index queries
927
+ const selectIndexDropsQuery = `SELECT concat('DROP INDEX \`', INDEX_NAME, '\`') AS \`query\` ` +
928
+ `FROM \`INFORMATION_SCHEMA\`.\`INDEXES\` ` +
929
+ `WHERE \`TABLE_CATALOG\` = '' AND \`TABLE_SCHEMA\` = '' AND \`INDEX_TYPE\` = 'INDEX' AND \`SPANNER_IS_MANAGED\` = false`;
930
+ const dropIndexQueries = await this.query(selectIndexDropsQuery);
931
+ // drop foreign key queries
932
+ const selectFKDropsQuery = `SELECT concat('ALTER TABLE \`', TABLE_NAME, '\`', ' DROP CONSTRAINT \`', CONSTRAINT_NAME, '\`') AS \`query\` ` +
933
+ `FROM \`INFORMATION_SCHEMA\`.\`TABLE_CONSTRAINTS\` ` +
934
+ `WHERE \`TABLE_CATALOG\` = '' AND \`TABLE_SCHEMA\` = '' AND \`CONSTRAINT_TYPE\` = 'FOREIGN KEY'`;
935
+ const dropFKQueries = await this.query(selectFKDropsQuery);
936
+ // drop view queries
937
+ // const selectViewDropsQuery = `SELECT concat('DROP VIEW \`', TABLE_NAME, '\`') AS \`query\` FROM \`INFORMATION_SCHEMA\`.\`VIEWS\``
938
+ // const dropViewQueries: ObjectLiteral[] = await this.query(
939
+ // selectViewDropsQuery,
940
+ // )
941
+ // drop table queries
942
+ const dropTablesQuery = `SELECT concat('DROP TABLE \`', TABLE_NAME, '\`') AS \`query\` ` +
943
+ `FROM \`INFORMATION_SCHEMA\`.\`TABLES\` ` +
944
+ `WHERE \`TABLE_CATALOG\` = '' AND \`TABLE_SCHEMA\` = '' AND \`TABLE_TYPE\` = 'BASE TABLE'`;
945
+ const dropTableQueries = await this.query(dropTablesQuery);
946
+ if (!dropIndexQueries.length &&
947
+ !dropFKQueries.length &&
948
+ // !dropViewQueries.length &&
949
+ !dropTableQueries.length)
950
+ return;
951
+ const isAnotherTransactionActive = this.isTransactionActive;
952
+ if (!isAnotherTransactionActive)
953
+ await this.startTransaction();
954
+ try {
955
+ for (let query of dropIndexQueries) {
956
+ await this.updateDDL(query["query"]);
957
+ }
958
+ for (let query of dropFKQueries) {
959
+ await this.updateDDL(query["query"]);
960
+ }
961
+ // for (let query of dropViewQueries) {
962
+ // await this.updateDDL(query["query"])
963
+ // }
964
+ for (let query of dropTableQueries) {
965
+ await this.updateDDL(query["query"]);
966
+ }
967
+ await this.commitTransaction();
968
+ }
969
+ catch (error) {
970
+ try {
971
+ // we throw original error even if rollback thrown an error
972
+ if (!isAnotherTransactionActive)
973
+ await this.rollbackTransaction();
974
+ }
975
+ catch (rollbackError) { }
976
+ throw error;
977
+ }
978
+ }
1837
979
  // -------------------------------------------------------------------------
1838
980
  // Override Methods
1839
981
  // -------------------------------------------------------------------------
1840
982
  /**
1841
983
  * Executes up sql queries.
1842
984
  */
1843
- SpannerQueryRunner.prototype.executeMemoryUpSql = function () {
1844
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1845
- var _a, _b, _c, query, parameters, e_13_1;
1846
- var e_13, _d;
1847
- return tslib_1.__generator(this, function (_e) {
1848
- switch (_e.label) {
1849
- case 0:
1850
- _e.trys.push([0, 7, 8, 9]);
1851
- _a = tslib_1.__values(this.sqlInMemory.upQueries), _b = _a.next();
1852
- _e.label = 1;
1853
- case 1:
1854
- if (!!_b.done) return [3 /*break*/, 6];
1855
- _c = _b.value, query = _c.query, parameters = _c.parameters;
1856
- if (!this.isDMLQuery(query)) return [3 /*break*/, 3];
1857
- return [4 /*yield*/, this.query(query, parameters)];
1858
- case 2:
1859
- _e.sent();
1860
- return [3 /*break*/, 5];
1861
- case 3: return [4 /*yield*/, this.updateDDL(query, parameters)];
1862
- case 4:
1863
- _e.sent();
1864
- _e.label = 5;
1865
- case 5:
1866
- _b = _a.next();
1867
- return [3 /*break*/, 1];
1868
- case 6: return [3 /*break*/, 9];
1869
- case 7:
1870
- e_13_1 = _e.sent();
1871
- e_13 = { error: e_13_1 };
1872
- return [3 /*break*/, 9];
1873
- case 8:
1874
- try {
1875
- if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
1876
- }
1877
- finally { if (e_13) throw e_13.error; }
1878
- return [7 /*endfinally*/];
1879
- case 9: return [2 /*return*/];
1880
- }
1881
- });
1882
- });
1883
- };
985
+ async executeMemoryUpSql() {
986
+ for (const { query, parameters } of this.sqlInMemory.upQueries) {
987
+ if (this.isDMLQuery(query)) {
988
+ await this.query(query, parameters);
989
+ }
990
+ else {
991
+ await this.updateDDL(query, parameters);
992
+ }
993
+ }
994
+ }
1884
995
  /**
1885
996
  * Executes down sql queries.
1886
997
  */
1887
- SpannerQueryRunner.prototype.executeMemoryDownSql = function () {
1888
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1889
- var _a, _b, _c, query, parameters, e_14_1;
1890
- var e_14, _d;
1891
- return tslib_1.__generator(this, function (_e) {
1892
- switch (_e.label) {
1893
- case 0:
1894
- _e.trys.push([0, 7, 8, 9]);
1895
- _a = tslib_1.__values(this.sqlInMemory.downQueries.reverse()), _b = _a.next();
1896
- _e.label = 1;
1897
- case 1:
1898
- if (!!_b.done) return [3 /*break*/, 6];
1899
- _c = _b.value, query = _c.query, parameters = _c.parameters;
1900
- if (!this.isDMLQuery(query)) return [3 /*break*/, 3];
1901
- return [4 /*yield*/, this.query(query, parameters)];
1902
- case 2:
1903
- _e.sent();
1904
- return [3 /*break*/, 5];
1905
- case 3: return [4 /*yield*/, this.updateDDL(query, parameters)];
1906
- case 4:
1907
- _e.sent();
1908
- _e.label = 5;
1909
- case 5:
1910
- _b = _a.next();
1911
- return [3 /*break*/, 1];
1912
- case 6: return [3 /*break*/, 9];
1913
- case 7:
1914
- e_14_1 = _e.sent();
1915
- e_14 = { error: e_14_1 };
1916
- return [3 /*break*/, 9];
1917
- case 8:
1918
- try {
1919
- if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
1920
- }
1921
- finally { if (e_14) throw e_14.error; }
1922
- return [7 /*endfinally*/];
1923
- case 9: return [2 /*return*/];
1924
- }
1925
- });
1926
- });
1927
- };
998
+ async executeMemoryDownSql() {
999
+ for (const { query, parameters, } of this.sqlInMemory.downQueries.reverse()) {
1000
+ if (this.isDMLQuery(query)) {
1001
+ await this.query(query, parameters);
1002
+ }
1003
+ else {
1004
+ await this.updateDDL(query, parameters);
1005
+ }
1006
+ }
1007
+ }
1928
1008
  // -------------------------------------------------------------------------
1929
1009
  // Protected Methods
1930
1010
  // -------------------------------------------------------------------------
1931
- SpannerQueryRunner.prototype.loadViews = function (viewNames) {
1932
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1933
- return tslib_1.__generator(this, function (_a) {
1934
- // const hasTable = await this.hasTable(this.getTypeormMetadataTableName())
1935
- // if (!hasTable) {
1936
- // return []
1937
- // }
1938
- //
1939
- // if (!viewNames) {
1940
- // viewNames = []
1941
- // }
1942
- //
1943
- // const escapedViewNames = viewNames
1944
- // .map((viewName) => `'${viewName}'`)
1945
- // .join(", ")
1946
- //
1947
- // const query =
1948
- // `SELECT \`T\`.*, \`V\`.\`VIEW_DEFINITION\` FROM ${this.escapePath(
1949
- // this.getTypeormMetadataTableName(),
1950
- // )} \`T\` ` +
1951
- // `INNER JOIN \`INFORMATION_SCHEMA\`.\`VIEWS\` \`V\` ON \`V\`.\`TABLE_NAME\` = \`T\`.\`NAME\` ` +
1952
- // `WHERE \`T\`.\`TYPE\` = '${MetadataTableType.VIEW}' ${
1953
- // viewNames.length
1954
- // ? ` AND \`T\`.\`NAME\` IN (${escapedViewNames})`
1955
- // : ""
1956
- // }`
1957
- // const dbViews = await this.query(query)
1958
- // return dbViews.map((dbView: any) => {
1959
- // const view = new View()
1960
- // view.database = dbView["NAME"]
1961
- // view.name = this.driver.buildTableName(dbView["NAME"])
1962
- // view.expression = dbView["NAME"]
1963
- // return view
1964
- // })
1965
- return [2 /*return*/, Promise.resolve([])];
1966
- });
1967
- });
1968
- };
1011
+ async loadViews(viewNames) {
1012
+ // const hasTable = await this.hasTable(this.getTypeormMetadataTableName())
1013
+ // if (!hasTable) {
1014
+ // return []
1015
+ // }
1016
+ //
1017
+ // if (!viewNames) {
1018
+ // viewNames = []
1019
+ // }
1020
+ //
1021
+ // const escapedViewNames = viewNames
1022
+ // .map((viewName) => `'${viewName}'`)
1023
+ // .join(", ")
1024
+ //
1025
+ // const query =
1026
+ // `SELECT \`T\`.*, \`V\`.\`VIEW_DEFINITION\` FROM ${this.escapePath(
1027
+ // this.getTypeormMetadataTableName(),
1028
+ // )} \`T\` ` +
1029
+ // `INNER JOIN \`INFORMATION_SCHEMA\`.\`VIEWS\` \`V\` ON \`V\`.\`TABLE_NAME\` = \`T\`.\`NAME\` ` +
1030
+ // `WHERE \`T\`.\`TYPE\` = '${MetadataTableType.VIEW}' ${
1031
+ // viewNames.length
1032
+ // ? ` AND \`T\`.\`NAME\` IN (${escapedViewNames})`
1033
+ // : ""
1034
+ // }`
1035
+ // const dbViews = await this.query(query)
1036
+ // return dbViews.map((dbView: any) => {
1037
+ // const view = new View()
1038
+ // view.database = dbView["NAME"]
1039
+ // view.name = this.driver.buildTableName(dbView["NAME"])
1040
+ // view.expression = dbView["NAME"]
1041
+ // return view
1042
+ // })
1043
+ return Promise.resolve([]);
1044
+ }
1969
1045
  /**
1970
1046
  * Loads all tables (with given names) from the database and creates a Table from them.
1971
1047
  */
1972
- SpannerQueryRunner.prototype.loadTables = function (tableNames) {
1973
- return tslib_1.__awaiter(this, void 0, void 0, function () {
1974
- var dbTables, tablesSql, _a, _b, _c, _d, tablesSql, _e, _f, _g, _h, loadedTableNames, columnsSql, primaryKeySql, indicesSql, checksSql, foreignKeysSql, _j, dbColumns, dbPrimaryKeys, dbIndices, dbChecks, dbForeignKeys;
1975
- var _this = this;
1976
- return tslib_1.__generator(this, function (_k) {
1977
- switch (_k.label) {
1978
- case 0:
1979
- if (tableNames && tableNames.length === 0) {
1980
- return [2 /*return*/, []];
1981
- }
1982
- dbTables = [];
1983
- if (!(!tableNames || !tableNames.length)) return [3 /*break*/, 2];
1984
- tablesSql = "SELECT `TABLE_NAME` " +
1985
- "FROM `INFORMATION_SCHEMA`.`TABLES` " +
1986
- "WHERE `TABLE_CATALOG` = '' AND `TABLE_SCHEMA` = '' AND `TABLE_TYPE` = 'BASE TABLE'";
1987
- _b = (_a = dbTables.push).apply;
1988
- _c = [dbTables];
1989
- _d = [[]];
1990
- return [4 /*yield*/, this.query(tablesSql)];
1991
- case 1:
1992
- _b.apply(_a, _c.concat([tslib_1.__spreadArray.apply(void 0, _d.concat([tslib_1.__read.apply(void 0, [(_k.sent())]), false]))]));
1993
- return [3 /*break*/, 4];
1994
- case 2:
1995
- tablesSql = "SELECT `TABLE_NAME` " +
1996
- "FROM `INFORMATION_SCHEMA`.`TABLES` " +
1997
- "WHERE `TABLE_CATALOG` = '' AND `TABLE_SCHEMA` = '' AND `TABLE_TYPE` = 'BASE TABLE' " +
1998
- "AND `TABLE_NAME` IN (".concat(tableNames
1999
- .map(function (tableName) { return "'".concat(tableName, "'"); })
2000
- .join(", "), ")");
2001
- _f = (_e = dbTables.push).apply;
2002
- _g = [dbTables];
2003
- _h = [[]];
2004
- return [4 /*yield*/, this.query(tablesSql)];
2005
- case 3:
2006
- _f.apply(_e, _g.concat([tslib_1.__spreadArray.apply(void 0, _h.concat([tslib_1.__read.apply(void 0, [(_k.sent())]), false]))]));
2007
- _k.label = 4;
2008
- case 4:
2009
- // if tables were not found in the db, no need to proceed
2010
- if (!dbTables.length)
2011
- return [2 /*return*/, []];
2012
- loadedTableNames = dbTables
2013
- .map(function (dbTable) { return "'".concat(dbTable.TABLE_NAME, "'"); })
2014
- .join(", ");
2015
- columnsSql = "SELECT * FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_CATALOG` = '' AND `TABLE_SCHEMA` = '' AND `TABLE_NAME` IN (".concat(loadedTableNames, ")");
2016
- primaryKeySql = "SELECT `KCU`.`TABLE_NAME`, `KCU`.`COLUMN_NAME` " +
2017
- "FROM `INFORMATION_SCHEMA`.`TABLE_CONSTRAINTS` `TC` " +
2018
- "INNER JOIN `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE` `KCU` ON `KCU`.`CONSTRAINT_NAME` = `TC`.`CONSTRAINT_NAME` " +
2019
- "WHERE `TC`.`TABLE_CATALOG` = '' AND `TC`.`TABLE_SCHEMA` = '' AND `TC`.`CONSTRAINT_TYPE` = 'PRIMARY KEY' " +
2020
- "AND `TC`.`TABLE_NAME` IN (".concat(loadedTableNames, ")");
2021
- indicesSql = "SELECT `I`.`TABLE_NAME`, `I`.`INDEX_NAME`, `I`.`IS_UNIQUE`, `I`.`IS_NULL_FILTERED`, `IC`.`COLUMN_NAME` " +
2022
- "FROM `INFORMATION_SCHEMA`.`INDEXES` `I` " +
2023
- "INNER JOIN `INFORMATION_SCHEMA`.`INDEX_COLUMNS` `IC` ON `IC`.`INDEX_NAME` = `I`.`INDEX_NAME` " +
2024
- "AND `IC`.`TABLE_NAME` = `I`.`TABLE_NAME` " +
2025
- "WHERE `I`.`TABLE_CATALOG` = '' AND `I`.`TABLE_SCHEMA` = '' AND `I`.`TABLE_NAME` IN (".concat(loadedTableNames, ") ") +
2026
- "AND `I`.`INDEX_TYPE` = 'INDEX' AND `I`.`SPANNER_IS_MANAGED` = false";
2027
- checksSql = "SELECT `TC`.`TABLE_NAME`, `TC`.`CONSTRAINT_NAME`, `CC`.`CHECK_CLAUSE`, `CCU`.`COLUMN_NAME`" +
2028
- "FROM `INFORMATION_SCHEMA`.`TABLE_CONSTRAINTS` `TC` " +
2029
- "INNER JOIN `INFORMATION_SCHEMA`.`CONSTRAINT_COLUMN_USAGE` `CCU` ON `CCU`.`CONSTRAINT_NAME` = `TC`.`CONSTRAINT_NAME` " +
2030
- "INNER JOIN `INFORMATION_SCHEMA`.`CHECK_CONSTRAINTS` `CC` ON `CC`.`CONSTRAINT_NAME` = `TC`.`CONSTRAINT_NAME` " +
2031
- "WHERE `TC`.`TABLE_CATALOG` = '' AND `TC`.`TABLE_SCHEMA` = '' AND `TC`.`CONSTRAINT_TYPE` = 'CHECK' " +
2032
- "AND `TC`.`TABLE_NAME` IN (".concat(loadedTableNames, ") AND `TC`.`CONSTRAINT_NAME` NOT LIKE 'CK_IS_NOT_NULL%'");
2033
- foreignKeysSql = "SELECT `TC`.`TABLE_NAME`, `TC`.`CONSTRAINT_NAME`, `KCU`.`COLUMN_NAME`, " +
2034
- "`CTU`.`TABLE_NAME` AS `REFERENCED_TABLE_NAME`, `CCU`.`COLUMN_NAME` AS `REFERENCED_COLUMN_NAME`, " +
2035
- "`RC`.`UPDATE_RULE`, `RC`.`DELETE_RULE` " +
2036
- "FROM `INFORMATION_SCHEMA`.`TABLE_CONSTRAINTS` `TC` " +
2037
- "INNER JOIN `INFORMATION_SCHEMA`.`KEY_COLUMN_USAGE` `KCU` ON `KCU`.`CONSTRAINT_NAME` = `TC`.`CONSTRAINT_NAME` " +
2038
- "INNER JOIN `INFORMATION_SCHEMA`.`CONSTRAINT_TABLE_USAGE` `CTU` ON `CTU`.`CONSTRAINT_NAME` = `TC`.`CONSTRAINT_NAME` " +
2039
- "INNER JOIN `INFORMATION_SCHEMA`.`REFERENTIAL_CONSTRAINTS` `RC` ON `RC`.`CONSTRAINT_NAME` = `TC`.`CONSTRAINT_NAME` " +
2040
- "INNER JOIN `INFORMATION_SCHEMA`.`CONSTRAINT_COLUMN_USAGE` `CCU` ON `CCU`.`CONSTRAINT_NAME` = `TC`.`CONSTRAINT_NAME` " +
2041
- "WHERE `TC`.`TABLE_CATALOG` = '' AND `TC`.`TABLE_SCHEMA` = '' AND `TC`.`CONSTRAINT_TYPE` = 'FOREIGN KEY' " +
2042
- "AND `TC`.`TABLE_NAME` IN (".concat(loadedTableNames, ")");
2043
- return [4 /*yield*/, Promise.all([
2044
- this.query(columnsSql),
2045
- this.query(primaryKeySql),
2046
- this.query(indicesSql),
2047
- this.query(checksSql),
2048
- this.query(foreignKeysSql),
2049
- ])
2050
- // create tables for loaded tables
2051
- ];
2052
- case 5:
2053
- _j = tslib_1.__read.apply(void 0, [_k.sent()
2054
- // create tables for loaded tables
2055
- , 5]), dbColumns = _j[0], dbPrimaryKeys = _j[1], dbIndices = _j[2], dbChecks = _j[3], dbForeignKeys = _j[4];
2056
- // create tables for loaded tables
2057
- return [2 /*return*/, Promise.all(dbTables.map(function (dbTable) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
2058
- var table, _a, tableForeignKeys, tableIndices, tableChecks;
2059
- var _this = this;
2060
- return tslib_1.__generator(this, function (_b) {
2061
- switch (_b.label) {
2062
- case 0:
2063
- table = new Table_1.Table();
2064
- table.name = this.driver.buildTableName(dbTable["TABLE_NAME"]);
2065
- // create columns from the loaded columns
2066
- _a = table;
2067
- return [4 /*yield*/, Promise.all(dbColumns
2068
- .filter(function (dbColumn) {
2069
- return dbColumn["TABLE_NAME"] ===
2070
- dbTable["TABLE_NAME"];
2071
- })
2072
- .map(function (dbColumn) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
2073
- var columnUniqueIndices, tableMetadata, hasIgnoredIndex, isConstraintComposite, tableColumn, fullType, asExpressionQuery, results;
2074
- var _this = this;
2075
- return tslib_1.__generator(this, function (_a) {
2076
- switch (_a.label) {
2077
- case 0:
2078
- columnUniqueIndices = dbIndices.filter(function (dbIndex) {
2079
- return (dbIndex["TABLE_NAME"] ===
2080
- dbTable["TABLE_NAME"] &&
2081
- dbIndex["COLUMN_NAME"] ===
2082
- dbColumn["COLUMN_NAME"] &&
2083
- dbIndex["IS_UNIQUE"] === true);
2084
- });
2085
- tableMetadata = this.connection.entityMetadatas.find(function (metadata) {
2086
- return _this.getTablePath(table) ===
2087
- _this.getTablePath(metadata);
2088
- });
2089
- hasIgnoredIndex = columnUniqueIndices.length > 0 &&
2090
- tableMetadata &&
2091
- tableMetadata.indices.some(function (index) {
2092
- return columnUniqueIndices.some(function (uniqueIndex) {
2093
- return (index.name ===
2094
- uniqueIndex["INDEX_NAME"] &&
2095
- index.synchronize === false);
2096
- });
2097
- });
2098
- isConstraintComposite = columnUniqueIndices.every(function (uniqueIndex) {
2099
- return dbIndices.some(function (dbIndex) {
2100
- return dbIndex["INDEX_NAME"] ===
2101
- uniqueIndex["INDEX_NAME"] &&
2102
- dbIndex["COLUMN_NAME"] !==
2103
- dbColumn["COLUMN_NAME"];
2104
- });
2105
- });
2106
- tableColumn = new TableColumn_1.TableColumn();
2107
- tableColumn.name = dbColumn["COLUMN_NAME"];
2108
- fullType = dbColumn["SPANNER_TYPE"].toLowerCase();
2109
- if (fullType.indexOf("array") !== -1) {
2110
- tableColumn.isArray = true;
2111
- fullType = fullType.substring(fullType.indexOf("<") + 1, fullType.indexOf(">"));
2112
- }
2113
- if (fullType.indexOf("(") !== -1) {
2114
- tableColumn.type = fullType.substring(0, fullType.indexOf("("));
2115
- }
2116
- else {
2117
- tableColumn.type = fullType;
2118
- }
2119
- if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1) {
2120
- tableColumn.length = fullType.substring(fullType.indexOf("(") + 1, fullType.indexOf(")"));
2121
- }
2122
- if (!(dbColumn["IS_GENERATED"] === "ALWAYS")) return [3 /*break*/, 3];
2123
- tableColumn.asExpression =
2124
- dbColumn["GENERATION_EXPRESSION"];
2125
- tableColumn.generatedType = "STORED";
2126
- return [4 /*yield*/, this.selectTypeormMetadataSql({
2127
- table: dbTable["TABLE_NAME"],
2128
- type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
2129
- name: tableColumn.name,
2130
- })];
2131
- case 1:
2132
- asExpressionQuery = _a.sent();
2133
- return [4 /*yield*/, this.query(asExpressionQuery.query, asExpressionQuery.parameters)];
2134
- case 2:
2135
- results = _a.sent();
2136
- if (results[0] && results[0].value) {
2137
- tableColumn.asExpression = results[0].value;
2138
- }
2139
- else {
2140
- tableColumn.asExpression = "";
2141
- }
2142
- _a.label = 3;
2143
- case 3:
2144
- tableColumn.isUnique =
2145
- columnUniqueIndices.length > 0 &&
2146
- !hasIgnoredIndex &&
2147
- !isConstraintComposite;
2148
- tableColumn.isNullable =
2149
- dbColumn["IS_NULLABLE"] === "YES";
2150
- tableColumn.isPrimary = dbPrimaryKeys.some(function (dbPrimaryKey) {
2151
- return (dbPrimaryKey["TABLE_NAME"] ===
2152
- dbColumn["TABLE_NAME"] &&
2153
- dbPrimaryKey["COLUMN_NAME"] ===
2154
- dbColumn["COLUMN_NAME"]);
2155
- });
2156
- return [2 /*return*/, tableColumn];
2157
- }
2158
- });
2159
- }); }))];
2160
- case 1:
2161
- // create columns from the loaded columns
2162
- _a.columns = _b.sent();
2163
- tableForeignKeys = dbForeignKeys.filter(function (dbForeignKey) {
2164
- return (dbForeignKey["TABLE_NAME"] === dbTable["TABLE_NAME"]);
2165
- });
2166
- table.foreignKeys = OrmUtils_1.OrmUtils.uniq(tableForeignKeys, function (dbForeignKey) { return dbForeignKey["CONSTRAINT_NAME"]; }).map(function (dbForeignKey) {
2167
- var foreignKeys = tableForeignKeys.filter(function (dbFk) {
2168
- return dbFk["CONSTRAINT_NAME"] ===
2169
- dbForeignKey["CONSTRAINT_NAME"];
2170
- });
2171
- return new TableForeignKey_1.TableForeignKey({
2172
- name: dbForeignKey["CONSTRAINT_NAME"],
2173
- columnNames: OrmUtils_1.OrmUtils.uniq(foreignKeys.map(function (dbFk) { return dbFk["COLUMN_NAME"]; })),
2174
- referencedDatabase: dbForeignKey["REFERENCED_TABLE_SCHEMA"],
2175
- referencedTableName: dbForeignKey["REFERENCED_TABLE_NAME"],
2176
- referencedColumnNames: OrmUtils_1.OrmUtils.uniq(foreignKeys.map(function (dbFk) { return dbFk["REFERENCED_COLUMN_NAME"]; })),
2177
- onDelete: dbForeignKey["DELETE_RULE"],
2178
- onUpdate: dbForeignKey["UPDATE_RULE"],
2179
- });
2180
- });
2181
- tableIndices = dbIndices.filter(function (dbIndex) {
2182
- return dbIndex["TABLE_NAME"] === dbTable["TABLE_NAME"];
2183
- });
2184
- table.indices = OrmUtils_1.OrmUtils.uniq(tableIndices, function (dbIndex) { return dbIndex["INDEX_NAME"]; }).map(function (constraint) {
2185
- var indices = tableIndices.filter(function (index) {
2186
- return index["INDEX_NAME"] === constraint["INDEX_NAME"];
2187
- });
2188
- return new TableIndex_1.TableIndex({
2189
- table: table,
2190
- name: constraint["INDEX_NAME"],
2191
- columnNames: indices.map(function (i) { return i["COLUMN_NAME"]; }),
2192
- isUnique: constraint["IS_UNIQUE"],
2193
- isNullFiltered: constraint["IS_NULL_FILTERED"],
2194
- });
2195
- });
2196
- tableChecks = dbChecks.filter(function (dbCheck) {
2197
- return dbCheck["TABLE_NAME"] === dbTable["TABLE_NAME"];
2198
- });
2199
- table.checks = OrmUtils_1.OrmUtils.uniq(tableChecks, function (dbIndex) { return dbIndex["CONSTRAINT_NAME"]; }).map(function (constraint) {
2200
- var checks = tableChecks.filter(function (dbC) {
2201
- return dbC["CONSTRAINT_NAME"] ===
2202
- constraint["CONSTRAINT_NAME"];
2203
- });
2204
- return new TableCheck_1.TableCheck({
2205
- name: constraint["CONSTRAINT_NAME"],
2206
- columnNames: checks.map(function (c) { return c["COLUMN_NAME"]; }),
2207
- expression: constraint["CHECK_CLAUSE"],
2208
- });
2209
- });
2210
- return [2 /*return*/, table];
2211
- }
2212
- });
2213
- }); }))];
1048
+ async loadTables(tableNames) {
1049
+ if (tableNames && tableNames.length === 0) {
1050
+ return [];
1051
+ }
1052
+ const dbTables = [];
1053
+ if (!tableNames || !tableNames.length) {
1054
+ // Since we don't have any of this data we have to do a scan
1055
+ const tablesSql = `SELECT \`TABLE_NAME\` ` +
1056
+ `FROM \`INFORMATION_SCHEMA\`.\`TABLES\` ` +
1057
+ `WHERE \`TABLE_CATALOG\` = '' AND \`TABLE_SCHEMA\` = '' AND \`TABLE_TYPE\` = 'BASE TABLE'`;
1058
+ dbTables.push(...(await this.query(tablesSql)));
1059
+ }
1060
+ else {
1061
+ const tablesSql = `SELECT \`TABLE_NAME\` ` +
1062
+ `FROM \`INFORMATION_SCHEMA\`.\`TABLES\` ` +
1063
+ `WHERE \`TABLE_CATALOG\` = '' AND \`TABLE_SCHEMA\` = '' AND \`TABLE_TYPE\` = 'BASE TABLE' ` +
1064
+ `AND \`TABLE_NAME\` IN (${tableNames
1065
+ .map((tableName) => `'${tableName}'`)
1066
+ .join(", ")})`;
1067
+ dbTables.push(...(await this.query(tablesSql)));
1068
+ }
1069
+ // if tables were not found in the db, no need to proceed
1070
+ if (!dbTables.length)
1071
+ return [];
1072
+ const loadedTableNames = dbTables
1073
+ .map((dbTable) => `'${dbTable.TABLE_NAME}'`)
1074
+ .join(", ");
1075
+ const columnsSql = `SELECT * FROM \`INFORMATION_SCHEMA\`.\`COLUMNS\` WHERE \`TABLE_CATALOG\` = '' AND \`TABLE_SCHEMA\` = '' AND \`TABLE_NAME\` IN (${loadedTableNames})`;
1076
+ const primaryKeySql = `SELECT \`KCU\`.\`TABLE_NAME\`, \`KCU\`.\`COLUMN_NAME\` ` +
1077
+ `FROM \`INFORMATION_SCHEMA\`.\`TABLE_CONSTRAINTS\` \`TC\` ` +
1078
+ `INNER JOIN \`INFORMATION_SCHEMA\`.\`KEY_COLUMN_USAGE\` \`KCU\` ON \`KCU\`.\`CONSTRAINT_NAME\` = \`TC\`.\`CONSTRAINT_NAME\` ` +
1079
+ `WHERE \`TC\`.\`TABLE_CATALOG\` = '' AND \`TC\`.\`TABLE_SCHEMA\` = '' AND \`TC\`.\`CONSTRAINT_TYPE\` = 'PRIMARY KEY' ` +
1080
+ `AND \`TC\`.\`TABLE_NAME\` IN (${loadedTableNames})`;
1081
+ const indicesSql = `SELECT \`I\`.\`TABLE_NAME\`, \`I\`.\`INDEX_NAME\`, \`I\`.\`IS_UNIQUE\`, \`I\`.\`IS_NULL_FILTERED\`, \`IC\`.\`COLUMN_NAME\` ` +
1082
+ `FROM \`INFORMATION_SCHEMA\`.\`INDEXES\` \`I\` ` +
1083
+ `INNER JOIN \`INFORMATION_SCHEMA\`.\`INDEX_COLUMNS\` \`IC\` ON \`IC\`.\`INDEX_NAME\` = \`I\`.\`INDEX_NAME\` ` +
1084
+ `AND \`IC\`.\`TABLE_NAME\` = \`I\`.\`TABLE_NAME\` ` +
1085
+ `WHERE \`I\`.\`TABLE_CATALOG\` = '' AND \`I\`.\`TABLE_SCHEMA\` = '' AND \`I\`.\`TABLE_NAME\` IN (${loadedTableNames}) ` +
1086
+ `AND \`I\`.\`INDEX_TYPE\` = 'INDEX' AND \`I\`.\`SPANNER_IS_MANAGED\` = false`;
1087
+ const checksSql = `SELECT \`TC\`.\`TABLE_NAME\`, \`TC\`.\`CONSTRAINT_NAME\`, \`CC\`.\`CHECK_CLAUSE\`, \`CCU\`.\`COLUMN_NAME\`` +
1088
+ `FROM \`INFORMATION_SCHEMA\`.\`TABLE_CONSTRAINTS\` \`TC\` ` +
1089
+ `INNER JOIN \`INFORMATION_SCHEMA\`.\`CONSTRAINT_COLUMN_USAGE\` \`CCU\` ON \`CCU\`.\`CONSTRAINT_NAME\` = \`TC\`.\`CONSTRAINT_NAME\` ` +
1090
+ `INNER JOIN \`INFORMATION_SCHEMA\`.\`CHECK_CONSTRAINTS\` \`CC\` ON \`CC\`.\`CONSTRAINT_NAME\` = \`TC\`.\`CONSTRAINT_NAME\` ` +
1091
+ `WHERE \`TC\`.\`TABLE_CATALOG\` = '' AND \`TC\`.\`TABLE_SCHEMA\` = '' AND \`TC\`.\`CONSTRAINT_TYPE\` = 'CHECK' ` +
1092
+ `AND \`TC\`.\`TABLE_NAME\` IN (${loadedTableNames}) AND \`TC\`.\`CONSTRAINT_NAME\` NOT LIKE 'CK_IS_NOT_NULL%'`;
1093
+ const foreignKeysSql = `SELECT \`TC\`.\`TABLE_NAME\`, \`TC\`.\`CONSTRAINT_NAME\`, \`KCU\`.\`COLUMN_NAME\`, ` +
1094
+ `\`CTU\`.\`TABLE_NAME\` AS \`REFERENCED_TABLE_NAME\`, \`CCU\`.\`COLUMN_NAME\` AS \`REFERENCED_COLUMN_NAME\`, ` +
1095
+ `\`RC\`.\`UPDATE_RULE\`, \`RC\`.\`DELETE_RULE\` ` +
1096
+ `FROM \`INFORMATION_SCHEMA\`.\`TABLE_CONSTRAINTS\` \`TC\` ` +
1097
+ `INNER JOIN \`INFORMATION_SCHEMA\`.\`KEY_COLUMN_USAGE\` \`KCU\` ON \`KCU\`.\`CONSTRAINT_NAME\` = \`TC\`.\`CONSTRAINT_NAME\` ` +
1098
+ `INNER JOIN \`INFORMATION_SCHEMA\`.\`CONSTRAINT_TABLE_USAGE\` \`CTU\` ON \`CTU\`.\`CONSTRAINT_NAME\` = \`TC\`.\`CONSTRAINT_NAME\` ` +
1099
+ `INNER JOIN \`INFORMATION_SCHEMA\`.\`REFERENTIAL_CONSTRAINTS\` \`RC\` ON \`RC\`.\`CONSTRAINT_NAME\` = \`TC\`.\`CONSTRAINT_NAME\` ` +
1100
+ `INNER JOIN \`INFORMATION_SCHEMA\`.\`CONSTRAINT_COLUMN_USAGE\` \`CCU\` ON \`CCU\`.\`CONSTRAINT_NAME\` = \`TC\`.\`CONSTRAINT_NAME\` ` +
1101
+ `WHERE \`TC\`.\`TABLE_CATALOG\` = '' AND \`TC\`.\`TABLE_SCHEMA\` = '' AND \`TC\`.\`CONSTRAINT_TYPE\` = 'FOREIGN KEY' ` +
1102
+ `AND \`TC\`.\`TABLE_NAME\` IN (${loadedTableNames})`;
1103
+ const [dbColumns, dbPrimaryKeys, dbIndices, dbChecks, dbForeignKeys,] = await Promise.all([
1104
+ this.query(columnsSql),
1105
+ this.query(primaryKeySql),
1106
+ this.query(indicesSql),
1107
+ this.query(checksSql),
1108
+ this.query(foreignKeysSql),
1109
+ ]);
1110
+ // create tables for loaded tables
1111
+ return Promise.all(dbTables.map(async (dbTable) => {
1112
+ const table = new Table_1.Table();
1113
+ table.name = this.driver.buildTableName(dbTable["TABLE_NAME"]);
1114
+ // create columns from the loaded columns
1115
+ table.columns = await Promise.all(dbColumns
1116
+ .filter((dbColumn) => dbColumn["TABLE_NAME"] ===
1117
+ dbTable["TABLE_NAME"])
1118
+ .map(async (dbColumn) => {
1119
+ const columnUniqueIndices = dbIndices.filter((dbIndex) => {
1120
+ return (dbIndex["TABLE_NAME"] ===
1121
+ dbTable["TABLE_NAME"] &&
1122
+ dbIndex["COLUMN_NAME"] ===
1123
+ dbColumn["COLUMN_NAME"] &&
1124
+ dbIndex["IS_UNIQUE"] === true);
1125
+ });
1126
+ const tableMetadata = this.connection.entityMetadatas.find((metadata) => this.getTablePath(table) ===
1127
+ this.getTablePath(metadata));
1128
+ const hasIgnoredIndex = columnUniqueIndices.length > 0 &&
1129
+ tableMetadata &&
1130
+ tableMetadata.indices.some((index) => {
1131
+ return columnUniqueIndices.some((uniqueIndex) => {
1132
+ return (index.name ===
1133
+ uniqueIndex["INDEX_NAME"] &&
1134
+ index.synchronize === false);
1135
+ });
1136
+ });
1137
+ const isConstraintComposite = columnUniqueIndices.every((uniqueIndex) => {
1138
+ return dbIndices.some((dbIndex) => dbIndex["INDEX_NAME"] ===
1139
+ uniqueIndex["INDEX_NAME"] &&
1140
+ dbIndex["COLUMN_NAME"] !==
1141
+ dbColumn["COLUMN_NAME"]);
1142
+ });
1143
+ const tableColumn = new TableColumn_1.TableColumn();
1144
+ tableColumn.name = dbColumn["COLUMN_NAME"];
1145
+ let fullType = dbColumn["SPANNER_TYPE"].toLowerCase();
1146
+ if (fullType.indexOf("array") !== -1) {
1147
+ tableColumn.isArray = true;
1148
+ fullType = fullType.substring(fullType.indexOf("<") + 1, fullType.indexOf(">"));
2214
1149
  }
2215
- });
2216
- });
2217
- };
1150
+ if (fullType.indexOf("(") !== -1) {
1151
+ tableColumn.type = fullType.substring(0, fullType.indexOf("("));
1152
+ }
1153
+ else {
1154
+ tableColumn.type = fullType;
1155
+ }
1156
+ if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1) {
1157
+ tableColumn.length = fullType.substring(fullType.indexOf("(") + 1, fullType.indexOf(")"));
1158
+ }
1159
+ if (dbColumn["IS_GENERATED"] === "ALWAYS") {
1160
+ tableColumn.asExpression =
1161
+ dbColumn["GENERATION_EXPRESSION"];
1162
+ tableColumn.generatedType = "STORED";
1163
+ // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
1164
+ const asExpressionQuery = await this.selectTypeormMetadataSql({
1165
+ table: dbTable["TABLE_NAME"],
1166
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1167
+ name: tableColumn.name,
1168
+ });
1169
+ const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
1170
+ if (results[0] && results[0].value) {
1171
+ tableColumn.asExpression = results[0].value;
1172
+ }
1173
+ else {
1174
+ tableColumn.asExpression = "";
1175
+ }
1176
+ }
1177
+ tableColumn.isUnique =
1178
+ columnUniqueIndices.length > 0 &&
1179
+ !hasIgnoredIndex &&
1180
+ !isConstraintComposite;
1181
+ tableColumn.isNullable =
1182
+ dbColumn["IS_NULLABLE"] === "YES";
1183
+ tableColumn.isPrimary = dbPrimaryKeys.some((dbPrimaryKey) => {
1184
+ return (dbPrimaryKey["TABLE_NAME"] ===
1185
+ dbColumn["TABLE_NAME"] &&
1186
+ dbPrimaryKey["COLUMN_NAME"] ===
1187
+ dbColumn["COLUMN_NAME"]);
1188
+ });
1189
+ return tableColumn;
1190
+ }));
1191
+ const tableForeignKeys = dbForeignKeys.filter((dbForeignKey) => {
1192
+ return (dbForeignKey["TABLE_NAME"] === dbTable["TABLE_NAME"]);
1193
+ });
1194
+ table.foreignKeys = OrmUtils_1.OrmUtils.uniq(tableForeignKeys, (dbForeignKey) => dbForeignKey["CONSTRAINT_NAME"]).map((dbForeignKey) => {
1195
+ const foreignKeys = tableForeignKeys.filter((dbFk) => dbFk["CONSTRAINT_NAME"] ===
1196
+ dbForeignKey["CONSTRAINT_NAME"]);
1197
+ return new TableForeignKey_1.TableForeignKey({
1198
+ name: dbForeignKey["CONSTRAINT_NAME"],
1199
+ columnNames: OrmUtils_1.OrmUtils.uniq(foreignKeys.map((dbFk) => dbFk["COLUMN_NAME"])),
1200
+ referencedDatabase: dbForeignKey["REFERENCED_TABLE_SCHEMA"],
1201
+ referencedTableName: dbForeignKey["REFERENCED_TABLE_NAME"],
1202
+ referencedColumnNames: OrmUtils_1.OrmUtils.uniq(foreignKeys.map((dbFk) => dbFk["REFERENCED_COLUMN_NAME"])),
1203
+ onDelete: dbForeignKey["DELETE_RULE"],
1204
+ onUpdate: dbForeignKey["UPDATE_RULE"],
1205
+ });
1206
+ });
1207
+ const tableIndices = dbIndices.filter((dbIndex) => dbIndex["TABLE_NAME"] === dbTable["TABLE_NAME"]);
1208
+ table.indices = OrmUtils_1.OrmUtils.uniq(tableIndices, (dbIndex) => dbIndex["INDEX_NAME"]).map((constraint) => {
1209
+ const indices = tableIndices.filter((index) => {
1210
+ return index["INDEX_NAME"] === constraint["INDEX_NAME"];
1211
+ });
1212
+ return new TableIndex_1.TableIndex({
1213
+ table: table,
1214
+ name: constraint["INDEX_NAME"],
1215
+ columnNames: indices.map((i) => i["COLUMN_NAME"]),
1216
+ isUnique: constraint["IS_UNIQUE"],
1217
+ isNullFiltered: constraint["IS_NULL_FILTERED"],
1218
+ });
1219
+ });
1220
+ const tableChecks = dbChecks.filter((dbCheck) => dbCheck["TABLE_NAME"] === dbTable["TABLE_NAME"]);
1221
+ table.checks = OrmUtils_1.OrmUtils.uniq(tableChecks, (dbIndex) => dbIndex["CONSTRAINT_NAME"]).map((constraint) => {
1222
+ const checks = tableChecks.filter((dbC) => dbC["CONSTRAINT_NAME"] ===
1223
+ constraint["CONSTRAINT_NAME"]);
1224
+ return new TableCheck_1.TableCheck({
1225
+ name: constraint["CONSTRAINT_NAME"],
1226
+ columnNames: checks.map((c) => c["COLUMN_NAME"]),
1227
+ expression: constraint["CHECK_CLAUSE"],
1228
+ });
1229
+ });
1230
+ return table;
1231
+ }));
1232
+ }
2218
1233
  /**
2219
1234
  * Builds create table sql.
2220
1235
  */
2221
- SpannerQueryRunner.prototype.createTableSql = function (table, createForeignKeys) {
2222
- var _this = this;
2223
- var columnDefinitions = table.columns
2224
- .map(function (column) { return _this.buildCreateColumnSql(column); })
1236
+ createTableSql(table, createForeignKeys) {
1237
+ const columnDefinitions = table.columns
1238
+ .map((column) => this.buildCreateColumnSql(column))
2225
1239
  .join(", ");
2226
- var sql = "CREATE TABLE ".concat(this.escapePath(table), " (").concat(columnDefinitions);
1240
+ let sql = `CREATE TABLE ${this.escapePath(table)} (${columnDefinitions}`;
2227
1241
  // we create unique indexes instead of unique constraints, because Spanner does not have unique constraints.
2228
1242
  // if we mark column as Unique, it means that we create UNIQUE INDEX.
2229
1243
  table.columns
2230
- .filter(function (column) { return column.isUnique; })
2231
- .forEach(function (column) {
2232
- var isUniqueIndexExist = table.indices.some(function (index) {
1244
+ .filter((column) => column.isUnique)
1245
+ .forEach((column) => {
1246
+ const isUniqueIndexExist = table.indices.some((index) => {
2233
1247
  return (index.columnNames.length === 1 &&
2234
1248
  !!index.isUnique &&
2235
1249
  index.columnNames.indexOf(column.name) !== -1);
2236
1250
  });
2237
- var isUniqueConstraintExist = table.uniques.some(function (unique) {
1251
+ const isUniqueConstraintExist = table.uniques.some((unique) => {
2238
1252
  return (unique.columnNames.length === 1 &&
2239
1253
  unique.columnNames.indexOf(column.name) !== -1);
2240
1254
  });
2241
1255
  if (!isUniqueIndexExist && !isUniqueConstraintExist)
2242
1256
  table.indices.push(new TableIndex_1.TableIndex({
2243
- name: _this.connection.namingStrategy.uniqueConstraintName(table, [column.name]),
1257
+ name: this.connection.namingStrategy.uniqueConstraintName(table, [column.name]),
2244
1258
  columnNames: [column.name],
2245
1259
  isUnique: true,
2246
1260
  }));
2247
1261
  });
2248
1262
  // as Spanner does not have unique constraints, we must create table indices from table uniques and mark them as unique.
2249
1263
  if (table.uniques.length > 0) {
2250
- table.uniques.forEach(function (unique) {
2251
- var uniqueExist = table.indices.some(function (index) { return index.name === unique.name; });
1264
+ table.uniques.forEach((unique) => {
1265
+ const uniqueExist = table.indices.some((index) => index.name === unique.name);
2252
1266
  if (!uniqueExist) {
2253
1267
  table.indices.push(new TableIndex_1.TableIndex({
2254
1268
  name: unique.name,
@@ -2259,240 +1273,194 @@ var SpannerQueryRunner = /** @class */ (function (_super) {
2259
1273
  });
2260
1274
  }
2261
1275
  if (table.checks.length > 0) {
2262
- var checksSql = table.checks
2263
- .map(function (check) {
2264
- var checkName = check.name
1276
+ const checksSql = table.checks
1277
+ .map((check) => {
1278
+ const checkName = check.name
2265
1279
  ? check.name
2266
- : _this.connection.namingStrategy.checkConstraintName(table, check.expression);
2267
- return "CONSTRAINT `".concat(checkName, "` CHECK (").concat(check.expression, ")");
1280
+ : this.connection.namingStrategy.checkConstraintName(table, check.expression);
1281
+ return `CONSTRAINT \`${checkName}\` CHECK (${check.expression})`;
2268
1282
  })
2269
1283
  .join(", ");
2270
- sql += ", ".concat(checksSql);
1284
+ sql += `, ${checksSql}`;
2271
1285
  }
2272
1286
  if (table.foreignKeys.length > 0 && createForeignKeys) {
2273
- var foreignKeysSql = table.foreignKeys
2274
- .map(function (fk) {
2275
- var columnNames = fk.columnNames
2276
- .map(function (columnName) { return "`".concat(columnName, "`"); })
1287
+ const foreignKeysSql = table.foreignKeys
1288
+ .map((fk) => {
1289
+ const columnNames = fk.columnNames
1290
+ .map((columnName) => `\`${columnName}\``)
2277
1291
  .join(", ");
2278
1292
  if (!fk.name)
2279
- fk.name = _this.connection.namingStrategy.foreignKeyName(table, fk.columnNames, _this.getTablePath(fk), fk.referencedColumnNames);
2280
- var referencedColumnNames = fk.referencedColumnNames
2281
- .map(function (columnName) { return "`".concat(columnName, "`"); })
1293
+ fk.name = this.connection.namingStrategy.foreignKeyName(table, fk.columnNames, this.getTablePath(fk), fk.referencedColumnNames);
1294
+ const referencedColumnNames = fk.referencedColumnNames
1295
+ .map((columnName) => `\`${columnName}\``)
2282
1296
  .join(", ");
2283
- return "CONSTRAINT `".concat(fk.name, "` FOREIGN KEY (").concat(columnNames, ") REFERENCES ").concat(_this.escapePath(_this.getTablePath(fk)), " (").concat(referencedColumnNames, ")");
1297
+ return `CONSTRAINT \`${fk.name}\` FOREIGN KEY (${columnNames}) REFERENCES ${this.escapePath(this.getTablePath(fk))} (${referencedColumnNames})`;
2284
1298
  })
2285
1299
  .join(", ");
2286
- sql += ", ".concat(foreignKeysSql);
1300
+ sql += `, ${foreignKeysSql}`;
2287
1301
  }
2288
- sql += ")";
2289
- var primaryColumns = table.columns.filter(function (column) { return column.isPrimary; });
1302
+ sql += `)`;
1303
+ const primaryColumns = table.columns.filter((column) => column.isPrimary);
2290
1304
  if (primaryColumns.length > 0) {
2291
- var columnNames = primaryColumns
2292
- .map(function (column) { return _this.driver.escape(column.name); })
1305
+ const columnNames = primaryColumns
1306
+ .map((column) => this.driver.escape(column.name))
2293
1307
  .join(", ");
2294
- sql += " PRIMARY KEY (".concat(columnNames, ")");
1308
+ sql += ` PRIMARY KEY (${columnNames})`;
2295
1309
  }
2296
1310
  return new Query_1.Query(sql);
2297
- };
1311
+ }
2298
1312
  /**
2299
1313
  * Builds drop table sql.
2300
1314
  */
2301
- SpannerQueryRunner.prototype.dropTableSql = function (tableOrPath) {
2302
- return new Query_1.Query("DROP TABLE ".concat(this.escapePath(tableOrPath)));
2303
- };
2304
- SpannerQueryRunner.prototype.createViewSql = function (view) {
2305
- var materializedClause = view.materialized ? "MATERIALIZED " : "";
2306
- var viewName = this.escapePath(view);
2307
- var expression = typeof view.expression === "string"
1315
+ dropTableSql(tableOrPath) {
1316
+ return new Query_1.Query(`DROP TABLE ${this.escapePath(tableOrPath)}`);
1317
+ }
1318
+ createViewSql(view) {
1319
+ const materializedClause = view.materialized ? "MATERIALIZED " : "";
1320
+ const viewName = this.escapePath(view);
1321
+ const expression = typeof view.expression === "string"
2308
1322
  ? view.expression
2309
1323
  : view.expression(this.connection).getQuery();
2310
- return new Query_1.Query("CREATE ".concat(materializedClause, "VIEW ").concat(viewName, " SQL SECURITY INVOKER AS ").concat(expression));
2311
- };
2312
- SpannerQueryRunner.prototype.insertViewDefinitionSql = function (view) {
2313
- return tslib_1.__awaiter(this, void 0, void 0, function () {
2314
- var _a, schema, name, type, expression;
2315
- return tslib_1.__generator(this, function (_b) {
2316
- _a = this.driver.parseTableName(view), schema = _a.schema, name = _a.tableName;
2317
- type = view.materialized
2318
- ? MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW
2319
- : MetadataTableType_1.MetadataTableType.VIEW;
2320
- expression = typeof view.expression === "string"
2321
- ? view.expression.trim()
2322
- : view.expression(this.connection).getQuery();
2323
- return [2 /*return*/, this.insertTypeormMetadataSql({
2324
- type: type,
2325
- schema: schema,
2326
- name: name,
2327
- value: expression,
2328
- })];
2329
- });
1324
+ return new Query_1.Query(`CREATE ${materializedClause}VIEW ${viewName} SQL SECURITY INVOKER AS ${expression}`);
1325
+ }
1326
+ async insertViewDefinitionSql(view) {
1327
+ let { schema, tableName: name } = this.driver.parseTableName(view);
1328
+ const type = view.materialized
1329
+ ? MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW
1330
+ : MetadataTableType_1.MetadataTableType.VIEW;
1331
+ const expression = typeof view.expression === "string"
1332
+ ? view.expression.trim()
1333
+ : view.expression(this.connection).getQuery();
1334
+ return this.insertTypeormMetadataSql({
1335
+ type,
1336
+ schema,
1337
+ name,
1338
+ value: expression,
2330
1339
  });
2331
- };
1340
+ }
2332
1341
  /**
2333
1342
  * Builds drop view sql.
2334
1343
  */
2335
- SpannerQueryRunner.prototype.dropViewSql = function (view) {
2336
- var materializedClause = view.materialized ? "MATERIALIZED " : "";
2337
- return new Query_1.Query("DROP ".concat(materializedClause, "VIEW ").concat(this.escapePath(view)));
2338
- };
1344
+ dropViewSql(view) {
1345
+ const materializedClause = view.materialized ? "MATERIALIZED " : "";
1346
+ return new Query_1.Query(`DROP ${materializedClause}VIEW ${this.escapePath(view)}`);
1347
+ }
2339
1348
  /**
2340
1349
  * Builds remove view sql.
2341
1350
  */
2342
- SpannerQueryRunner.prototype.deleteViewDefinitionSql = function (view) {
2343
- return tslib_1.__awaiter(this, void 0, void 0, function () {
2344
- var _a, schema, name, type;
2345
- return tslib_1.__generator(this, function (_b) {
2346
- _a = this.driver.parseTableName(view), schema = _a.schema, name = _a.tableName;
2347
- type = view.materialized
2348
- ? MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW
2349
- : MetadataTableType_1.MetadataTableType.VIEW;
2350
- return [2 /*return*/, this.deleteTypeormMetadataSql({ type: type, schema: schema, name: name })];
2351
- });
2352
- });
2353
- };
1351
+ async deleteViewDefinitionSql(view) {
1352
+ let { schema, tableName: name } = this.driver.parseTableName(view);
1353
+ const type = view.materialized
1354
+ ? MetadataTableType_1.MetadataTableType.MATERIALIZED_VIEW
1355
+ : MetadataTableType_1.MetadataTableType.VIEW;
1356
+ return this.deleteTypeormMetadataSql({ type, schema, name });
1357
+ }
2354
1358
  /**
2355
1359
  * Builds create index sql.
2356
1360
  */
2357
- SpannerQueryRunner.prototype.createIndexSql = function (table, index) {
2358
- var _this = this;
2359
- var columns = index.columnNames
2360
- .map(function (columnName) { return _this.driver.escape(columnName); })
1361
+ createIndexSql(table, index) {
1362
+ const columns = index.columnNames
1363
+ .map((columnName) => this.driver.escape(columnName))
2361
1364
  .join(", ");
2362
- var indexType = "";
1365
+ let indexType = "";
2363
1366
  if (index.isUnique)
2364
1367
  indexType += "UNIQUE ";
2365
1368
  if (index.isNullFiltered)
2366
1369
  indexType += "NULL_FILTERED ";
2367
- return new Query_1.Query("CREATE ".concat(indexType, "INDEX `").concat(index.name, "` ON ").concat(this.escapePath(table), " (").concat(columns, ")"));
2368
- };
1370
+ return new Query_1.Query(`CREATE ${indexType}INDEX \`${index.name}\` ON ${this.escapePath(table)} (${columns})`);
1371
+ }
2369
1372
  /**
2370
1373
  * Builds drop index sql.
2371
1374
  */
2372
- SpannerQueryRunner.prototype.dropIndexSql = function (table, indexOrName) {
2373
- var indexName = indexOrName instanceof TableIndex_1.TableIndex ? indexOrName.name : indexOrName;
2374
- return new Query_1.Query("DROP INDEX `".concat(indexName, "`"));
2375
- };
1375
+ dropIndexSql(table, indexOrName) {
1376
+ let indexName = indexOrName instanceof TableIndex_1.TableIndex ? indexOrName.name : indexOrName;
1377
+ return new Query_1.Query(`DROP INDEX \`${indexName}\``);
1378
+ }
2376
1379
  /**
2377
1380
  * Builds create check constraint sql.
2378
1381
  */
2379
- SpannerQueryRunner.prototype.createCheckConstraintSql = function (table, checkConstraint) {
2380
- return new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " ADD CONSTRAINT `").concat(checkConstraint.name, "` CHECK (").concat(checkConstraint.expression, ")"));
2381
- };
1382
+ createCheckConstraintSql(table, checkConstraint) {
1383
+ return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \`${checkConstraint.name}\` CHECK (${checkConstraint.expression})`);
1384
+ }
2382
1385
  /**
2383
1386
  * Builds drop check constraint sql.
2384
1387
  */
2385
- SpannerQueryRunner.prototype.dropCheckConstraintSql = function (table, checkOrName) {
2386
- var checkName = checkOrName instanceof TableCheck_1.TableCheck ? checkOrName.name : checkOrName;
2387
- return new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " DROP CONSTRAINT `").concat(checkName, "`"));
2388
- };
1388
+ dropCheckConstraintSql(table, checkOrName) {
1389
+ const checkName = checkOrName instanceof TableCheck_1.TableCheck ? checkOrName.name : checkOrName;
1390
+ return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \`${checkName}\``);
1391
+ }
2389
1392
  /**
2390
1393
  * Builds create foreign key sql.
2391
1394
  */
2392
- SpannerQueryRunner.prototype.createForeignKeySql = function (table, foreignKey) {
2393
- var _this = this;
2394
- var columnNames = foreignKey.columnNames
2395
- .map(function (column) { return _this.driver.escape(column); })
1395
+ createForeignKeySql(table, foreignKey) {
1396
+ const columnNames = foreignKey.columnNames
1397
+ .map((column) => this.driver.escape(column))
2396
1398
  .join(", ");
2397
- var referencedColumnNames = foreignKey.referencedColumnNames
2398
- .map(function (column) { return _this.driver.escape(column); })
1399
+ const referencedColumnNames = foreignKey.referencedColumnNames
1400
+ .map((column) => this.driver.escape(column))
2399
1401
  .join(",");
2400
- var sql = "ALTER TABLE ".concat(this.escapePath(table), " ADD CONSTRAINT `").concat(foreignKey.name, "` FOREIGN KEY (").concat(columnNames, ") ") +
2401
- "REFERENCES ".concat(this.escapePath(this.getTablePath(foreignKey)), " (").concat(referencedColumnNames, ")");
1402
+ let sql = `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \`${foreignKey.name}\` FOREIGN KEY (${columnNames}) ` +
1403
+ `REFERENCES ${this.escapePath(this.getTablePath(foreignKey))} (${referencedColumnNames})`;
2402
1404
  return new Query_1.Query(sql);
2403
- };
1405
+ }
2404
1406
  /**
2405
1407
  * Builds drop foreign key sql.
2406
1408
  */
2407
- SpannerQueryRunner.prototype.dropForeignKeySql = function (table, foreignKeyOrName) {
2408
- var foreignKeyName = foreignKeyOrName instanceof TableForeignKey_1.TableForeignKey
1409
+ dropForeignKeySql(table, foreignKeyOrName) {
1410
+ const foreignKeyName = foreignKeyOrName instanceof TableForeignKey_1.TableForeignKey
2409
1411
  ? foreignKeyOrName.name
2410
1412
  : foreignKeyOrName;
2411
- return new Query_1.Query("ALTER TABLE ".concat(this.escapePath(table), " DROP CONSTRAINT `").concat(foreignKeyName, "`"));
2412
- };
1413
+ return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \`${foreignKeyName}\``);
1414
+ }
2413
1415
  /**
2414
1416
  * Escapes given table or view path.
2415
1417
  */
2416
- SpannerQueryRunner.prototype.escapePath = function (target) {
2417
- var tableName = this.driver.parseTableName(target).tableName;
2418
- return "`".concat(tableName, "`");
2419
- };
1418
+ escapePath(target) {
1419
+ const { tableName } = this.driver.parseTableName(target);
1420
+ return `\`${tableName}\``;
1421
+ }
2420
1422
  /**
2421
1423
  * Builds a part of query to create/change a column.
2422
1424
  */
2423
- SpannerQueryRunner.prototype.buildCreateColumnSql = function (column) {
2424
- var c = "".concat(this.driver.escape(column.name), " ").concat(this.connection.driver.createFullType(column));
1425
+ buildCreateColumnSql(column) {
1426
+ let c = `${this.driver.escape(column.name)} ${this.connection.driver.createFullType(column)}`;
2425
1427
  // Spanner supports only STORED generated column type
2426
1428
  if (column.generatedType === "STORED" && column.asExpression) {
2427
- c += " AS (".concat(column.asExpression, ") STORED");
1429
+ c += ` AS (${column.asExpression}) STORED`;
2428
1430
  }
2429
1431
  else {
2430
1432
  if (!column.isNullable)
2431
1433
  c += " NOT NULL";
2432
1434
  }
2433
1435
  return c;
2434
- };
1436
+ }
2435
1437
  /**
2436
1438
  * Executes sql used special for schema build.
2437
1439
  */
2438
- SpannerQueryRunner.prototype.executeQueries = function (upQueries, downQueries) {
2439
- return tslib_1.__awaiter(this, void 0, void 0, function () {
2440
- var upQueries_1, upQueries_1_1, _a, query, parameters, e_15_1;
2441
- var _b, _c, e_15, _d;
2442
- return tslib_1.__generator(this, function (_e) {
2443
- switch (_e.label) {
2444
- case 0:
2445
- if (upQueries instanceof Query_1.Query)
2446
- upQueries = [upQueries];
2447
- if (downQueries instanceof Query_1.Query)
2448
- downQueries = [downQueries];
2449
- (_b = this.sqlInMemory.upQueries).push.apply(_b, tslib_1.__spreadArray([], tslib_1.__read(upQueries), false));
2450
- (_c = this.sqlInMemory.downQueries).push.apply(_c, tslib_1.__spreadArray([], tslib_1.__read(downQueries), false));
2451
- // if sql-in-memory mode is enabled then simply store sql in memory and return
2452
- if (this.sqlMemoryMode === true)
2453
- return [2 /*return*/, Promise.resolve()];
2454
- _e.label = 1;
2455
- case 1:
2456
- _e.trys.push([1, 8, 9, 10]);
2457
- upQueries_1 = tslib_1.__values(upQueries), upQueries_1_1 = upQueries_1.next();
2458
- _e.label = 2;
2459
- case 2:
2460
- if (!!upQueries_1_1.done) return [3 /*break*/, 7];
2461
- _a = upQueries_1_1.value, query = _a.query, parameters = _a.parameters;
2462
- if (!this.isDMLQuery(query)) return [3 /*break*/, 4];
2463
- return [4 /*yield*/, this.query(query, parameters)];
2464
- case 3:
2465
- _e.sent();
2466
- return [3 /*break*/, 6];
2467
- case 4: return [4 /*yield*/, this.updateDDL(query, parameters)];
2468
- case 5:
2469
- _e.sent();
2470
- _e.label = 6;
2471
- case 6:
2472
- upQueries_1_1 = upQueries_1.next();
2473
- return [3 /*break*/, 2];
2474
- case 7: return [3 /*break*/, 10];
2475
- case 8:
2476
- e_15_1 = _e.sent();
2477
- e_15 = { error: e_15_1 };
2478
- return [3 /*break*/, 10];
2479
- case 9:
2480
- try {
2481
- if (upQueries_1_1 && !upQueries_1_1.done && (_d = upQueries_1.return)) _d.call(upQueries_1);
2482
- }
2483
- finally { if (e_15) throw e_15.error; }
2484
- return [7 /*endfinally*/];
2485
- case 10: return [2 /*return*/];
2486
- }
2487
- });
2488
- });
2489
- };
2490
- SpannerQueryRunner.prototype.isDMLQuery = function (query) {
1440
+ async executeQueries(upQueries, downQueries) {
1441
+ if (upQueries instanceof Query_1.Query)
1442
+ upQueries = [upQueries];
1443
+ if (downQueries instanceof Query_1.Query)
1444
+ downQueries = [downQueries];
1445
+ this.sqlInMemory.upQueries.push(...upQueries);
1446
+ this.sqlInMemory.downQueries.push(...downQueries);
1447
+ // if sql-in-memory mode is enabled then simply store sql in memory and return
1448
+ if (this.sqlMemoryMode === true)
1449
+ return Promise.resolve();
1450
+ for (const { query, parameters } of upQueries) {
1451
+ if (this.isDMLQuery(query)) {
1452
+ await this.query(query, parameters);
1453
+ }
1454
+ else {
1455
+ await this.updateDDL(query, parameters);
1456
+ }
1457
+ }
1458
+ }
1459
+ isDMLQuery(query) {
2491
1460
  return (query.startsWith("INSERT") ||
2492
1461
  query.startsWith("UPDATE") ||
2493
1462
  query.startsWith("DELETE"));
2494
- };
2495
- return SpannerQueryRunner;
2496
- }(BaseQueryRunner_1.BaseQueryRunner));
1463
+ }
1464
+ }
2497
1465
  exports.SpannerQueryRunner = SpannerQueryRunner;
2498
1466
  //# sourceMappingURL=SpannerQueryRunner.js.map