typeorm 0.3.6-dev.9d331b1 → 0.3.6-dev.bbdc20f

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 (370) hide show
  1. package/README.md +34 -14
  2. package/browser/cache/DbQueryResultCache.js +9 -1
  3. package/browser/cache/DbQueryResultCache.js.map +1 -1
  4. package/browser/cache/RedisQueryResultCache.js +3 -0
  5. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  6. package/browser/data-source/DataSourceOptions.d.ts +2 -1
  7. package/browser/data-source/DataSourceOptions.js.map +1 -1
  8. package/browser/decorator/Index.js +1 -0
  9. package/browser/decorator/Index.js.map +1 -1
  10. package/browser/decorator/columns/PrimaryColumn.js +4 -1
  11. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  12. package/browser/decorator/options/ColumnOptions.d.ts +10 -2
  13. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  14. package/browser/decorator/options/IndexOptions.d.ts +8 -0
  15. package/browser/decorator/options/IndexOptions.js.map +1 -1
  16. package/browser/decorator/options/JoinColumnOptions.d.ts +4 -0
  17. package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
  18. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
  19. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  20. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
  21. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  22. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
  23. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  24. package/browser/decorator/relations/JoinColumn.js +1 -0
  25. package/browser/decorator/relations/JoinColumn.js.map +1 -1
  26. package/browser/driver/DriverFactory.js +4 -0
  27. package/browser/driver/DriverFactory.js.map +1 -1
  28. package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
  29. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  30. package/browser/driver/cockroachdb/CockroachDriver.js +4 -1
  31. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  32. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
  33. package/browser/driver/cockroachdb/CockroachQueryRunner.js +233 -33
  34. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  35. package/browser/driver/mongodb/typings.d.ts +5 -5
  36. package/browser/driver/mongodb/typings.js.map +1 -1
  37. package/browser/driver/mysql/MysqlDriver.d.ts +1 -0
  38. package/browser/driver/mysql/MysqlDriver.js +94 -23
  39. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  40. package/browser/driver/mysql/MysqlQueryRunner.js +219 -24
  41. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  42. package/browser/driver/oracle/OracleDriver.js +79 -15
  43. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  44. package/browser/driver/oracle/OracleQueryRunner.d.ts +3 -3
  45. package/browser/driver/oracle/OracleQueryRunner.js +216 -42
  46. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  47. package/browser/driver/postgres/PostgresDriver.js +95 -18
  48. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  49. package/browser/driver/postgres/PostgresQueryRunner.d.ts +3 -3
  50. package/browser/driver/postgres/PostgresQueryRunner.js +159 -59
  51. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  52. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  53. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +3 -0
  54. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  55. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  56. package/browser/driver/spanner/SpannerConnectionOptions.js +3 -0
  57. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  58. package/browser/driver/spanner/SpannerDriver.d.ts +241 -0
  59. package/browser/driver/spanner/SpannerDriver.js +604 -0
  60. package/browser/driver/spanner/SpannerDriver.js.map +1 -0
  61. package/browser/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  62. package/browser/driver/spanner/SpannerQueryRunner.js +1445 -0
  63. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -0
  64. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +65 -16
  65. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  66. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
  67. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  68. package/browser/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  69. package/browser/driver/sqlserver/SqlServerDriver.js +99 -26
  70. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  71. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
  72. package/browser/driver/sqlserver/SqlServerQueryRunner.js +251 -37
  73. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  74. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
  75. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  76. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
  77. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  78. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
  79. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  80. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
  81. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  82. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  83. package/browser/driver/types/ColumnTypes.js.map +1 -1
  84. package/browser/driver/types/DatabaseType.d.ts +1 -1
  85. package/browser/driver/types/DatabaseType.js.map +1 -1
  86. package/browser/entity-manager/EntityManager.js +1 -1
  87. package/browser/entity-manager/EntityManager.js.map +1 -1
  88. package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +6 -2
  89. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  90. package/browser/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  91. package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  92. package/browser/entity-schema/EntitySchemaTransformer.js +3 -0
  93. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  94. package/browser/find-options/FindOneOptions.d.ts +1 -1
  95. package/browser/find-options/FindOneOptions.js.map +1 -1
  96. package/browser/find-options/FindOptionsUtils.d.ts +2 -1
  97. package/browser/find-options/FindOptionsUtils.js +2 -1
  98. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  99. package/browser/logger/AdvancedConsoleLogger.d.ts +1 -1
  100. package/browser/logger/AdvancedConsoleLogger.js +1 -1
  101. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  102. package/browser/metadata/ColumnMetadata.d.ts +10 -2
  103. package/browser/metadata/ColumnMetadata.js +8 -0
  104. package/browser/metadata/ColumnMetadata.js.map +1 -1
  105. package/browser/metadata/EntityMetadata.js +1 -1
  106. package/browser/metadata/EntityMetadata.js.map +1 -1
  107. package/browser/metadata/ForeignKeyMetadata.d.ts +7 -0
  108. package/browser/metadata/ForeignKeyMetadata.js +4 -1
  109. package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
  110. package/browser/metadata/IndexMetadata.d.ts +8 -0
  111. package/browser/metadata/IndexMetadata.js +9 -0
  112. package/browser/metadata/IndexMetadata.js.map +1 -1
  113. package/browser/metadata-args/IndexMetadataArgs.d.ts +8 -0
  114. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  115. package/browser/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
  116. package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  117. package/browser/metadata-builder/EntityMetadataBuilder.js +13 -6
  118. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  119. package/browser/metadata-builder/EntityMetadataValidator.js +17 -0
  120. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  121. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
  122. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  123. package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  124. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  125. package/browser/migration/MigrationExecutor.js +1 -1
  126. package/browser/migration/MigrationExecutor.js.map +1 -1
  127. package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
  128. package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
  129. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  130. package/browser/persistence/SubjectExecutor.js +1 -1
  131. package/browser/persistence/SubjectExecutor.js.map +1 -1
  132. package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
  133. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
  134. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  135. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
  136. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  137. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  138. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  139. package/browser/platform/PlatformTools.js +5 -0
  140. package/browser/platform/PlatformTools.js.map +1 -1
  141. package/browser/query-builder/InsertQueryBuilder.js +15 -3
  142. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  143. package/browser/query-builder/QueryBuilder.d.ts +1 -1
  144. package/browser/query-builder/QueryBuilder.js +15 -15
  145. package/browser/query-builder/QueryBuilder.js.map +1 -1
  146. package/browser/query-builder/QueryExpressionMap.d.ts +2 -2
  147. package/browser/query-builder/QueryExpressionMap.js +1 -1
  148. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  149. package/browser/query-builder/ReturningResultsEntityUpdator.js +2 -2
  150. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  151. package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
  152. package/browser/query-builder/SelectQueryBuilder.js +25 -4
  153. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  154. package/browser/query-builder/UpdateQueryBuilder.js +18 -7
  155. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  156. package/browser/query-runner/BaseQueryRunner.d.ts +10 -0
  157. package/browser/query-runner/BaseQueryRunner.js +25 -1
  158. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  159. package/browser/query-runner/QueryRunner.d.ts +2 -2
  160. package/browser/query-runner/QueryRunner.js.map +1 -1
  161. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  162. package/browser/schema-builder/RdbmsSchemaBuilder.js +26 -6
  163. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  164. package/browser/schema-builder/options/TableColumnOptions.d.ts +10 -2
  165. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  166. package/browser/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
  167. package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  168. package/browser/schema-builder/options/TableIndexOptions.d.ts +8 -0
  169. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  170. package/browser/schema-builder/table/TableColumn.d.ts +6 -2
  171. package/browser/schema-builder/table/TableColumn.js +2 -0
  172. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  173. package/browser/schema-builder/table/TableIndex.d.ts +8 -0
  174. package/browser/schema-builder/table/TableIndex.js +3 -0
  175. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  176. package/browser/schema-builder/util/TableUtils.js +1 -0
  177. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  178. package/browser/util/OrmUtils.d.ts +1 -1
  179. package/browser/util/OrmUtils.js +4 -4
  180. package/browser/util/OrmUtils.js.map +1 -1
  181. package/browser/util/escapeRegExp.d.ts +1 -0
  182. package/browser/util/escapeRegExp.js +6 -0
  183. package/browser/util/escapeRegExp.js.map +1 -0
  184. package/cache/DbQueryResultCache.js +9 -1
  185. package/cache/DbQueryResultCache.js.map +1 -1
  186. package/cache/RedisQueryResultCache.js +3 -0
  187. package/cache/RedisQueryResultCache.js.map +1 -1
  188. package/commands/InitCommand.js +1 -1
  189. package/commands/InitCommand.js.map +1 -1
  190. package/commands/MigrationGenerateCommand.js +3 -2
  191. package/commands/MigrationGenerateCommand.js.map +1 -1
  192. package/data-source/DataSourceOptions.d.ts +2 -1
  193. package/data-source/DataSourceOptions.js.map +1 -1
  194. package/decorator/Index.js +1 -0
  195. package/decorator/Index.js.map +1 -1
  196. package/decorator/columns/PrimaryColumn.js +4 -1
  197. package/decorator/columns/PrimaryColumn.js.map +1 -1
  198. package/decorator/options/ColumnOptions.d.ts +10 -2
  199. package/decorator/options/ColumnOptions.js.map +1 -1
  200. package/decorator/options/IndexOptions.d.ts +8 -0
  201. package/decorator/options/IndexOptions.js.map +1 -1
  202. package/decorator/options/JoinColumnOptions.d.ts +4 -0
  203. package/decorator/options/JoinColumnOptions.js.map +1 -1
  204. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
  205. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  206. package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
  207. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  208. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
  209. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  210. package/decorator/relations/JoinColumn.js +1 -0
  211. package/decorator/relations/JoinColumn.js.map +1 -1
  212. package/driver/DriverFactory.js +4 -0
  213. package/driver/DriverFactory.js.map +1 -1
  214. package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
  215. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  216. package/driver/cockroachdb/CockroachDriver.js +4 -1
  217. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  218. package/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
  219. package/driver/cockroachdb/CockroachQueryRunner.js +233 -33
  220. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  221. package/driver/mongodb/typings.d.ts +5 -5
  222. package/driver/mongodb/typings.js.map +1 -1
  223. package/driver/mysql/MysqlDriver.d.ts +1 -0
  224. package/driver/mysql/MysqlDriver.js +94 -23
  225. package/driver/mysql/MysqlDriver.js.map +1 -1
  226. package/driver/mysql/MysqlQueryRunner.js +219 -24
  227. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  228. package/driver/oracle/OracleDriver.js +79 -15
  229. package/driver/oracle/OracleDriver.js.map +1 -1
  230. package/driver/oracle/OracleQueryRunner.d.ts +3 -3
  231. package/driver/oracle/OracleQueryRunner.js +216 -42
  232. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  233. package/driver/postgres/PostgresDriver.js +95 -18
  234. package/driver/postgres/PostgresDriver.js.map +1 -1
  235. package/driver/postgres/PostgresQueryRunner.d.ts +3 -3
  236. package/driver/postgres/PostgresQueryRunner.js +159 -59
  237. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  238. package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  239. package/driver/spanner/SpannerConnectionCredentialsOptions.js +4 -0
  240. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  241. package/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  242. package/driver/spanner/SpannerConnectionOptions.js +4 -0
  243. package/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  244. package/driver/spanner/SpannerDriver.d.ts +241 -0
  245. package/driver/spanner/SpannerDriver.js +608 -0
  246. package/driver/spanner/SpannerDriver.js.map +1 -0
  247. package/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  248. package/driver/spanner/SpannerQueryRunner.js +1449 -0
  249. package/driver/spanner/SpannerQueryRunner.js.map +1 -0
  250. package/driver/sqlite-abstract/AbstractSqliteDriver.js +65 -16
  251. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  252. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
  253. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  254. package/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  255. package/driver/sqlserver/SqlServerDriver.js +99 -26
  256. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  257. package/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
  258. package/driver/sqlserver/SqlServerQueryRunner.js +251 -37
  259. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  260. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
  261. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  262. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
  263. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  264. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
  265. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  266. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
  267. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  268. package/driver/types/ColumnTypes.d.ts +1 -1
  269. package/driver/types/ColumnTypes.js.map +1 -1
  270. package/driver/types/DatabaseType.d.ts +1 -1
  271. package/driver/types/DatabaseType.js.map +1 -1
  272. package/entity-manager/EntityManager.js +1 -1
  273. package/entity-manager/EntityManager.js.map +1 -1
  274. package/entity-schema/EntitySchemaColumnOptions.d.ts +6 -2
  275. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  276. package/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  277. package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  278. package/entity-schema/EntitySchemaTransformer.js +3 -0
  279. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  280. package/find-options/FindOneOptions.d.ts +1 -1
  281. package/find-options/FindOneOptions.js.map +1 -1
  282. package/find-options/FindOptionsUtils.d.ts +2 -1
  283. package/find-options/FindOptionsUtils.js +2 -1
  284. package/find-options/FindOptionsUtils.js.map +1 -1
  285. package/logger/AdvancedConsoleLogger.d.ts +1 -1
  286. package/logger/AdvancedConsoleLogger.js +1 -1
  287. package/logger/AdvancedConsoleLogger.js.map +1 -1
  288. package/metadata/ColumnMetadata.d.ts +10 -2
  289. package/metadata/ColumnMetadata.js +8 -0
  290. package/metadata/ColumnMetadata.js.map +1 -1
  291. package/metadata/EntityMetadata.js +1 -1
  292. package/metadata/EntityMetadata.js.map +1 -1
  293. package/metadata/ForeignKeyMetadata.d.ts +7 -0
  294. package/metadata/ForeignKeyMetadata.js +4 -1
  295. package/metadata/ForeignKeyMetadata.js.map +1 -1
  296. package/metadata/IndexMetadata.d.ts +8 -0
  297. package/metadata/IndexMetadata.js +9 -0
  298. package/metadata/IndexMetadata.js.map +1 -1
  299. package/metadata-args/IndexMetadataArgs.d.ts +8 -0
  300. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  301. package/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
  302. package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  303. package/metadata-builder/EntityMetadataBuilder.js +13 -6
  304. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  305. package/metadata-builder/EntityMetadataValidator.js +17 -0
  306. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  307. package/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
  308. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  309. package/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  310. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  311. package/migration/MigrationExecutor.js +1 -1
  312. package/migration/MigrationExecutor.js.map +1 -1
  313. package/package.json +1 -1
  314. package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
  315. package/persistence/SubjectDatabaseEntityLoader.js +1 -1
  316. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  317. package/persistence/SubjectExecutor.js +1 -1
  318. package/persistence/SubjectExecutor.js.map +1 -1
  319. package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
  320. package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
  321. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  322. package/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
  323. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  324. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  325. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  326. package/platform/PlatformTools.js +5 -0
  327. package/platform/PlatformTools.js.map +1 -1
  328. package/query-builder/InsertQueryBuilder.js +15 -3
  329. package/query-builder/InsertQueryBuilder.js.map +1 -1
  330. package/query-builder/QueryBuilder.d.ts +1 -1
  331. package/query-builder/QueryBuilder.js +15 -15
  332. package/query-builder/QueryBuilder.js.map +1 -1
  333. package/query-builder/QueryExpressionMap.d.ts +2 -2
  334. package/query-builder/QueryExpressionMap.js +1 -1
  335. package/query-builder/QueryExpressionMap.js.map +1 -1
  336. package/query-builder/ReturningResultsEntityUpdator.js +2 -2
  337. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  338. package/query-builder/SelectQueryBuilder.d.ts +1 -1
  339. package/query-builder/SelectQueryBuilder.js +25 -4
  340. package/query-builder/SelectQueryBuilder.js.map +1 -1
  341. package/query-builder/UpdateQueryBuilder.js +18 -7
  342. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  343. package/query-runner/BaseQueryRunner.d.ts +10 -0
  344. package/query-runner/BaseQueryRunner.js +25 -1
  345. package/query-runner/BaseQueryRunner.js.map +1 -1
  346. package/query-runner/QueryRunner.d.ts +2 -2
  347. package/query-runner/QueryRunner.js.map +1 -1
  348. package/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  349. package/schema-builder/RdbmsSchemaBuilder.js +26 -6
  350. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  351. package/schema-builder/options/TableColumnOptions.d.ts +10 -2
  352. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  353. package/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
  354. package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  355. package/schema-builder/options/TableIndexOptions.d.ts +8 -0
  356. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  357. package/schema-builder/table/TableColumn.d.ts +6 -2
  358. package/schema-builder/table/TableColumn.js +2 -0
  359. package/schema-builder/table/TableColumn.js.map +1 -1
  360. package/schema-builder/table/TableIndex.d.ts +8 -0
  361. package/schema-builder/table/TableIndex.js +3 -0
  362. package/schema-builder/table/TableIndex.js.map +1 -1
  363. package/schema-builder/util/TableUtils.js +1 -0
  364. package/schema-builder/util/TableUtils.js.map +1 -1
  365. package/util/OrmUtils.d.ts +1 -1
  366. package/util/OrmUtils.js +4 -4
  367. package/util/OrmUtils.js.map +1 -1
  368. package/util/escapeRegExp.d.ts +1 -0
  369. package/util/escapeRegExp.js +10 -0
  370. package/util/escapeRegExp.js.map +1 -0
