typeorm 0.3.21-dev.fdbb013 → 0.3.21

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