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
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/metadata/ForeignKeyMetadata.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IA4D3B,wEAAwE;IACxE,cAAc;IACd,wEAAwE;IAExE,YAAY,OASX;QA1DD;;WAEG;QACH,YAAO,GAAqB,EAAE,CAAA;QAE9B;;WAEG;QACH,sBAAiB,GAAqB,EAAE,CAAA;QA2BxC;;WAEG;QACH,gBAAW,GAAa,EAAE,CAAA;QAE1B;;WAEG;QACH,0BAAqB,GAAa,EAAE,CAAA;QAgBhC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;QAC5C,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAA;QAChE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAA;QAClD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAA;QAC/C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAA;QAC/C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,OAAO,CAAC,cAAc;YAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAClE,CAAC;IAED,wEAAwE;IACxE,iBAAiB;IACjB,wEAAwE;IAExE;;;OAGG;IACH,KAAK,CAAC,cAAuC;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QACpE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACnD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAClC,CAAA;QACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAA;QAClE,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,cAAc,CACrC,IAAI,CAAC,cAAc,CAAC,SAAS,EAC7B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,wBAAwB,CAAC,SAAS,EACvC,IAAI,CAAC,qBAAqB,CAC7B,CAAA;IACL,CAAC;CACJ","file":"ForeignKeyMetadata.js","sourcesContent":["import { ColumnMetadata } from \"./ColumnMetadata\"\nimport { EntityMetadata } from \"./EntityMetadata\"\nimport { NamingStrategyInterface } from \"../naming-strategy/NamingStrategyInterface\"\nimport { DeferrableType } from \"./types/DeferrableType\"\nimport { OnDeleteType } from \"./types/OnDeleteType\"\nimport { OnUpdateType } from \"./types/OnUpdateType\"\n\n/**\n * Contains all information about entity's foreign key.\n */\nexport class ForeignKeyMetadata {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Entity metadata where this foreign key is.\n */\n entityMetadata: EntityMetadata\n\n /**\n * Entity metadata which this foreign key references.\n */\n referencedEntityMetadata: EntityMetadata\n\n /**\n * Array of columns of this foreign key.\n */\n columns: ColumnMetadata[] = []\n\n /**\n * Array of referenced columns.\n */\n referencedColumns: ColumnMetadata[] = []\n\n /**\n * What to do with a relation on deletion of the row containing a foreign key.\n */\n onDelete?: OnDeleteType\n\n /**\n * What to do with a relation on update of the row containing a foreign key.\n */\n onUpdate?: OnUpdateType\n\n /**\n * When to check the constraints of a foreign key.\n */\n deferrable?: DeferrableType\n\n /**\n * Gets the table name to which this foreign key is referenced.\n */\n referencedTablePath: string\n\n /**\n * Gets foreign key name.\n */\n name: string\n\n /**\n * Gets array of column names.\n */\n columnNames: string[] = []\n\n /**\n * Gets array of referenced column names.\n */\n referencedColumnNames: string[] = []\n\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n\n constructor(options: {\n entityMetadata: EntityMetadata\n referencedEntityMetadata: EntityMetadata\n namingStrategy?: NamingStrategyInterface\n columns: ColumnMetadata[]\n referencedColumns: ColumnMetadata[]\n onDelete?: OnDeleteType\n onUpdate?: OnUpdateType\n deferrable?: DeferrableType\n }) {\n this.entityMetadata = options.entityMetadata\n this.referencedEntityMetadata = options.referencedEntityMetadata\n this.columns = options.columns\n this.referencedColumns = options.referencedColumns\n this.onDelete = options.onDelete || \"NO ACTION\"\n this.onUpdate = options.onUpdate || \"NO ACTION\"\n this.deferrable = options.deferrable\n if (options.namingStrategy) this.build(options.namingStrategy)\n }\n\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n\n /**\n * Builds some depend foreign key properties.\n * Must be called after all entity metadatas and their columns are built.\n */\n build(namingStrategy: NamingStrategyInterface) {\n this.columnNames = this.columns.map((column) => column.databaseName)\n this.referencedColumnNames = this.referencedColumns.map(\n (column) => column.databaseName,\n )\n this.referencedTablePath = this.referencedEntityMetadata.tablePath\n this.name = namingStrategy.foreignKeyName(\n this.entityMetadata.tableName,\n this.columnNames,\n this.referencedEntityMetadata.tableName,\n this.referencedColumnNames,\n )\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/metadata/ForeignKeyMetadata.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAmE3B,wEAAwE;IACxE,cAAc;IACd,wEAAwE;IAExE,YAAY,OAUX;QAlED;;WAEG;QACH,YAAO,GAAqB,EAAE,CAAA;QAE9B;;WAEG;QACH,sBAAiB,GAAqB,EAAE,CAAA;QA6BxC;;WAEG;QACH,gBAAW,GAAa,EAAE,CAAA;QAE1B;;WAEG;QACH,0BAAqB,GAAa,EAAE,CAAA;QAsBhC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;QAC5C,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAA;QAChE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAA;QAClD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAA;QAC/C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAA;QAC/C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;QACpC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAA;QAC7B,IAAI,OAAO,CAAC,cAAc;YAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IAClE,CAAC;IAED,wEAAwE;IACxE,iBAAiB;IACjB,wEAAwE;IAExE;;;OAGG;IACH,KAAK,CAAC,cAAuC;QACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;QACpE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CACnD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAClC,CAAA;QACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAA;QAClE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS;YACtB,CAAC,CAAC,IAAI,CAAC,SAAS;YAChB,CAAC,CAAC,cAAc,CAAC,cAAc,CACzB,IAAI,CAAC,cAAc,CAAC,SAAS,EAC7B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,wBAAwB,CAAC,SAAS,EACvC,IAAI,CAAC,qBAAqB,CAC7B,CAAA;IACX,CAAC;CACJ","file":"ForeignKeyMetadata.js","sourcesContent":["import { ColumnMetadata } from \"./ColumnMetadata\"\nimport { EntityMetadata } from \"./EntityMetadata\"\nimport { NamingStrategyInterface } from \"../naming-strategy/NamingStrategyInterface\"\nimport { DeferrableType } from \"./types/DeferrableType\"\nimport { OnDeleteType } from \"./types/OnDeleteType\"\nimport { OnUpdateType } from \"./types/OnUpdateType\"\n\n/**\n * Contains all information about entity's foreign key.\n */\nexport class ForeignKeyMetadata {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Entity metadata where this foreign key is.\n */\n entityMetadata: EntityMetadata\n\n /**\n * Entity metadata which this foreign key references.\n */\n referencedEntityMetadata: EntityMetadata\n\n /**\n * Array of columns of this foreign key.\n */\n columns: ColumnMetadata[] = []\n\n /**\n * Array of referenced columns.\n */\n referencedColumns: ColumnMetadata[] = []\n\n /**\n * What to do with a relation on deletion of the row containing a foreign key.\n */\n onDelete?: OnDeleteType\n\n /**\n * What to do with a relation on update of the row containing a foreign key.\n */\n onUpdate?: OnUpdateType\n\n /**\n * When to check the constraints of a foreign key.\n */\n deferrable?: DeferrableType\n\n /**\n * Gets the table name to which this foreign key is referenced.\n */\n referencedTablePath: string\n\n /**\n * Gets foreign key name.\n * If unique constraint name was given by a user then it stores givenName.\n * If unique constraint name was not given then its generated.\n */\n name: string\n\n /**\n * Gets array of column names.\n */\n columnNames: string[] = []\n\n /**\n * Gets array of referenced column names.\n */\n referencedColumnNames: string[] = []\n\n /**\n * User specified unique constraint name.\n */\n givenName?: string\n\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n\n constructor(options: {\n entityMetadata: EntityMetadata\n referencedEntityMetadata: EntityMetadata\n namingStrategy?: NamingStrategyInterface\n columns: ColumnMetadata[]\n referencedColumns: ColumnMetadata[]\n onDelete?: OnDeleteType\n onUpdate?: OnUpdateType\n deferrable?: DeferrableType\n name?: string\n }) {\n this.entityMetadata = options.entityMetadata\n this.referencedEntityMetadata = options.referencedEntityMetadata\n this.columns = options.columns\n this.referencedColumns = options.referencedColumns\n this.onDelete = options.onDelete || \"NO ACTION\"\n this.onUpdate = options.onUpdate || \"NO ACTION\"\n this.deferrable = options.deferrable\n this.givenName = options.name\n if (options.namingStrategy) this.build(options.namingStrategy)\n }\n\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n\n /**\n * Builds some depend foreign key properties.\n * Must be called after all entity metadatas and their columns are built.\n */\n build(namingStrategy: NamingStrategyInterface) {\n this.columnNames = this.columns.map((column) => column.databaseName)\n this.referencedColumnNames = this.referencedColumns.map(\n (column) => column.databaseName,\n )\n this.referencedTablePath = this.referencedEntityMetadata.tablePath\n this.name = this.givenName\n ? this.givenName\n : namingStrategy.foreignKeyName(\n this.entityMetadata.tableName,\n this.columnNames,\n this.referencedEntityMetadata.tableName,\n this.referencedColumnNames,\n )\n }\n}\n"],"sourceRoot":".."}
@@ -29,6 +29,14 @@ export declare class IndexMetadata {
29
29
  * Works only in MySQL.
30
30
  */
31
31
  isFulltext: boolean;
32
+ /**
33
+ * NULL_FILTERED indexes are particularly useful for indexing sparse columns, where most rows contain a NULL value.
34
+ * In these cases, the NULL_FILTERED index can be considerably smaller and more efficient to maintain than
35
+ * a normal index that includes NULL values.
36
+ *
37
+ * Works only in Spanner.
38
+ */
39
+ isNullFiltered: boolean;
32
40
  /**
33
41
  * Fulltext parser.
34
42
  * Works only in MySQL.
@@ -21,6 +21,14 @@ export class IndexMetadata {
21
21
  * Works only in MySQL.
22
22
  */
23
23
  this.isFulltext = false;
24
+ /**
25
+ * NULL_FILTERED indexes are particularly useful for indexing sparse columns, where most rows contain a NULL value.
26
+ * In these cases, the NULL_FILTERED index can be considerably smaller and more efficient to maintain than
27
+ * a normal index that includes NULL values.
28
+ *
29
+ * Works only in Spanner.
30
+ */
31
+ this.isNullFiltered = false;
24
32
  /**
25
33
  * Indicates if this index must synchronize with database index.
26
34
  */
@@ -46,6 +54,7 @@ export class IndexMetadata {
46
54
  this.isUnique = !!options.args.unique;
47
55
  this.isSpatial = !!options.args.spatial;
48
56
  this.isFulltext = !!options.args.fulltext;
57
+ this.isNullFiltered = !!options.args.nullFiltered;
49
58
  this.parser = options.args.parser;
50
59
  this.where = options.args.where;
51
60
  this.isSparse = options.args.sparse;
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/metadata/IndexMetadata.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC;;GAEG;AACH,MAAM,OAAO,aAAa;IAsGtB,wEAAwE;IACxE,cAAc;IACd,wEAAwE;IAExE,YAAY,OAKX;QAhGD;;WAEG;QACH,aAAQ,GAAY,KAAK,CAAA;QAEzB;;;WAGG;QACH,cAAS,GAAY,KAAK,CAAA;QAE1B;;;WAGG;QACH,eAAU,GAAY,KAAK,CAAA;QAQ3B;;WAEG;QACH,gBAAW,GAAY,IAAI,CAAA;QA0B3B;;WAEG;QACH,YAAO,GAAqB,EAAE,CAAA;QA0B9B;;;WAGG;QACH,+BAA0B,GAA8B,EAAE,CAAA;QAYtD,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;QAC5C,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;QAChD,IAAI,OAAO,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAEnD,IAAI,OAAO,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;YACjC,IACI,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI;gBACjC,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS;gBAEtC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAA;YAC/C,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;YACrC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA;YACvC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAA;YACzC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;YACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAA;YAC/B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;YACnC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAA;YAC3C,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAA;YACzD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAA;YAClC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA;SAC/C;IACL,CAAC;IAED,wEAAwE;IACxE,uBAAuB;IACvB,wEAAwE;IAExE;;;OAGG;IACH,KAAK,CAAC,cAAuC;QACzC,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;YAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAU,CAAA;YAC3B,OAAO,IAAI,CAAA;SACd;QAED,MAAM,GAAG,GAA8B,EAAE,CAAA;QAEzC,8DAA8D;QAC9D,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,mBAAmB,GAAa,EAAE,CAAA;YACtC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;gBACtC,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAC3C,CAAC,UAAU,EAAE,EAAE;oBACX,IAAI,IAAI,CAAC,gBAAgB;wBACrB,OAAO,CACH,IAAI,CAAC,gBAAgB,CAAC,YAAY;4BAClC,GAAG;4BACH,UAAU,CACb,CAAA;oBAEL,OAAO,UAAU,CAAC,IAAI,EAAE,CAAA;gBAC5B,CAAC,CACJ,CAAA;gBACD,mBAAmB,CAAC,OAAO,CACvB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAC5C,CAAA;aACJ;iBAAM;gBACH,qFAAqF;gBACrF,2GAA2G;gBAC3G,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CACzC,IAAI,CAAC,cAAc,CAAC,aAAa,CACpC,CAAA;gBACD,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;oBAChC,mBAAmB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CACjD,MAAM,CAAC,CAAC,CAAC,CACZ,CAAA;oBACD,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;iBACzD;qBAAM;oBACH,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,CAClD,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CACxB,CAAA;oBACD,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAChC,CAAC,UAAU,EAAE,EAAE,CACX,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,CACtD,CAAA;iBACJ;aACJ;YAED,IAAI,CAAC,OAAO,GAAG,mBAAmB;iBAC7B,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;gBAClB,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CACvD,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,KAAK,YAAY,CACnD,CAAA;gBACD,IAAI,kBAAkB,EAAE;oBACpB,OAAO,CAAC,kBAAkB,CAAC,CAAA;iBAC9B;gBACD,MAAM,oBAAoB,GACtB,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAC9B,CAAC,QAAQ,EAAE,EAAE,CACT,QAAQ,CAAC,gBAAgB;oBACzB,QAAQ,CAAC,YAAY,KAAK,YAAY,CAC7C,CAAA;gBACL,IAAI,oBAAoB,EAAE;oBACtB,OAAO,oBAAoB,CAAC,WAAW,CAAA;iBAC1C;gBACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;oBAC5B,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI;oBAC7B,CAAC,CAAC,EAAE,CAAA;gBACR,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAA;gBACjD,MAAM,IAAI,YAAY,CAClB,SAAS,SAAS,kDAAkD,UAAU,KAAK;oBAC/E,YAAY,CACnB,CAAA;YACL,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;SACrC;QAED,IAAI,CAAC,0BAA0B,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CACrD,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;YAChB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAC3C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,KAAK,GAAG,CAC1C,CAAA;YACD,IAAI,MAAM;gBAAE,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;YAEtD,OAAO,UAAU,CAAA;QACrB,CAAC,EACD,EAA+B,CAClC,CAAA;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS;YACtB,CAAC,CAAC,IAAI,CAAC,SAAS;YAChB,CAAC,CAAC,cAAc,CAAC,SAAS,CACpB,IAAI,CAAC,cAAc,CAAC,SAAS,EAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EACjD,IAAI,CAAC,KAAK,CACb,CAAA;QACP,OAAO,IAAI,CAAA;IACf,CAAC;CACJ","file":"IndexMetadata.js","sourcesContent":["import { EntityMetadata } from \"./EntityMetadata\"\nimport { IndexMetadataArgs } from \"../metadata-args/IndexMetadataArgs\"\nimport { NamingStrategyInterface } from \"../naming-strategy/NamingStrategyInterface\"\nimport { ColumnMetadata } from \"./ColumnMetadata\"\nimport { EmbeddedMetadata } from \"./EmbeddedMetadata\"\nimport { TypeORMError } from \"../error\"\n\n/**\n * Index metadata contains all information about table's index.\n */\nexport class IndexMetadata {\n // ---------------------------------------------------------------------\n // Public Properties\n // ---------------------------------------------------------------------\n\n /**\n * Entity metadata of the class to which this index is applied.\n */\n entityMetadata: EntityMetadata\n\n /**\n * Embedded metadata if this index was applied on embedded.\n */\n embeddedMetadata?: EmbeddedMetadata\n\n /**\n * Indicates if this index must be unique.\n */\n isUnique: boolean = false\n\n /**\n * The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\n * Works only in MySQL.\n */\n isSpatial: boolean = false\n\n /**\n * The FULLTEXT modifier indexes the entire column and does not allow prefixing.\n * Works only in MySQL.\n */\n isFulltext: boolean = false\n\n /**\n * Fulltext parser.\n * Works only in MySQL.\n */\n parser?: string\n\n /**\n * Indicates if this index must synchronize with database index.\n */\n synchronize: boolean = true\n\n /**\n * If true, the index only references documents with the specified field.\n * These indexes use less space but behave differently in some situations (particularly sorts).\n * This option is only supported for mongodb database.\n */\n isSparse?: boolean\n\n /**\n * Builds the index in the background so that building an index an does not block other database activities.\n * This option is only supported for mongodb database.\n */\n isBackground?: boolean\n\n /**\n * Specifies a time to live, in seconds.\n * This option is only supported for mongodb database.\n */\n expireAfterSeconds?: number\n\n /**\n * Target class to which metadata is applied.\n */\n target?: Function | string\n\n /**\n * Indexed columns.\n */\n columns: ColumnMetadata[] = []\n\n /**\n * User specified index name.\n */\n givenName?: string\n\n /**\n * User specified column names.\n */\n givenColumnNames?:\n | ((object?: any) => any[] | { [key: string]: number })\n | string[]\n\n /**\n * Final index name.\n * If index name was given by a user then it stores normalized (by naming strategy) givenName.\n * If index name was not given then its generated.\n */\n name: string\n\n /**\n * Index filter condition.\n */\n where?: string\n\n /**\n * Map of column names with order set.\n * Used only by MongoDB driver.\n */\n columnNamesWithOrderingMap: { [key: string]: number } = {}\n\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n\n constructor(options: {\n entityMetadata: EntityMetadata\n embeddedMetadata?: EmbeddedMetadata\n columns?: ColumnMetadata[]\n args?: IndexMetadataArgs\n }) {\n this.entityMetadata = options.entityMetadata\n this.embeddedMetadata = options.embeddedMetadata\n if (options.columns) this.columns = options.columns\n\n if (options.args) {\n this.target = options.args.target\n if (\n options.args.synchronize !== null &&\n options.args.synchronize !== undefined\n )\n this.synchronize = options.args.synchronize\n this.isUnique = !!options.args.unique\n this.isSpatial = !!options.args.spatial\n this.isFulltext = !!options.args.fulltext\n this.parser = options.args.parser\n this.where = options.args.where\n this.isSparse = options.args.sparse\n this.isBackground = options.args.background\n this.expireAfterSeconds = options.args.expireAfterSeconds\n this.givenName = options.args.name\n this.givenColumnNames = options.args.columns\n }\n }\n\n // ---------------------------------------------------------------------\n // Public Build Methods\n // ---------------------------------------------------------------------\n\n /**\n * Builds some depend index properties.\n * Must be called after all entity metadata's properties map, columns and relations are built.\n */\n build(namingStrategy: NamingStrategyInterface): this {\n if (this.synchronize === false) {\n this.name = this.givenName!\n return this\n }\n\n const map: { [key: string]: number } = {}\n\n // if columns already an array of string then simply return it\n if (this.givenColumnNames) {\n let columnPropertyPaths: string[] = []\n if (Array.isArray(this.givenColumnNames)) {\n columnPropertyPaths = this.givenColumnNames.map(\n (columnName) => {\n if (this.embeddedMetadata)\n return (\n this.embeddedMetadata.propertyPath +\n \".\" +\n columnName\n )\n\n return columnName.trim()\n },\n )\n columnPropertyPaths.forEach(\n (propertyPath) => (map[propertyPath] = 1),\n )\n } else {\n // todo: indices in embeds are not implemented in this syntax. deprecate this syntax?\n // if columns is a function that returns array of field names then execute it and get columns names from it\n const columnsFnResult = this.givenColumnNames(\n this.entityMetadata.propertiesMap,\n )\n if (Array.isArray(columnsFnResult)) {\n columnPropertyPaths = columnsFnResult.map((i: any) =>\n String(i),\n )\n columnPropertyPaths.forEach((name) => (map[name] = 1))\n } else {\n columnPropertyPaths = Object.keys(columnsFnResult).map(\n (i: any) => String(i),\n )\n Object.keys(columnsFnResult).forEach(\n (columnName) =>\n (map[columnName] = columnsFnResult[columnName]),\n )\n }\n }\n\n this.columns = columnPropertyPaths\n .map((propertyPath) => {\n const columnWithSameName = this.entityMetadata.columns.find(\n (column) => column.propertyPath === propertyPath,\n )\n if (columnWithSameName) {\n return [columnWithSameName]\n }\n const relationWithSameName =\n this.entityMetadata.relations.find(\n (relation) =>\n relation.isWithJoinColumn &&\n relation.propertyName === propertyPath,\n )\n if (relationWithSameName) {\n return relationWithSameName.joinColumns\n }\n const indexName = this.givenName\n ? '\"' + this.givenName + '\" '\n : \"\"\n const entityName = this.entityMetadata.targetName\n throw new TypeORMError(\n `Index ${indexName}contains column that is missing in the entity (${entityName}): ` +\n propertyPath,\n )\n })\n .reduce((a, b) => a.concat(b))\n }\n\n this.columnNamesWithOrderingMap = Object.keys(map).reduce(\n (updatedMap, key) => {\n const column = this.entityMetadata.columns.find(\n (column) => column.propertyPath === key,\n )\n if (column) updatedMap[column.databasePath] = map[key]\n\n return updatedMap\n },\n {} as { [key: string]: number },\n )\n\n this.name = this.givenName\n ? this.givenName\n : namingStrategy.indexName(\n this.entityMetadata.tableName,\n this.columns.map((column) => column.databaseName),\n this.where,\n )\n return this\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/metadata/IndexMetadata.ts"],"names":[],"mappings":"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","file":"IndexMetadata.js","sourcesContent":["import { EntityMetadata } from \"./EntityMetadata\"\nimport { IndexMetadataArgs } from \"../metadata-args/IndexMetadataArgs\"\nimport { NamingStrategyInterface } from \"../naming-strategy/NamingStrategyInterface\"\nimport { ColumnMetadata } from \"./ColumnMetadata\"\nimport { EmbeddedMetadata } from \"./EmbeddedMetadata\"\nimport { TypeORMError } from \"../error\"\n\n/**\n * Index metadata contains all information about table's index.\n */\nexport class IndexMetadata {\n // ---------------------------------------------------------------------\n // Public Properties\n // ---------------------------------------------------------------------\n\n /**\n * Entity metadata of the class to which this index is applied.\n */\n entityMetadata: EntityMetadata\n\n /**\n * Embedded metadata if this index was applied on embedded.\n */\n embeddedMetadata?: EmbeddedMetadata\n\n /**\n * Indicates if this index must be unique.\n */\n isUnique: boolean = false\n\n /**\n * The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\n * Works only in MySQL.\n */\n isSpatial: boolean = false\n\n /**\n * The FULLTEXT modifier indexes the entire column and does not allow prefixing.\n * Works only in MySQL.\n */\n isFulltext: boolean = false\n\n /**\n * NULL_FILTERED indexes are particularly useful for indexing sparse columns, where most rows contain a NULL value.\n * In these cases, the NULL_FILTERED index can be considerably smaller and more efficient to maintain than\n * a normal index that includes NULL values.\n *\n * Works only in Spanner.\n */\n isNullFiltered: boolean = false\n\n /**\n * Fulltext parser.\n * Works only in MySQL.\n */\n parser?: string\n\n /**\n * Indicates if this index must synchronize with database index.\n */\n synchronize: boolean = true\n\n /**\n * If true, the index only references documents with the specified field.\n * These indexes use less space but behave differently in some situations (particularly sorts).\n * This option is only supported for mongodb database.\n */\n isSparse?: boolean\n\n /**\n * Builds the index in the background so that building an index an does not block other database activities.\n * This option is only supported for mongodb database.\n */\n isBackground?: boolean\n\n /**\n * Specifies a time to live, in seconds.\n * This option is only supported for mongodb database.\n */\n expireAfterSeconds?: number\n\n /**\n * Target class to which metadata is applied.\n */\n target?: Function | string\n\n /**\n * Indexed columns.\n */\n columns: ColumnMetadata[] = []\n\n /**\n * User specified index name.\n */\n givenName?: string\n\n /**\n * User specified column names.\n */\n givenColumnNames?:\n | ((object?: any) => any[] | { [key: string]: number })\n | string[]\n\n /**\n * Final index name.\n * If index name was given by a user then it stores normalized (by naming strategy) givenName.\n * If index name was not given then its generated.\n */\n name: string\n\n /**\n * Index filter condition.\n */\n where?: string\n\n /**\n * Map of column names with order set.\n * Used only by MongoDB driver.\n */\n columnNamesWithOrderingMap: { [key: string]: number } = {}\n\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n\n constructor(options: {\n entityMetadata: EntityMetadata\n embeddedMetadata?: EmbeddedMetadata\n columns?: ColumnMetadata[]\n args?: IndexMetadataArgs\n }) {\n this.entityMetadata = options.entityMetadata\n this.embeddedMetadata = options.embeddedMetadata\n if (options.columns) this.columns = options.columns\n\n if (options.args) {\n this.target = options.args.target\n if (\n options.args.synchronize !== null &&\n options.args.synchronize !== undefined\n )\n this.synchronize = options.args.synchronize\n this.isUnique = !!options.args.unique\n this.isSpatial = !!options.args.spatial\n this.isFulltext = !!options.args.fulltext\n this.isNullFiltered = !!options.args.nullFiltered\n this.parser = options.args.parser\n this.where = options.args.where\n this.isSparse = options.args.sparse\n this.isBackground = options.args.background\n this.expireAfterSeconds = options.args.expireAfterSeconds\n this.givenName = options.args.name\n this.givenColumnNames = options.args.columns\n }\n }\n\n // ---------------------------------------------------------------------\n // Public Build Methods\n // ---------------------------------------------------------------------\n\n /**\n * Builds some depend index properties.\n * Must be called after all entity metadata's properties map, columns and relations are built.\n */\n build(namingStrategy: NamingStrategyInterface): this {\n if (this.synchronize === false) {\n this.name = this.givenName!\n return this\n }\n\n const map: { [key: string]: number } = {}\n\n // if columns already an array of string then simply return it\n if (this.givenColumnNames) {\n let columnPropertyPaths: string[] = []\n if (Array.isArray(this.givenColumnNames)) {\n columnPropertyPaths = this.givenColumnNames.map(\n (columnName) => {\n if (this.embeddedMetadata)\n return (\n this.embeddedMetadata.propertyPath +\n \".\" +\n columnName\n )\n\n return columnName.trim()\n },\n )\n columnPropertyPaths.forEach(\n (propertyPath) => (map[propertyPath] = 1),\n )\n } else {\n // todo: indices in embeds are not implemented in this syntax. deprecate this syntax?\n // if columns is a function that returns array of field names then execute it and get columns names from it\n const columnsFnResult = this.givenColumnNames(\n this.entityMetadata.propertiesMap,\n )\n if (Array.isArray(columnsFnResult)) {\n columnPropertyPaths = columnsFnResult.map((i: any) =>\n String(i),\n )\n columnPropertyPaths.forEach((name) => (map[name] = 1))\n } else {\n columnPropertyPaths = Object.keys(columnsFnResult).map(\n (i: any) => String(i),\n )\n Object.keys(columnsFnResult).forEach(\n (columnName) =>\n (map[columnName] = columnsFnResult[columnName]),\n )\n }\n }\n\n this.columns = columnPropertyPaths\n .map((propertyPath) => {\n const columnWithSameName = this.entityMetadata.columns.find(\n (column) => column.propertyPath === propertyPath,\n )\n if (columnWithSameName) {\n return [columnWithSameName]\n }\n const relationWithSameName =\n this.entityMetadata.relations.find(\n (relation) =>\n relation.isWithJoinColumn &&\n relation.propertyName === propertyPath,\n )\n if (relationWithSameName) {\n return relationWithSameName.joinColumns\n }\n const indexName = this.givenName\n ? '\"' + this.givenName + '\" '\n : \"\"\n const entityName = this.entityMetadata.targetName\n throw new TypeORMError(\n `Index ${indexName}contains column that is missing in the entity (${entityName}): ` +\n propertyPath,\n )\n })\n .reduce((a, b) => a.concat(b))\n }\n\n this.columnNamesWithOrderingMap = Object.keys(map).reduce(\n (updatedMap, key) => {\n const column = this.entityMetadata.columns.find(\n (column) => column.propertyPath === key,\n )\n if (column) updatedMap[column.databasePath] = map[key]\n\n return updatedMap\n },\n {} as { [key: string]: number },\n )\n\n this.name = this.givenName\n ? this.givenName\n : namingStrategy.indexName(\n this.entityMetadata.tableName,\n this.columns.map((column) => column.databaseName),\n this.where,\n )\n return this\n }\n}\n"],"sourceRoot":".."}
@@ -30,6 +30,14 @@ export interface IndexMetadataArgs {
30
30
  * Works only in MySQL.
31
31
  */
32
32
  fulltext?: boolean;
33
+ /**
34
+ * NULL_FILTERED indexes are particularly useful for indexing sparse columns, where most rows contain a NULL value.
35
+ * In these cases, the NULL_FILTERED index can be considerably smaller and more efficient to maintain than
36
+ * a normal index that includes NULL values.
37
+ *
38
+ * Works only in Spanner.
39
+ */
40
+ nullFiltered?: boolean;
33
41
  /**
34
42
  * Fulltext parser.
35
43
  * Works only in MySQL.
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/metadata-args/IndexMetadataArgs.ts"],"names":[],"mappings":"","file":"IndexMetadataArgs.js","sourcesContent":["/**\n * Arguments for IndexMetadata class.\n */\nexport interface IndexMetadataArgs {\n /**\n * Class to which index is applied.\n */\n target: Function | string\n\n /**\n * Index name.\n */\n name?: string\n\n /**\n * Columns combination to be used as index.\n */\n columns?: ((object?: any) => any[] | { [key: string]: number }) | string[]\n\n /**\n * Indicates if index must be unique or not.\n */\n unique?: boolean\n\n /**\n * The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\n * Works only in MySQL.\n */\n spatial?: boolean\n\n /**\n * The FULLTEXT modifier indexes the entire column and does not allow prefixing.\n * Works only in MySQL.\n */\n fulltext?: boolean\n\n /**\n * Fulltext parser.\n * Works only in MySQL.\n */\n parser?: string\n\n /**\n * Index filter condition.\n */\n where?: string\n\n /**\n * Indicates if index must sync with database index.\n */\n synchronize?: boolean\n\n /**\n * If true, the index only references documents with the specified field.\n * These indexes use less space but behave differently in some situations (particularly sorts).\n * This option is only supported for mongodb database.\n */\n sparse?: boolean\n\n /**\n * Builds the index in the background so that building an index an does not block other database activities.\n * This option is only supported for mongodb database.\n */\n background?: boolean\n\n /**\n * Specifies a time to live, in seconds.\n * This option is only supported for mongodb database.\n */\n expireAfterSeconds?: number\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/metadata-args/IndexMetadataArgs.ts"],"names":[],"mappings":"","file":"IndexMetadataArgs.js","sourcesContent":["/**\n * Arguments for IndexMetadata class.\n */\nexport interface IndexMetadataArgs {\n /**\n * Class to which index is applied.\n */\n target: Function | string\n\n /**\n * Index name.\n */\n name?: string\n\n /**\n * Columns combination to be used as index.\n */\n columns?: ((object?: any) => any[] | { [key: string]: number }) | string[]\n\n /**\n * Indicates if index must be unique or not.\n */\n unique?: boolean\n\n /**\n * The SPATIAL modifier indexes the entire column and does not allow indexed columns to contain NULL values.\n * Works only in MySQL.\n */\n spatial?: boolean\n\n /**\n * The FULLTEXT modifier indexes the entire column and does not allow prefixing.\n * Works only in MySQL.\n */\n fulltext?: boolean\n\n /**\n * NULL_FILTERED indexes are particularly useful for indexing sparse columns, where most rows contain a NULL value.\n * In these cases, the NULL_FILTERED index can be considerably smaller and more efficient to maintain than\n * a normal index that includes NULL values.\n *\n * Works only in Spanner.\n */\n nullFiltered?: boolean\n\n /**\n * Fulltext parser.\n * Works only in MySQL.\n */\n parser?: string\n\n /**\n * Index filter condition.\n */\n where?: string\n\n /**\n * Indicates if index must sync with database index.\n */\n synchronize?: boolean\n\n /**\n * If true, the index only references documents with the specified field.\n * These indexes use less space but behave differently in some situations (particularly sorts).\n * This option is only supported for mongodb database.\n */\n sparse?: boolean\n\n /**\n * Builds the index in the background so that building an index an does not block other database activities.\n * This option is only supported for mongodb database.\n */\n background?: boolean\n\n /**\n * Specifies a time to live, in seconds.\n * This option is only supported for mongodb database.\n */\n expireAfterSeconds?: number\n}\n"],"sourceRoot":".."}
@@ -19,4 +19,8 @@ export interface JoinColumnMetadataArgs {
19
19
  * This is column property name, not a column database name.
20
20
  */
21
21
  referencedColumnName?: string;
22
+ /**
23
+ * Name of the foreign key constraint.
24
+ */
25
+ foreignKeyConstraintName?: string;
22
26
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/metadata-args/JoinColumnMetadataArgs.ts"],"names":[],"mappings":"","file":"JoinColumnMetadataArgs.js","sourcesContent":["/**\n * Arguments for JoinColumnMetadata class.\n */\nexport interface JoinColumnMetadataArgs {\n /**\n * Class to which this column is applied.\n */\n target: Function | string\n\n /**\n * Class's property name to which this column is applied.\n */\n propertyName: string\n\n /**\n * Name of the column.\n */\n name?: string\n\n /**\n * Name of the column in the entity to which this column is referenced.\n * This is column property name, not a column database name.\n */\n referencedColumnName?: string\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/metadata-args/JoinColumnMetadataArgs.ts"],"names":[],"mappings":"","file":"JoinColumnMetadataArgs.js","sourcesContent":["/**\n * Arguments for JoinColumnMetadata class.\n */\nexport interface JoinColumnMetadataArgs {\n /**\n * Class to which this column is applied.\n */\n target: Function | string\n\n /**\n * Class's property name to which this column is applied.\n */\n propertyName: string\n\n /**\n * Name of the column.\n */\n name?: string\n\n /**\n * Name of the column in the entity to which this column is referenced.\n * This is column property name, not a column database name.\n */\n referencedColumnName?: string\n\n /**\n * Name of the foreign key constraint.\n */\n foreignKeyConstraintName?: string\n}\n"],"sourceRoot":".."}
@@ -102,7 +102,9 @@ export class EntityMetadataBuilder {
102
102
  "aurora-mysql" ||
103
103
  this.connection.driver.options.type ===
104
104
  "mssql" ||
105
- this.connection.driver.options.type === "sap") {
105
+ this.connection.driver.options.type === "sap" ||
106
+ this.connection.driver.options.type ===
107
+ "spanner") {
106
108
  const index = new IndexMetadata({
107
109
  entityMetadata: uniqueConstraint.entityMetadata,
108
110
  columns: uniqueConstraint.columns,
@@ -121,6 +123,10 @@ export class EntityMetadataBuilder {
121
123
  })
122
124
  .join(" AND ");
123
125
  }
126
+ if (this.connection.driver.options.type ===
127
+ "spanner") {
128
+ index.isNullFiltered = true;
129
+ }
124
130
  if (relation.embeddedMetadata) {
125
131
  relation.embeddedMetadata.indices.push(index);
126
132
  }
@@ -383,7 +389,7 @@ export class EntityMetadataBuilder {
383
389
  propertyName: "mpath",
384
390
  options: /*tree.column || */ {
385
391
  name: namingStrategy.materializedPathColumnName,
386
- type: "varchar",
392
+ type: String,
387
393
  nullable: true,
388
394
  default: "",
389
395
  },
@@ -402,7 +408,7 @@ export class EntityMetadataBuilder {
402
408
  propertyName: left,
403
409
  options: /*tree.column || */ {
404
410
  name: left,
405
- type: "integer",
411
+ type: Number,
406
412
  nullable: false,
407
413
  default: 1,
408
414
  },
@@ -418,7 +424,7 @@ export class EntityMetadataBuilder {
418
424
  propertyName: right,
419
425
  options: /*tree.column || */ {
420
426
  name: right,
421
- type: "integer",
427
+ type: Number,
422
428
  nullable: false,
423
429
  default: 2,
424
430
  },
@@ -509,10 +515,11 @@ export class EntityMetadataBuilder {
509
515
  return new IndexMetadata({ entityMetadata, args });
510
516
  });
511
517
  }
512
- // Mysql and SAP HANA stores unique constraints as unique indices.
518
+ // This drivers stores unique constraints as unique indices.
513
519
  if (DriverUtils.isMySQLFamily(this.connection.driver) ||
514
520
  this.connection.driver.options.type === "aurora-mysql" ||
515
- this.connection.driver.options.type === "sap") {
521
+ this.connection.driver.options.type === "sap" ||
522
+ this.connection.driver.options.type === "spanner") {
516
523
  const indices = this.metadataArgsStorage
517
524
  .filterUniques(entityMetadata.inheritanceTree)
518
525
  .map((args) => {