@@ -318,6 +318,26 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
318
318
  // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.
319
319
  if (createForeignKeys)
320
320
  table.foreignKeys.forEach((foreignKey) => downQueries.push(this.dropForeignKeySql(table, foreignKey)));
321
+ // if table has column with generated type, we must add the expression to the metadata table
322
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
323
+ for (const column of generatedColumns) {
324
+ const currentDatabase = await this.getCurrentDatabase();
325
+ const insertQuery = this.insertTypeormMetadataSql({
326
+ schema: currentDatabase,
327
+ table: table.name,
328
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
329
+ name: column.name,
330
+ value: column.asExpression,
331
+ });
332
+ const deleteQuery = this.deleteTypeormMetadataSql({
333
+ schema: currentDatabase,
334
+ table: table.name,
335
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
336
+ name: column.name,
337
+ });
338
+ upQueries.push(insertQuery);
339
+ downQueries.push(deleteQuery);
340
+ }
321
341
  return this.executeQueries(upQueries, downQueries);
322
342
  }
323
343
  /**
@@ -342,6 +362,26 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
342
362
  table.indices.forEach((index) => upQueries.push(this.dropIndexSql(table, index)));
343
363
  upQueries.push(this.dropTableSql(table));
344
364
  downQueries.push(this.createTableSql(table, createForeignKeys));
365
+ // if table had columns with generated type, we must remove the expression from the metadata table
366
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
367
+ for (const column of generatedColumns) {
368
+ const currentDatabase = await this.getCurrentDatabase();
369
+ const deleteQuery = this.deleteTypeormMetadataSql({
370
+ schema: currentDatabase,
371
+ table: table.name,
372
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
373
+ name: column.name,
374
+ });
375
+ const insertQuery = this.insertTypeormMetadataSql({
376
+ schema: currentDatabase,
377
+ table: table.name,
378
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
379
+ name: column.name,
380
+ value: column.asExpression,
381
+ });
382
+ upQueries.push(deleteQuery);
383
+ downQueries.push(insertQuery);
384
+ }
345
385
  await this.executeQueries(upQueries, downQueries);
346
386
  }
347
387
  /**
@@ -387,6 +427,10 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
387
427
  downQueries.push(new Query_1.Query(`RENAME TABLE ${this.escapePath(newTable)} TO ${this.escapePath(oldTable)}`));
388
428
  // rename index constraints
389
429
  newTable.indices.forEach((index) => {
430
+ const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames);
431
+ // Skip renaming if Index has user defined constraint name
432
+ if (index.name !== oldIndexName)
433
+ return;
390
434
  // build new constraint name
391
435
  const columnNames = index.columnNames
392
436
  .map((column) => `\`${column}\``)
@@ -410,6 +454,10 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
410
454
  });
411
455
  // rename foreign key constraint
412
456
  newTable.foreignKeys.forEach((foreignKey) => {
457
+ const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
458
+ // Skip renaming if foreign key has user defined constraint name
459
+ if (foreignKey.name !== oldForeignKeyName)
460
+ return;
413
461
  // build new constraint name
414
462
  const columnNames = foreignKey.columnNames
415
463
  .map((column) => `\`${column}\``)
@@ -487,6 +535,24 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
487
535
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${column.name}\` ${this.buildCreateColumnSql(nonGeneratedColumn, true)}`));
488
536
  }
489
537
  }
538
+ if (column.generatedType && column.asExpression) {
539
+ const currentDatabase = await this.getCurrentDatabase();
540
+ const insertQuery = this.insertTypeormMetadataSql({
541
+ schema: currentDatabase,
542
+ table: table.name,
543
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
544
+ name: column.name,
545
+ value: column.asExpression,
546
+ });
547
+ const deleteQuery = this.deleteTypeormMetadataSql({
548
+ schema: currentDatabase,
549
+ table: table.name,
550
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
551
+ name: column.name,
552
+ });
553
+ upQueries.push(insertQuery);
554
+ downQueries.push(deleteQuery);
555
+ }
490
556
  // create column index
491
557
  const columnIndex = clonedTable.indices.find((index) => index.columnNames.length === 1 &&
492
558
  index.columnNames[0] === column.name);
@@ -563,7 +629,12 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
563
629
  newColumn.generationStrategy !== "uuid") ||
564
630
  oldColumn.type !== newColumn.type ||
565
631
  oldColumn.length !== newColumn.length ||
566
- oldColumn.generatedType !== newColumn.generatedType) {
632
+ (oldColumn.generatedType &&
633
+ newColumn.generatedType &&
634
+ oldColumn.generatedType !== newColumn.generatedType) ||
635
+ (!oldColumn.generatedType &&
636
+ newColumn.generatedType === "VIRTUAL") ||
637
+ (oldColumn.generatedType === "VIRTUAL" && !newColumn.generatedType)) {
567
638
  await this.dropColumn(table, oldColumn);
568
639
  await this.addColumn(table, newColumn);
569
640
  // update cloned table
@@ -576,6 +647,10 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
576
647
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${newColumn.name}\` \`${oldColumn.name}\` ${this.buildCreateColumnSql(oldColumn, true, true)}`));
577
648
  // rename index constraints
578
649
  clonedTable.findColumnIndices(oldColumn).forEach((index) => {
650
+ const oldUniqueName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames);
651
+ // Skip renaming if Index has user defined constraint name
652
+ if (index.name !== oldUniqueName)
653
+ return;
579
654
  // build new constraint name
580
655
  index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
581
656
  index.columnNames.push(newColumn.name);
@@ -603,6 +678,10 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
603
678
  clonedTable
604
679
  .findColumnForeignKeys(oldColumn)
605
680
  .forEach((foreignKey) => {
681
+ const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
682
+ // Skip renaming if foreign key has user defined constraint name
683
+ if (foreignKey.name !== foreignKeyName)
684
+ return;
606
685
  // build new constraint name
607
686
  foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
608
687
  foreignKey.columnNames.push(newColumn.name);
@@ -639,6 +718,77 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
639
718
  if (this.isColumnChanged(oldColumn, newColumn, true, true)) {
640
719
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${oldColumn.name}\` ${this.buildCreateColumnSql(newColumn, true)}`));
641
720
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${newColumn.name}\` ${this.buildCreateColumnSql(oldColumn, true)}`));
721
+ if (oldColumn.generatedType && !newColumn.generatedType) {
722
+ // if column changed from generated to non-generated, delete record from typeorm metadata
723
+ const currentDatabase = await this.getCurrentDatabase();
724
+ const deleteQuery = this.deleteTypeormMetadataSql({
725
+ schema: currentDatabase,
726
+ table: table.name,
727
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
728
+ name: oldColumn.name,
729
+ });
730
+ const insertQuery = this.insertTypeormMetadataSql({
731
+ schema: currentDatabase,
732
+ table: table.name,
733
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
734
+ name: oldColumn.name,
735
+ value: oldColumn.asExpression,
736
+ });
737
+ upQueries.push(deleteQuery);
738
+ downQueries.push(insertQuery);
739
+ }
740
+ else if (!oldColumn.generatedType &&
741
+ newColumn.generatedType) {
742
+ // if column changed from non-generated to generated, insert record into typeorm metadata
743
+ const currentDatabase = await this.getCurrentDatabase();
744
+ const insertQuery = this.insertTypeormMetadataSql({
745
+ schema: currentDatabase,
746
+ table: table.name,
747
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
748
+ name: newColumn.name,
749
+ value: newColumn.asExpression,
750
+ });
751
+ const deleteQuery = this.deleteTypeormMetadataSql({
752
+ schema: currentDatabase,
753
+ table: table.name,
754
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
755
+ name: newColumn.name,
756
+ });
757
+ upQueries.push(insertQuery);
758
+ downQueries.push(deleteQuery);
759
+ }
760
+ else if (oldColumn.asExpression !== newColumn.asExpression) {
761
+ // if only expression changed, just update it in typeorm_metadata table
762
+ const currentDatabase = await this.getCurrentDatabase();
763
+ const updateQuery = this.connection
764
+ .createQueryBuilder()
765
+ .update(this.getTypeormMetadataTableName())
766
+ .set({ value: newColumn.asExpression })
767
+ .where("`type` = :type", {
768
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
769
+ })
770
+ .andWhere("`name` = :name", { name: oldColumn.name })
771
+ .andWhere("`schema` = :schema", {
772
+ schema: currentDatabase,
773
+ })
774
+ .andWhere("`table` = :table", { table: table.name })
775
+ .getQueryAndParameters();
776
+ const revertUpdateQuery = this.connection
777
+ .createQueryBuilder()
778
+ .update(this.getTypeormMetadataTableName())
779
+ .set({ value: oldColumn.asExpression })
780
+ .where("`type` = :type", {
781
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
782
+ })
783
+ .andWhere("`name` = :name", { name: newColumn.name })
784
+ .andWhere("`schema` = :schema", {
785
+ schema: currentDatabase,
786
+ })
787
+ .andWhere("`table` = :table", { table: table.name })
788
+ .getQueryAndParameters();
789
+ upQueries.push(new Query_1.Query(updateQuery[0], updateQuery[1]));
790
+ downQueries.push(new Query_1.Query(revertUpdateQuery[0], revertUpdateQuery[1]));
791
+ }
642
792
  }
643
793
  if (newColumn.isPrimary !== oldColumn.isPrimary) {
644
794
  // if table have generated column, we must drop AUTO_INCREMENT before changing primary constraints.
@@ -817,6 +967,24 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
817
967
  }
818
968
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN \`${column.name}\``));
819
969
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column, true)}`));
970
+ if (column.generatedType && column.asExpression) {
971
+ const currentDatabase = await this.getCurrentDatabase();
972
+ const deleteQuery = this.deleteTypeormMetadataSql({
973
+ schema: currentDatabase,
974
+ table: table.name,
975
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
976
+ name: column.name,
977
+ });
978
+ const insertQuery = this.insertTypeormMetadataSql({
979
+ schema: currentDatabase,
980
+ table: table.name,
981
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
982
+ name: column.name,
983
+ value: column.asExpression,
984
+ });
985
+ upQueries.push(deleteQuery);
986
+ downQueries.push(insertQuery);
987
+ }
820
988
  await this.executeQueries(upQueries, downQueries);
821
989
  clonedTable.removeColumn(column);
822
990
  this.replaceCachedTable(table, clonedTable);
@@ -1352,11 +1520,12 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1352
1520
  table.database = dbTable["TABLE_SCHEMA"];
1353
1521
  table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], undefined, db);
1354
1522
  // create columns from the loaded columns
1355
- table.columns = dbColumns
1356
- .filter((dbColumn) => dbColumn["TABLE_NAME"] === dbTable["TABLE_NAME"] &&
1523
+ table.columns = await Promise.all(dbColumns
1524
+ .filter((dbColumn) => dbColumn["TABLE_NAME"] ===
1525
+ dbTable["TABLE_NAME"] &&
1357
1526
  dbColumn["TABLE_SCHEMA"] ===
1358
1527
  dbTable["TABLE_SCHEMA"])
1359
- .map((dbColumn) => {
1528
+ .map(async (dbColumn) => {
1360
1529
  const columnUniqueIndices = dbIndices.filter((dbIndex) => {
1361
1530
  return (dbIndex["TABLE_NAME"] ===
1362
1531
  dbTable["TABLE_NAME"] &&
@@ -1364,7 +1533,8 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1364
1533
  dbTable["TABLE_SCHEMA"] &&
1365
1534
  dbIndex["COLUMN_NAME"] ===
1366
1535
  dbColumn["COLUMN_NAME"] &&
1367
- parseInt(dbIndex["NON_UNIQUE"], 10) === 0);
1536
+ parseInt(dbIndex["NON_UNIQUE"], 10) ===
1537
+ 0);
1368
1538
  });
1369
1539
  const tableMetadata = this.connection.entityMetadatas.find((metadata) => this.getTablePath(table) ===
1370
1540
  this.getTablePath(metadata));
@@ -1385,9 +1555,11 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1385
1555
  });
1386
1556
  const tableColumn = new TableColumn_1.TableColumn();
1387
1557
  tableColumn.name = dbColumn["COLUMN_NAME"];
1388
- tableColumn.type = dbColumn["DATA_TYPE"].toLowerCase();
1558
+ tableColumn.type =
1559
+ dbColumn["DATA_TYPE"].toLowerCase();
1389
1560
  tableColumn.zerofill =
1390
- dbColumn["COLUMN_TYPE"].indexOf("zerofill") !== -1;
1561
+ dbColumn["COLUMN_TYPE"].indexOf("zerofill") !==
1562
+ -1;
1391
1563
  tableColumn.unsigned = tableColumn.zerofill
1392
1564
  ? true
1393
1565
  : dbColumn["COLUMN_TYPE"].indexOf("unsigned") !== -1;
@@ -1401,7 +1573,8 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1401
1573
  }
1402
1574
  if (dbColumn["COLUMN_DEFAULT"] === null ||
1403
1575
  dbColumn["COLUMN_DEFAULT"] === undefined ||
1404
- (isMariaDb && dbColumn["COLUMN_DEFAULT"] === "NULL")) {
1576
+ (isMariaDb &&
1577
+ dbColumn["COLUMN_DEFAULT"] === "NULL")) {
1405
1578
  tableColumn.default = undefined;
1406
1579
  }
1407
1580
  else if (/^CURRENT_TIMESTAMP(\([0-9]*\))?$/i.test(dbColumn["COLUMN_DEFAULT"])) {
@@ -1423,23 +1596,41 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1423
1596
  // New versions of MariaDB return expressions in lowercase. We need to set it in
1424
1597
  // uppercase so the comparison in MysqlDriver#compareExtraValues does not fail.
1425
1598
  tableColumn.onUpdate = dbColumn["EXTRA"]
1426
- .substring(dbColumn["EXTRA"].indexOf("on update") + 10)
1599
+ .substring(dbColumn["EXTRA"].indexOf("on update") +
1600
+ 10)
1427
1601
  .toUpperCase();
1428
1602
  }
1429
1603
  if (dbColumn["GENERATION_EXPRESSION"]) {
1430
- tableColumn.asExpression =
1431
- dbColumn["GENERATION_EXPRESSION"];
1432
1604
  tableColumn.generatedType =
1433
1605
  dbColumn["EXTRA"].indexOf("VIRTUAL") !== -1
1434
1606
  ? "VIRTUAL"
1435
1607
  : "STORED";
1608
+ // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
1609
+ const asExpressionQuery = await this.selectTypeormMetadataSql({
1610
+ schema: dbTable["TABLE_SCHEMA"],
1611
+ table: dbTable["TABLE_NAME"],
1612
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1613
+ name: tableColumn.name,
1614
+ });
1615
+ const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
1616
+ if (results[0] && results[0].value) {
1617
+ tableColumn.asExpression = results[0].value;
1618
+ }
1619
+ else {
1620
+ tableColumn.asExpression = "";
1621
+ }
1436
1622
  }
1437
1623
  tableColumn.isUnique =
1438
1624
  columnUniqueIndices.length > 0 &&
1439
1625
  !hasIgnoredIndex &&
1440
1626
  !isConstraintComposite;
1441
- tableColumn.isNullable =
1442
- dbColumn["IS_NULLABLE"] === "YES";
1627
+ if (isMariaDb && tableColumn.generatedType) {
1628
+ // do nothing - MariaDB does not support NULL/NOT NULL expressions for generated columns
1629
+ }
1630
+ else {
1631
+ tableColumn.isNullable =
1632
+ dbColumn["IS_NULLABLE"] === "YES";
1633
+ }
1443
1634
  tableColumn.isPrimary = dbPrimaryKeys.some((dbPrimaryKey) => {
1444
1635
  return (dbPrimaryKey["TABLE_NAME"] ===
1445
1636
  dbColumn["TABLE_NAME"] &&
@@ -1449,11 +1640,13 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1449
1640
  dbColumn["COLUMN_NAME"]);
1450
1641
  });
1451
1642
  tableColumn.isGenerated =
1452
- dbColumn["EXTRA"].indexOf("auto_increment") !== -1;
1643
+ dbColumn["EXTRA"].indexOf("auto_increment") !==
1644
+ -1;
1453
1645
  if (tableColumn.isGenerated)
1454
1646
  tableColumn.generationStrategy = "increment";
1455
1647
  tableColumn.comment =
1456
- typeof dbColumn["COLUMN_COMMENT"] === "string" &&
1648
+ typeof dbColumn["COLUMN_COMMENT"] ===
1649
+ "string" &&
1457
1650
  dbColumn["COLUMN_COMMENT"].length === 0
1458
1651
  ? undefined
1459
1652
  : dbColumn["COLUMN_COMMENT"];
@@ -1465,16 +1658,18 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1465
1658
  : dbColumn["CHARACTER_SET_NAME"];
1466
1659
  if (dbColumn["COLLATION_NAME"])
1467
1660
  tableColumn.collation =
1468
- dbColumn["COLLATION_NAME"] === defaultCollation
1661
+ dbColumn["COLLATION_NAME"] ===
1662
+ defaultCollation
1469
1663
  ? undefined
1470
1664
  : dbColumn["COLLATION_NAME"];
1471
1665
  // check only columns that have length property
1472
1666
  if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1 &&
1473
1667
  dbColumn["CHARACTER_MAXIMUM_LENGTH"]) {
1474
1668
  const length = dbColumn["CHARACTER_MAXIMUM_LENGTH"].toString();
1475
- tableColumn.length = !this.isDefaultColumnLength(table, tableColumn, length)
1476
- ? length
1477
- : "";
1669
+ tableColumn.length =
1670
+ !this.isDefaultColumnLength(table, tableColumn, length)
1671
+ ? length
1672
+ : "";
1478
1673
  }
1479
1674
  if (tableColumn.type === "decimal" ||
1480
1675
  tableColumn.type === "double" ||
@@ -1507,7 +1702,7 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1507
1702
  tableColumn.precision = parseInt(dbColumn["DATETIME_PRECISION"]);
1508
1703
  }
1509
1704
  return tableColumn;
1510
- });
1705
+ }));
1511
1706
  // find foreign key constraints of table, group them by constraint name and build TableForeignKey.
1512
1707
  const tableForeignKeyConstraints = OrmUtils_1.OrmUtils.uniq(dbForeignKeys.filter((dbForeignKey) => {
1513
1708
  return (dbForeignKey["TABLE_NAME"] ===
@@ -1804,6 +1999,10 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1804
1999
  else {
1805
2000
  c = `\`${column.name}\` ${this.connection.driver.createFullType(column)}`;
1806
2001
  }
2002
+ if (column.charset)
2003
+ c += ` CHARACTER SET "${column.charset}"`;
2004
+ if (column.collation)
2005
+ c += ` COLLATE "${column.collation}"`;
1807
2006
  if (column.asExpression)
1808
2007
  c += ` AS (${column.asExpression}) ${column.generatedType ? column.generatedType : "VIRTUAL"}`;
1809
2008
  // if you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to that column.
@@ -1817,10 +2016,6 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1817
2016
  c += ` (${column.enum
1818
2017
  .map((value) => "'" + value.replace(/'/g, "''") + "'")
1819
2018
  .join(", ")})`;
1820
- if (column.charset)
1821
- c += ` CHARACTER SET "${column.charset}"`;
1822
- if (column.collation)
1823
- c += ` COLLATE "${column.collation}"`;
1824
2019
  const isMariaDb = this.driver.options.type === "mariadb";
1825
2020
  if (isMariaDb &&
1826
2021
  column.asExpression &&