typeorm 1.0.0-beta.1 → 1.0.0-beta.2

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 (1249) hide show
  1. package/browser/cache/DbQueryResultCache.d.ts +7 -0
  2. package/browser/cache/DbQueryResultCache.js +12 -4
  3. package/browser/cache/DbQueryResultCache.js.map +1 -1
  4. package/browser/cache/RedisQueryResultCache.d.ts +7 -0
  5. package/browser/cache/RedisQueryResultCache.js +15 -10
  6. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  7. package/browser/cli-ts-node-esm.js +2 -2
  8. package/browser/cli-ts-node-esm.js.map +1 -1
  9. package/browser/common/RelationType.d.ts +2 -0
  10. package/browser/common/RelationType.js.map +1 -1
  11. package/browser/connection/ConnectionMetadataBuilder.d.ts +3 -0
  12. package/browser/connection/ConnectionMetadataBuilder.js +3 -0
  13. package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
  14. package/browser/connection/ConnectionOptionsReader.d.ts +5 -4
  15. package/browser/connection/ConnectionOptionsReader.js +14 -12
  16. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  17. package/browser/data-source/BaseDataSourceOptions.d.ts +8 -0
  18. package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
  19. package/browser/data-source/DataSource.d.ts +20 -1
  20. package/browser/data-source/DataSource.js +37 -15
  21. package/browser/data-source/DataSource.js.map +1 -1
  22. package/browser/decorator/Check.d.ts +2 -0
  23. package/browser/decorator/Check.js +2 -1
  24. package/browser/decorator/Check.js.map +1 -1
  25. package/browser/decorator/Exclusion.d.ts +2 -0
  26. package/browser/decorator/Exclusion.js +1 -0
  27. package/browser/decorator/Exclusion.js.map +1 -1
  28. package/browser/decorator/ForeignKey.d.ts +3 -0
  29. package/browser/decorator/ForeignKey.js +1 -0
  30. package/browser/decorator/ForeignKey.js.map +1 -1
  31. package/browser/decorator/Generated.d.ts +1 -0
  32. package/browser/decorator/Generated.js +1 -0
  33. package/browser/decorator/Generated.js.map +1 -1
  34. package/browser/decorator/Index.d.ts +7 -0
  35. package/browser/decorator/Index.js +13 -13
  36. package/browser/decorator/Index.js.map +1 -1
  37. package/browser/decorator/Unique.d.ts +4 -0
  38. package/browser/decorator/Unique.js +6 -6
  39. package/browser/decorator/Unique.js.map +1 -1
  40. package/browser/decorator/columns/Column.d.ts +11 -0
  41. package/browser/decorator/columns/Column.js +3 -3
  42. package/browser/decorator/columns/Column.js.map +1 -1
  43. package/browser/decorator/columns/CreateDateColumn.d.ts +1 -0
  44. package/browser/decorator/columns/CreateDateColumn.js +2 -1
  45. package/browser/decorator/columns/CreateDateColumn.js.map +1 -1
  46. package/browser/decorator/columns/DeleteDateColumn.d.ts +1 -0
  47. package/browser/decorator/columns/DeleteDateColumn.js +2 -1
  48. package/browser/decorator/columns/DeleteDateColumn.js.map +1 -1
  49. package/browser/decorator/columns/ObjectIdColumn.d.ts +1 -0
  50. package/browser/decorator/columns/ObjectIdColumn.js +3 -4
  51. package/browser/decorator/columns/ObjectIdColumn.js.map +1 -1
  52. package/browser/decorator/columns/PrimaryColumn.d.ts +2 -0
  53. package/browser/decorator/columns/PrimaryColumn.js +2 -2
  54. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  55. package/browser/decorator/columns/PrimaryGeneratedColumn.d.ts +4 -0
  56. package/browser/decorator/columns/PrimaryGeneratedColumn.js +1 -0
  57. package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  58. package/browser/decorator/columns/UpdateDateColumn.d.ts +1 -0
  59. package/browser/decorator/columns/UpdateDateColumn.js +2 -1
  60. package/browser/decorator/columns/UpdateDateColumn.js.map +1 -1
  61. package/browser/decorator/columns/VersionColumn.d.ts +1 -0
  62. package/browser/decorator/columns/VersionColumn.js +2 -1
  63. package/browser/decorator/columns/VersionColumn.js.map +1 -1
  64. package/browser/decorator/columns/ViewColumn.d.ts +1 -0
  65. package/browser/decorator/columns/ViewColumn.js +2 -1
  66. package/browser/decorator/columns/ViewColumn.js.map +1 -1
  67. package/browser/decorator/columns/VirtualColumn.d.ts +2 -0
  68. package/browser/decorator/columns/VirtualColumn.js +1 -0
  69. package/browser/decorator/columns/VirtualColumn.js.map +1 -1
  70. package/browser/decorator/entity/ChildEntity.d.ts +1 -0
  71. package/browser/decorator/entity/ChildEntity.js +1 -0
  72. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  73. package/browser/decorator/entity/Entity.d.ts +2 -0
  74. package/browser/decorator/entity/Entity.js +7 -6
  75. package/browser/decorator/entity/Entity.js.map +1 -1
  76. package/browser/decorator/entity/TableInheritance.d.ts +1 -0
  77. package/browser/decorator/entity/TableInheritance.js +3 -2
  78. package/browser/decorator/entity/TableInheritance.js.map +1 -1
  79. package/browser/decorator/entity-view/ViewEntity.d.ts +2 -0
  80. package/browser/decorator/entity-view/ViewEntity.js +4 -3
  81. package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
  82. package/browser/decorator/options/ColumnOptions.d.ts +3 -0
  83. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  84. package/browser/decorator/options/EntityOptions.d.ts +1 -0
  85. package/browser/decorator/options/EntityOptions.js.map +1 -1
  86. package/browser/decorator/options/RelationOptions.d.ts +2 -0
  87. package/browser/decorator/options/RelationOptions.js.map +1 -1
  88. package/browser/decorator/options/VirtualColumnOptions.d.ts +1 -0
  89. package/browser/decorator/options/VirtualColumnOptions.js.map +1 -1
  90. package/browser/decorator/relations/JoinColumn.d.ts +2 -0
  91. package/browser/decorator/relations/JoinColumn.js +2 -1
  92. package/browser/decorator/relations/JoinColumn.js.map +1 -1
  93. package/browser/decorator/relations/JoinTable.d.ts +2 -0
  94. package/browser/decorator/relations/JoinTable.js +5 -4
  95. package/browser/decorator/relations/JoinTable.js.map +1 -1
  96. package/browser/decorator/relations/ManyToMany.d.ts +2 -0
  97. package/browser/decorator/relations/ManyToMany.js +2 -2
  98. package/browser/decorator/relations/ManyToMany.js.map +1 -1
  99. package/browser/decorator/relations/ManyToOne.d.ts +2 -0
  100. package/browser/decorator/relations/ManyToOne.js +3 -3
  101. package/browser/decorator/relations/ManyToOne.js.map +1 -1
  102. package/browser/decorator/relations/OneToMany.d.ts +1 -0
  103. package/browser/decorator/relations/OneToMany.js +3 -3
  104. package/browser/decorator/relations/OneToMany.js.map +1 -1
  105. package/browser/decorator/relations/OneToOne.d.ts +2 -0
  106. package/browser/decorator/relations/OneToOne.js +3 -3
  107. package/browser/decorator/relations/OneToOne.js.map +1 -1
  108. package/browser/decorator/relations/RelationId.d.ts +1 -0
  109. package/browser/decorator/relations/RelationId.js +1 -0
  110. package/browser/decorator/relations/RelationId.js.map +1 -1
  111. package/browser/decorator/tree/Tree.d.ts +1 -0
  112. package/browser/decorator/tree/Tree.js +1 -0
  113. package/browser/decorator/tree/Tree.js.map +1 -1
  114. package/browser/decorator/tree/TreeChildren.d.ts +1 -0
  115. package/browser/decorator/tree/TreeChildren.js +3 -3
  116. package/browser/decorator/tree/TreeChildren.js.map +1 -1
  117. package/browser/decorator/tree/TreeParent.d.ts +1 -0
  118. package/browser/decorator/tree/TreeParent.js +3 -3
  119. package/browser/decorator/tree/TreeParent.js.map +1 -1
  120. package/browser/driver/Driver.d.ts +5 -0
  121. package/browser/driver/Driver.js.map +1 -1
  122. package/browser/driver/DriverFactory.d.ts +1 -0
  123. package/browser/driver/DriverFactory.js +1 -0
  124. package/browser/driver/DriverFactory.js.map +1 -1
  125. package/browser/driver/DriverUtils.d.ts +7 -0
  126. package/browser/driver/DriverUtils.js +34 -21
  127. package/browser/driver/DriverUtils.js.map +1 -1
  128. package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +1 -0
  129. package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  130. package/browser/driver/aurora-mysql/AuroraMysqlDataSourceOptions.d.ts +1 -0
  131. package/browser/driver/aurora-mysql/AuroraMysqlDataSourceOptions.js.map +1 -1
  132. package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +37 -0
  133. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +53 -16
  134. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  135. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +64 -0
  136. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +90 -30
  137. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  138. package/browser/driver/aurora-postgres/AuroraPostgresDriver.d.ts +13 -0
  139. package/browser/driver/aurora-postgres/AuroraPostgresDriver.js +26 -5
  140. package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  141. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +3 -0
  142. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +27 -1
  143. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  144. package/browser/driver/better-sqlite3/BetterSqlite3DataSourceOptions.d.ts +1 -0
  145. package/browser/driver/better-sqlite3/BetterSqlite3DataSourceOptions.js.map +1 -1
  146. package/browser/driver/better-sqlite3/BetterSqlite3Driver.d.ts +3 -0
  147. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +5 -3
  148. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  149. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +1 -0
  150. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +1 -0
  151. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  152. package/browser/driver/capacitor/CapacitorDriver.d.ts +1 -0
  153. package/browser/driver/capacitor/CapacitorDriver.js +3 -3
  154. package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
  155. package/browser/driver/capacitor/CapacitorQueryRunner.d.ts +2 -0
  156. package/browser/driver/capacitor/CapacitorQueryRunner.js +4 -2
  157. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  158. package/browser/driver/cockroachdb/CockroachDataSourceOptions.d.ts +1 -0
  159. package/browser/driver/cockroachdb/CockroachDataSourceOptions.js.map +1 -1
  160. package/browser/driver/cockroachdb/CockroachDriver.d.ts +35 -0
  161. package/browser/driver/cockroachdb/CockroachDriver.js +64 -29
  162. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  163. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +74 -0
  164. package/browser/driver/cockroachdb/CockroachQueryRunner.js +143 -119
  165. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  166. package/browser/driver/cordova/CordovaDriver.d.ts +6 -0
  167. package/browser/driver/cordova/CordovaDriver.js +14 -4
  168. package/browser/driver/cordova/CordovaDriver.js.map +1 -1
  169. package/browser/driver/cordova/CordovaQueryRunner.d.ts +2 -0
  170. package/browser/driver/cordova/CordovaQueryRunner.js +3 -1
  171. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  172. package/browser/driver/expo/ExpoDriver.js +1 -2
  173. package/browser/driver/expo/ExpoDriver.js.map +1 -1
  174. package/browser/driver/mongodb/MongoDriver.d.ts +25 -0
  175. package/browser/driver/mongodb/MongoDriver.js +35 -6
  176. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  177. package/browser/driver/mongodb/MongoQueryRunner.d.ts +84 -0
  178. package/browser/driver/mongodb/MongoQueryRunner.js +102 -18
  179. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  180. package/browser/driver/mongodb/bson.typings.d.ts +1 -0
  181. package/browser/driver/mongodb/bson.typings.js.map +1 -1
  182. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +1 -0
  183. package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  184. package/browser/driver/mysql/MysqlDataSourceOptions.d.ts +2 -0
  185. package/browser/driver/mysql/MysqlDataSourceOptions.js.map +1 -1
  186. package/browser/driver/mysql/MysqlDriver.d.ts +37 -0
  187. package/browser/driver/mysql/MysqlDriver.js +57 -17
  188. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  189. package/browser/driver/mysql/MysqlQueryRunner.d.ts +64 -0
  190. package/browser/driver/mysql/MysqlQueryRunner.js +140 -111
  191. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  192. package/browser/driver/nativescript/NativescriptDriver.d.ts +1 -0
  193. package/browser/driver/nativescript/NativescriptDriver.js +3 -4
  194. package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
  195. package/browser/driver/nativescript/NativescriptQueryRunner.d.ts +2 -0
  196. package/browser/driver/nativescript/NativescriptQueryRunner.js +3 -1
  197. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  198. package/browser/driver/oracle/OracleDriver.d.ts +32 -0
  199. package/browser/driver/oracle/OracleDriver.js +48 -15
  200. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  201. package/browser/driver/oracle/OracleQueryRunner.d.ts +66 -0
  202. package/browser/driver/oracle/OracleQueryRunner.js +119 -83
  203. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  204. package/browser/driver/postgres/PostgresDataSourceOptions.d.ts +2 -0
  205. package/browser/driver/postgres/PostgresDataSourceOptions.js.map +1 -1
  206. package/browser/driver/postgres/PostgresDriver.d.ts +37 -0
  207. package/browser/driver/postgres/PostgresDriver.js +67 -31
  208. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  209. package/browser/driver/postgres/PostgresQueryRunner.d.ts +81 -0
  210. package/browser/driver/postgres/PostgresQueryRunner.js +152 -121
  211. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  212. package/browser/driver/react-native/ReactNativeDriver.d.ts +29 -0
  213. package/browser/driver/react-native/ReactNativeDriver.js +45 -12
  214. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  215. package/browser/driver/react-native/ReactNativeQueryRunner.d.ts +2 -0
  216. package/browser/driver/react-native/ReactNativeQueryRunner.js +3 -1
  217. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  218. package/browser/driver/sap/SapDataSourceOptions.d.ts +1 -0
  219. package/browser/driver/sap/SapDataSourceOptions.js.map +1 -1
  220. package/browser/driver/sap/SapDriver.d.ts +30 -0
  221. package/browser/driver/sap/SapDriver.js +45 -11
  222. package/browser/driver/sap/SapDriver.js.map +1 -1
  223. package/browser/driver/sap/SapQueryRunner.d.ts +66 -0
  224. package/browser/driver/sap/SapQueryRunner.js +101 -56
  225. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  226. package/browser/driver/spanner/SpannerDataSourceOptions.d.ts +1 -0
  227. package/browser/driver/spanner/SpannerDataSourceOptions.js.map +1 -1
  228. package/browser/driver/spanner/SpannerDriver.d.ts +33 -0
  229. package/browser/driver/spanner/SpannerDriver.js +50 -10
  230. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  231. package/browser/driver/spanner/SpannerQueryRunner.d.ts +64 -0
  232. package/browser/driver/spanner/SpannerQueryRunner.js +89 -32
  233. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  234. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +30 -0
  235. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +43 -77
  236. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  237. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +59 -0
  238. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +89 -45
  239. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  240. package/browser/driver/sqljs/SqljsDriver.d.ts +5 -0
  241. package/browser/driver/sqljs/SqljsDriver.js +8 -4
  242. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  243. package/browser/driver/sqljs/SqljsQueryRunner.d.ts +1 -0
  244. package/browser/driver/sqljs/SqljsQueryRunner.js +1 -0
  245. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  246. package/browser/driver/sqlserver/MssqlParameter.d.ts +1 -0
  247. package/browser/driver/sqlserver/MssqlParameter.js +1 -0
  248. package/browser/driver/sqlserver/MssqlParameter.js.map +1 -1
  249. package/browser/driver/sqlserver/SqlServerDataSourceOptions.d.ts +14 -5
  250. package/browser/driver/sqlserver/SqlServerDataSourceOptions.js.map +1 -1
  251. package/browser/driver/sqlserver/SqlServerDriver.d.ts +42 -0
  252. package/browser/driver/sqlserver/SqlServerDriver.js +100 -26
  253. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  254. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +76 -10
  255. package/browser/driver/sqlserver/SqlServerQueryRunner.js +160 -163
  256. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  257. package/browser/driver/types/IsolationLevel.d.ts +2 -1
  258. package/browser/driver/types/IsolationLevel.js +8 -0
  259. package/browser/driver/types/IsolationLevel.js.map +1 -1
  260. package/browser/driver/validate-isolation-level.d.ts +9 -0
  261. package/browser/driver/validate-isolation-level.js +23 -0
  262. package/browser/driver/validate-isolation-level.js.map +1 -0
  263. package/browser/entity-manager/EntityManager.d.ts +38 -1
  264. package/browser/entity-manager/EntityManager.js +58 -12
  265. package/browser/entity-manager/EntityManager.js.map +1 -1
  266. package/browser/entity-manager/EntityManagerFactory.d.ts +1 -0
  267. package/browser/entity-manager/EntityManagerFactory.js +1 -0
  268. package/browser/entity-manager/EntityManagerFactory.js.map +1 -1
  269. package/browser/entity-manager/MongoEntityManager.d.ts +54 -1
  270. package/browser/entity-manager/MongoEntityManager.js +103 -12
  271. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  272. package/browser/entity-manager/SqljsEntityManager.d.ts +2 -0
  273. package/browser/entity-manager/SqljsEntityManager.js +2 -0
  274. package/browser/entity-manager/SqljsEntityManager.js.map +1 -1
  275. package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +1 -0
  276. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  277. package/browser/entity-schema/EntitySchemaOptions.d.ts +1 -0
  278. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  279. package/browser/entity-schema/EntitySchemaTransformer.d.ts +1 -0
  280. package/browser/entity-schema/EntitySchemaTransformer.js +25 -26
  281. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  282. package/browser/error/InitializedRelationError.d.ts +1 -0
  283. package/browser/error/InitializedRelationError.js +1 -0
  284. package/browser/error/InitializedRelationError.js.map +1 -1
  285. package/browser/find-options/FindOptionsUtils.d.ts +7 -0
  286. package/browser/find-options/FindOptionsUtils.js +7 -0
  287. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  288. package/browser/find-options/OrderByCondition.d.ts +2 -1
  289. package/browser/find-options/OrderByCondition.js.map +1 -1
  290. package/browser/find-options/operator/Any.d.ts +4 -1
  291. package/browser/find-options/operator/Any.js +4 -1
  292. package/browser/find-options/operator/Any.js.map +1 -1
  293. package/browser/find-options/operator/ArrayContainedBy.d.ts +4 -1
  294. package/browser/find-options/operator/ArrayContainedBy.js +4 -1
  295. package/browser/find-options/operator/ArrayContainedBy.js.map +1 -1
  296. package/browser/find-options/operator/ArrayContains.d.ts +4 -1
  297. package/browser/find-options/operator/ArrayContains.js +4 -1
  298. package/browser/find-options/operator/ArrayContains.js.map +1 -1
  299. package/browser/find-options/operator/ArrayOverlap.d.ts +4 -1
  300. package/browser/find-options/operator/ArrayOverlap.js +4 -1
  301. package/browser/find-options/operator/ArrayOverlap.js.map +1 -1
  302. package/browser/find-options/operator/Between.d.ts +4 -1
  303. package/browser/find-options/operator/Between.js +4 -1
  304. package/browser/find-options/operator/Between.js.map +1 -1
  305. package/browser/find-options/operator/Equal.d.ts +6 -3
  306. package/browser/find-options/operator/Equal.js +6 -3
  307. package/browser/find-options/operator/Equal.js.map +1 -1
  308. package/browser/find-options/operator/ILike.d.ts +4 -1
  309. package/browser/find-options/operator/ILike.js +4 -1
  310. package/browser/find-options/operator/ILike.js.map +1 -1
  311. package/browser/find-options/operator/In.d.ts +4 -1
  312. package/browser/find-options/operator/In.js +4 -1
  313. package/browser/find-options/operator/In.js.map +1 -1
  314. package/browser/find-options/operator/IsNull.d.ts +4 -1
  315. package/browser/find-options/operator/IsNull.js +4 -1
  316. package/browser/find-options/operator/IsNull.js.map +1 -1
  317. package/browser/find-options/operator/JsonContains.d.ts +4 -1
  318. package/browser/find-options/operator/JsonContains.js +4 -1
  319. package/browser/find-options/operator/JsonContains.js.map +1 -1
  320. package/browser/find-options/operator/LessThan.d.ts +4 -1
  321. package/browser/find-options/operator/LessThan.js +4 -1
  322. package/browser/find-options/operator/LessThan.js.map +1 -1
  323. package/browser/find-options/operator/LessThanOrEqual.d.ts +4 -1
  324. package/browser/find-options/operator/LessThanOrEqual.js +4 -1
  325. package/browser/find-options/operator/LessThanOrEqual.js.map +1 -1
  326. package/browser/find-options/operator/Like.d.ts +4 -1
  327. package/browser/find-options/operator/Like.js +4 -1
  328. package/browser/find-options/operator/Like.js.map +1 -1
  329. package/browser/find-options/operator/MoreThan.d.ts +4 -1
  330. package/browser/find-options/operator/MoreThan.js +4 -1
  331. package/browser/find-options/operator/MoreThan.js.map +1 -1
  332. package/browser/find-options/operator/MoreThanOrEqual.d.ts +4 -1
  333. package/browser/find-options/operator/MoreThanOrEqual.js +4 -1
  334. package/browser/find-options/operator/MoreThanOrEqual.js.map +1 -1
  335. package/browser/find-options/operator/Not.d.ts +4 -1
  336. package/browser/find-options/operator/Not.js +4 -1
  337. package/browser/find-options/operator/Not.js.map +1 -1
  338. package/browser/find-options/operator/Raw.d.ts +12 -3
  339. package/browser/find-options/operator/Raw.js.map +1 -1
  340. package/browser/globals.js +1 -2
  341. package/browser/globals.js.map +1 -1
  342. package/browser/logger/AbstractLogger.d.ts +9 -0
  343. package/browser/logger/AbstractLogger.js +10 -2
  344. package/browser/logger/AbstractLogger.js.map +1 -1
  345. package/browser/logger/AdvancedConsoleLogger.d.ts +1 -0
  346. package/browser/logger/AdvancedConsoleLogger.js +1 -0
  347. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  348. package/browser/logger/DebugLogger.d.ts +2 -0
  349. package/browser/logger/DebugLogger.js +3 -1
  350. package/browser/logger/DebugLogger.js.map +1 -1
  351. package/browser/logger/FileLogger.d.ts +13 -2
  352. package/browser/logger/FileLogger.js +4 -5
  353. package/browser/logger/FileLogger.js.map +1 -1
  354. package/browser/logger/FormattedConsoleLogger.d.ts +1 -0
  355. package/browser/logger/FormattedConsoleLogger.js +1 -0
  356. package/browser/logger/FormattedConsoleLogger.js.map +1 -1
  357. package/browser/logger/LoggerFactory.d.ts +1 -0
  358. package/browser/logger/LoggerFactory.js +1 -0
  359. package/browser/logger/LoggerFactory.js.map +1 -1
  360. package/browser/logger/LoggerOptions.d.ts +0 -9
  361. package/browser/logger/LoggerOptions.js.map +1 -1
  362. package/browser/logger/SimpleConsoleLogger.d.ts +1 -0
  363. package/browser/logger/SimpleConsoleLogger.js +1 -0
  364. package/browser/logger/SimpleConsoleLogger.js.map +1 -1
  365. package/browser/metadata/CheckMetadata.d.ts +1 -0
  366. package/browser/metadata/CheckMetadata.js +4 -3
  367. package/browser/metadata/CheckMetadata.js.map +1 -1
  368. package/browser/metadata/ColumnMetadata.d.ts +8 -5
  369. package/browser/metadata/ColumnMetadata.js +17 -25
  370. package/browser/metadata/ColumnMetadata.js.map +1 -1
  371. package/browser/metadata/EmbeddedMetadata.d.ts +1 -0
  372. package/browser/metadata/EmbeddedMetadata.js +1 -0
  373. package/browser/metadata/EmbeddedMetadata.js.map +1 -1
  374. package/browser/metadata/EntityListenerMetadata.d.ts +3 -0
  375. package/browser/metadata/EntityListenerMetadata.js +3 -0
  376. package/browser/metadata/EntityListenerMetadata.js.map +1 -1
  377. package/browser/metadata/EntityMetadata.d.ts +25 -5
  378. package/browser/metadata/EntityMetadata.js +32 -12
  379. package/browser/metadata/EntityMetadata.js.map +1 -1
  380. package/browser/metadata/ExclusionMetadata.d.ts +1 -0
  381. package/browser/metadata/ExclusionMetadata.js +4 -3
  382. package/browser/metadata/ExclusionMetadata.js.map +1 -1
  383. package/browser/metadata/ForeignKeyMetadata.d.ts +1 -0
  384. package/browser/metadata/ForeignKeyMetadata.js +6 -5
  385. package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
  386. package/browser/metadata/IndexMetadata.d.ts +1 -0
  387. package/browser/metadata/IndexMetadata.js +4 -3
  388. package/browser/metadata/IndexMetadata.js.map +1 -1
  389. package/browser/metadata/RelationIdMetadata.d.ts +1 -0
  390. package/browser/metadata/RelationIdMetadata.js +1 -0
  391. package/browser/metadata/RelationIdMetadata.js.map +1 -1
  392. package/browser/metadata/RelationMetadata.d.ts +8 -0
  393. package/browser/metadata/RelationMetadata.js +15 -15
  394. package/browser/metadata/RelationMetadata.js.map +1 -1
  395. package/browser/metadata/UniqueMetadata.d.ts +1 -0
  396. package/browser/metadata/UniqueMetadata.js +4 -3
  397. package/browser/metadata/UniqueMetadata.js.map +1 -1
  398. package/browser/metadata-args/MetadataArgsStorage.d.ts +4 -0
  399. package/browser/metadata-args/MetadataArgsStorage.js +4 -0
  400. package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
  401. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.d.ts +1 -0
  402. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +7 -11
  403. package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  404. package/browser/metadata-builder/EntityMetadataBuilder.d.ts +7 -0
  405. package/browser/metadata-builder/EntityMetadataBuilder.js +11 -6
  406. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  407. package/browser/metadata-builder/EntityMetadataValidator.d.ts +4 -0
  408. package/browser/metadata-builder/EntityMetadataValidator.js +6 -43
  409. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  410. package/browser/metadata-builder/JunctionEntityMetadataBuilder.d.ts +3 -0
  411. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +39 -20
  412. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  413. package/browser/metadata-builder/MetadataUtils.d.ts +3 -0
  414. package/browser/metadata-builder/MetadataUtils.js +4 -1
  415. package/browser/metadata-builder/MetadataUtils.js.map +1 -1
  416. package/browser/metadata-builder/RelationJoinColumnBuilder.d.ts +3 -0
  417. package/browser/metadata-builder/RelationJoinColumnBuilder.js +17 -1
  418. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  419. package/browser/migration/MigrationExecutor.d.ts +9 -0
  420. package/browser/migration/MigrationExecutor.js +16 -7
  421. package/browser/migration/MigrationExecutor.js.map +1 -1
  422. package/browser/naming-strategy/DefaultNamingStrategy.d.ts +3 -0
  423. package/browser/naming-strategy/DefaultNamingStrategy.js +13 -10
  424. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  425. package/browser/naming-strategy/NamingStrategyInterface.d.ts +2 -0
  426. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  427. package/browser/persistence/EntityPersistExecutor.js +2 -4
  428. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  429. package/browser/persistence/Subject.js +4 -6
  430. package/browser/persistence/Subject.js.map +1 -1
  431. package/browser/persistence/SubjectChangedColumnsComputer.d.ts +3 -0
  432. package/browser/persistence/SubjectChangedColumnsComputer.js +3 -0
  433. package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  434. package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -0
  435. package/browser/persistence/SubjectDatabaseEntityLoader.js +3 -1
  436. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  437. package/browser/persistence/SubjectExecutor.d.ts +2 -0
  438. package/browser/persistence/SubjectExecutor.js +15 -27
  439. package/browser/persistence/SubjectExecutor.js.map +1 -1
  440. package/browser/persistence/SubjectTopologicalSorter.d.ts +4 -0
  441. package/browser/persistence/SubjectTopologicalSorter.js +4 -0
  442. package/browser/persistence/SubjectTopologicalSorter.js.map +1 -1
  443. package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +2 -0
  444. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +37 -11
  445. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  446. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.d.ts +11 -8
  447. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +15 -13
  448. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  449. package/browser/persistence/subject-builder/OneToManySubjectBuilder.d.ts +9 -10
  450. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +30 -24
  451. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  452. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.d.ts +9 -10
  453. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +9 -10
  454. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  455. package/browser/persistence/tree/ClosureSubjectExecutor.d.ts +4 -0
  456. package/browser/persistence/tree/ClosureSubjectExecutor.js +10 -8
  457. package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  458. package/browser/persistence/tree/MaterializedPathSubjectExecutor.d.ts +2 -0
  459. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +8 -6
  460. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  461. package/browser/persistence/tree/NestedSetSubjectExecutor.d.ts +5 -0
  462. package/browser/persistence/tree/NestedSetSubjectExecutor.js +10 -5
  463. package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  464. package/browser/platform/PlatformTools.d.ts +9 -0
  465. package/browser/platform/PlatformTools.js +10 -1
  466. package/browser/platform/PlatformTools.js.map +1 -1
  467. package/browser/query-builder/Alias.js +1 -1
  468. package/browser/query-builder/Alias.js.map +1 -1
  469. package/browser/query-builder/Brackets.d.ts +1 -0
  470. package/browser/query-builder/Brackets.js +1 -0
  471. package/browser/query-builder/Brackets.js.map +1 -1
  472. package/browser/query-builder/DeleteQueryBuilder.d.ts +7 -0
  473. package/browser/query-builder/DeleteQueryBuilder.js +9 -0
  474. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  475. package/browser/query-builder/InsertQueryBuilder.d.ts +9 -0
  476. package/browser/query-builder/InsertQueryBuilder.js +14 -8
  477. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  478. package/browser/query-builder/JoinAttribute.js +3 -3
  479. package/browser/query-builder/JoinAttribute.js.map +1 -1
  480. package/browser/query-builder/QueryBuilder.d.ts +25 -4
  481. package/browser/query-builder/QueryBuilder.js +58 -15
  482. package/browser/query-builder/QueryBuilder.js.map +1 -1
  483. package/browser/query-builder/QueryBuilderUtils.d.ts +1 -0
  484. package/browser/query-builder/QueryBuilderUtils.js +1 -0
  485. package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
  486. package/browser/query-builder/QueryExpressionMap.d.ts +5 -0
  487. package/browser/query-builder/QueryExpressionMap.js +4 -1
  488. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  489. package/browser/query-builder/RelationIdLoader.d.ts +6 -35
  490. package/browser/query-builder/RelationIdLoader.js +19 -43
  491. package/browser/query-builder/RelationIdLoader.js.map +1 -1
  492. package/browser/query-builder/RelationLoader.d.ts +11 -2
  493. package/browser/query-builder/RelationLoader.js +20 -17
  494. package/browser/query-builder/RelationLoader.js.map +1 -1
  495. package/browser/query-builder/RelationQueryBuilder.d.ts +5 -0
  496. package/browser/query-builder/RelationQueryBuilder.js +5 -0
  497. package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
  498. package/browser/query-builder/RelationRemover.d.ts +1 -0
  499. package/browser/query-builder/RelationRemover.js +1 -0
  500. package/browser/query-builder/RelationRemover.js.map +1 -1
  501. package/browser/query-builder/RelationUpdater.d.ts +1 -0
  502. package/browser/query-builder/RelationUpdater.js +1 -0
  503. package/browser/query-builder/RelationUpdater.js.map +1 -1
  504. package/browser/query-builder/ReturningResultsEntityUpdator.d.ts +2 -0
  505. package/browser/query-builder/ReturningResultsEntityUpdator.js +3 -1
  506. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  507. package/browser/query-builder/SelectQueryBuilder.d.ts +31 -8
  508. package/browser/query-builder/SelectQueryBuilder.js +98 -70
  509. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  510. package/browser/query-builder/SoftDeleteQueryBuilder.d.ts +11 -0
  511. package/browser/query-builder/SoftDeleteQueryBuilder.js +17 -0
  512. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  513. package/browser/query-builder/UpdateQueryBuilder.d.ts +11 -0
  514. package/browser/query-builder/UpdateQueryBuilder.js +18 -1
  515. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  516. package/browser/query-builder/relation-id/RelationIdAttribute.js +5 -5
  517. package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  518. package/browser/query-builder/relation-id/RelationIdLoader.d.ts +2 -1
  519. package/browser/query-builder/relation-id/RelationIdLoader.js +6 -3
  520. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  521. package/browser/query-builder/transformer/DocumentToEntityTransformer.js +3 -16
  522. package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  523. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +2 -4
  524. package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  525. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.d.ts +1 -0
  526. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js +1 -0
  527. package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  528. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +6 -0
  529. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -7
  530. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  531. package/browser/query-runner/BaseQueryRunner.d.ts +21 -1
  532. package/browser/query-runner/BaseQueryRunner.js +36 -49
  533. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  534. package/browser/query-runner/QueryRunner.d.ts +5 -1
  535. package/browser/query-runner/QueryRunner.js.map +1 -1
  536. package/browser/repository/BaseEntity.d.ts +32 -0
  537. package/browser/repository/BaseEntity.js +36 -0
  538. package/browser/repository/BaseEntity.js.map +1 -1
  539. package/browser/repository/MongoRepository.d.ts +39 -0
  540. package/browser/repository/MongoRepository.js +41 -2
  541. package/browser/repository/MongoRepository.js.map +1 -1
  542. package/browser/repository/Repository.d.ts +37 -1
  543. package/browser/repository/Repository.js +43 -2
  544. package/browser/repository/Repository.js.map +1 -1
  545. package/browser/repository/TreeRepository.d.ts +11 -0
  546. package/browser/repository/TreeRepository.js +12 -1
  547. package/browser/repository/TreeRepository.js.map +1 -1
  548. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +6 -4
  549. package/browser/schema-builder/RdbmsSchemaBuilder.js +10 -13
  550. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  551. package/browser/schema-builder/table/Table.d.ts +17 -0
  552. package/browser/schema-builder/table/Table.js +19 -2
  553. package/browser/schema-builder/table/Table.js.map +1 -1
  554. package/browser/schema-builder/table/TableCheck.d.ts +1 -0
  555. package/browser/schema-builder/table/TableCheck.js +1 -0
  556. package/browser/schema-builder/table/TableCheck.js.map +1 -1
  557. package/browser/schema-builder/table/TableColumn.js +7 -7
  558. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  559. package/browser/schema-builder/table/TableExclusion.d.ts +1 -0
  560. package/browser/schema-builder/table/TableExclusion.js +1 -0
  561. package/browser/schema-builder/table/TableExclusion.js.map +1 -1
  562. package/browser/schema-builder/table/TableForeignKey.d.ts +1 -0
  563. package/browser/schema-builder/table/TableForeignKey.js +1 -0
  564. package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
  565. package/browser/schema-builder/table/TableIndex.d.ts +1 -0
  566. package/browser/schema-builder/table/TableIndex.js +2 -1
  567. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  568. package/browser/schema-builder/table/TableUnique.d.ts +1 -0
  569. package/browser/schema-builder/table/TableUnique.js +1 -0
  570. package/browser/schema-builder/table/TableUnique.js.map +1 -1
  571. package/browser/schema-builder/util/ViewUtils.d.ts +1 -0
  572. package/browser/schema-builder/util/ViewUtils.js +1 -0
  573. package/browser/schema-builder/util/ViewUtils.js.map +1 -1
  574. package/browser/schema-builder/view/View.d.ts +3 -0
  575. package/browser/schema-builder/view/View.js +3 -0
  576. package/browser/schema-builder/view/View.js.map +1 -1
  577. package/browser/subscriber/Broadcaster.d.ts +20 -0
  578. package/browser/subscriber/Broadcaster.js +25 -6
  579. package/browser/subscriber/Broadcaster.js.map +1 -1
  580. package/browser/subscriber/event/BaseEvent.d.ts +1 -0
  581. package/browser/subscriber/event/BaseEvent.js.map +1 -1
  582. package/browser/util/DateUtils.d.ts +15 -0
  583. package/browser/util/DateUtils.js +15 -0
  584. package/browser/util/DateUtils.js.map +1 -1
  585. package/browser/util/DepGraph.d.ts +10 -0
  586. package/browser/util/DepGraph.js +11 -0
  587. package/browser/util/DepGraph.js.map +1 -1
  588. package/browser/util/DirectoryExportedClassesLoader.d.ts +1 -0
  589. package/browser/util/DirectoryExportedClassesLoader.js +1 -0
  590. package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
  591. package/browser/util/ObjectUtils.d.ts +6 -0
  592. package/browser/util/ObjectUtils.js +4 -0
  593. package/browser/util/ObjectUtils.js.map +1 -1
  594. package/browser/util/OrmUtils.d.ts +14 -0
  595. package/browser/util/OrmUtils.js +18 -6
  596. package/browser/util/OrmUtils.js.map +1 -1
  597. package/browser/util/PathUtils.d.ts +2 -0
  598. package/browser/util/PathUtils.js +2 -0
  599. package/browser/util/PathUtils.js.map +1 -1
  600. package/browser/util/RandomGenerator.d.ts +2 -0
  601. package/browser/util/RandomGenerator.js +2 -0
  602. package/browser/util/RandomGenerator.js.map +1 -1
  603. package/browser/util/StringUtils.d.ts +11 -4
  604. package/browser/util/StringUtils.js +15 -7
  605. package/browser/util/StringUtils.js.map +1 -1
  606. package/browser/util/TreeRepositoryUtils.js +2 -2
  607. package/browser/util/TreeRepositoryUtils.js.map +1 -1
  608. package/cache/DbQueryResultCache.d.ts +7 -0
  609. package/cache/DbQueryResultCache.js +12 -4
  610. package/cache/DbQueryResultCache.js.map +1 -1
  611. package/cache/RedisQueryResultCache.d.ts +7 -0
  612. package/cache/RedisQueryResultCache.js +15 -10
  613. package/cache/RedisQueryResultCache.js.map +1 -1
  614. package/cli-ts-node-esm.js +2 -2
  615. package/cli-ts-node-esm.js.map +1 -1
  616. package/commands/CacheClearCommand.js +1 -1
  617. package/commands/CacheClearCommand.js.map +1 -1
  618. package/commands/CommandUtils.d.ts +4 -0
  619. package/commands/CommandUtils.js +4 -0
  620. package/commands/CommandUtils.js.map +1 -1
  621. package/commands/EntityCreateCommand.d.ts +1 -0
  622. package/commands/EntityCreateCommand.js +1 -0
  623. package/commands/EntityCreateCommand.js.map +1 -1
  624. package/commands/InitCommand.d.ts +10 -0
  625. package/commands/InitCommand.js +16 -9
  626. package/commands/InitCommand.js.map +1 -1
  627. package/commands/MigrationCreateCommand.d.ts +2 -0
  628. package/commands/MigrationCreateCommand.js +2 -0
  629. package/commands/MigrationCreateCommand.js.map +1 -1
  630. package/commands/MigrationGenerateCommand.d.ts +3 -0
  631. package/commands/MigrationGenerateCommand.js +4 -1
  632. package/commands/MigrationGenerateCommand.js.map +1 -1
  633. package/commands/MigrationRevertCommand.js +1 -1
  634. package/commands/MigrationRevertCommand.js.map +1 -1
  635. package/commands/MigrationRunCommand.js +1 -1
  636. package/commands/MigrationRunCommand.js.map +1 -1
  637. package/commands/MigrationShowCommand.js +1 -1
  638. package/commands/MigrationShowCommand.js.map +1 -1
  639. package/commands/QueryCommand.js +1 -1
  640. package/commands/QueryCommand.js.map +1 -1
  641. package/commands/SchemaDropCommand.js +1 -1
  642. package/commands/SchemaDropCommand.js.map +1 -1
  643. package/commands/SchemaSyncCommand.js +1 -1
  644. package/commands/SchemaSyncCommand.js.map +1 -1
  645. package/commands/SubscriberCreateCommand.d.ts +1 -0
  646. package/commands/SubscriberCreateCommand.js +1 -0
  647. package/commands/SubscriberCreateCommand.js.map +1 -1
  648. package/commands/VersionCommand.js +2 -2
  649. package/commands/VersionCommand.js.map +1 -1
  650. package/common/RelationType.d.ts +2 -0
  651. package/common/RelationType.js.map +1 -1
  652. package/connection/ConnectionMetadataBuilder.d.ts +3 -0
  653. package/connection/ConnectionMetadataBuilder.js +3 -0
  654. package/connection/ConnectionMetadataBuilder.js.map +1 -1
  655. package/connection/ConnectionOptionsReader.d.ts +5 -4
  656. package/connection/ConnectionOptionsReader.js +14 -12
  657. package/connection/ConnectionOptionsReader.js.map +1 -1
  658. package/data-source/BaseDataSourceOptions.d.ts +8 -0
  659. package/data-source/BaseDataSourceOptions.js.map +1 -1
  660. package/data-source/DataSource.d.ts +20 -1
  661. package/data-source/DataSource.js +37 -15
  662. package/data-source/DataSource.js.map +1 -1
  663. package/decorator/Check.d.ts +2 -0
  664. package/decorator/Check.js +2 -1
  665. package/decorator/Check.js.map +1 -1
  666. package/decorator/Exclusion.d.ts +2 -0
  667. package/decorator/Exclusion.js +1 -0
  668. package/decorator/Exclusion.js.map +1 -1
  669. package/decorator/ForeignKey.d.ts +3 -0
  670. package/decorator/ForeignKey.js +1 -0
  671. package/decorator/ForeignKey.js.map +1 -1
  672. package/decorator/Generated.d.ts +1 -0
  673. package/decorator/Generated.js +1 -0
  674. package/decorator/Generated.js.map +1 -1
  675. package/decorator/Index.d.ts +7 -0
  676. package/decorator/Index.js +13 -13
  677. package/decorator/Index.js.map +1 -1
  678. package/decorator/Unique.d.ts +4 -0
  679. package/decorator/Unique.js +6 -6
  680. package/decorator/Unique.js.map +1 -1
  681. package/decorator/columns/Column.d.ts +11 -0
  682. package/decorator/columns/Column.js +3 -3
  683. package/decorator/columns/Column.js.map +1 -1
  684. package/decorator/columns/CreateDateColumn.d.ts +1 -0
  685. package/decorator/columns/CreateDateColumn.js +2 -1
  686. package/decorator/columns/CreateDateColumn.js.map +1 -1
  687. package/decorator/columns/DeleteDateColumn.d.ts +1 -0
  688. package/decorator/columns/DeleteDateColumn.js +2 -1
  689. package/decorator/columns/DeleteDateColumn.js.map +1 -1
  690. package/decorator/columns/ObjectIdColumn.d.ts +1 -0
  691. package/decorator/columns/ObjectIdColumn.js +3 -4
  692. package/decorator/columns/ObjectIdColumn.js.map +1 -1
  693. package/decorator/columns/PrimaryColumn.d.ts +2 -0
  694. package/decorator/columns/PrimaryColumn.js +2 -2
  695. package/decorator/columns/PrimaryColumn.js.map +1 -1
  696. package/decorator/columns/PrimaryGeneratedColumn.d.ts +4 -0
  697. package/decorator/columns/PrimaryGeneratedColumn.js +1 -0
  698. package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
  699. package/decorator/columns/UpdateDateColumn.d.ts +1 -0
  700. package/decorator/columns/UpdateDateColumn.js +2 -1
  701. package/decorator/columns/UpdateDateColumn.js.map +1 -1
  702. package/decorator/columns/VersionColumn.d.ts +1 -0
  703. package/decorator/columns/VersionColumn.js +2 -1
  704. package/decorator/columns/VersionColumn.js.map +1 -1
  705. package/decorator/columns/ViewColumn.d.ts +1 -0
  706. package/decorator/columns/ViewColumn.js +2 -1
  707. package/decorator/columns/ViewColumn.js.map +1 -1
  708. package/decorator/columns/VirtualColumn.d.ts +2 -0
  709. package/decorator/columns/VirtualColumn.js +1 -0
  710. package/decorator/columns/VirtualColumn.js.map +1 -1
  711. package/decorator/entity/ChildEntity.d.ts +1 -0
  712. package/decorator/entity/ChildEntity.js +1 -0
  713. package/decorator/entity/ChildEntity.js.map +1 -1
  714. package/decorator/entity/Entity.d.ts +2 -0
  715. package/decorator/entity/Entity.js +7 -6
  716. package/decorator/entity/Entity.js.map +1 -1
  717. package/decorator/entity/TableInheritance.d.ts +1 -0
  718. package/decorator/entity/TableInheritance.js +3 -2
  719. package/decorator/entity/TableInheritance.js.map +1 -1
  720. package/decorator/entity-view/ViewEntity.d.ts +2 -0
  721. package/decorator/entity-view/ViewEntity.js +4 -3
  722. package/decorator/entity-view/ViewEntity.js.map +1 -1
  723. package/decorator/options/ColumnOptions.d.ts +3 -0
  724. package/decorator/options/ColumnOptions.js.map +1 -1
  725. package/decorator/options/EntityOptions.d.ts +1 -0
  726. package/decorator/options/EntityOptions.js.map +1 -1
  727. package/decorator/options/RelationOptions.d.ts +2 -0
  728. package/decorator/options/RelationOptions.js.map +1 -1
  729. package/decorator/options/VirtualColumnOptions.d.ts +1 -0
  730. package/decorator/options/VirtualColumnOptions.js.map +1 -1
  731. package/decorator/relations/JoinColumn.d.ts +2 -0
  732. package/decorator/relations/JoinColumn.js +2 -1
  733. package/decorator/relations/JoinColumn.js.map +1 -1
  734. package/decorator/relations/JoinTable.d.ts +2 -0
  735. package/decorator/relations/JoinTable.js +5 -4
  736. package/decorator/relations/JoinTable.js.map +1 -1
  737. package/decorator/relations/ManyToMany.d.ts +2 -0
  738. package/decorator/relations/ManyToMany.js +2 -2
  739. package/decorator/relations/ManyToMany.js.map +1 -1
  740. package/decorator/relations/ManyToOne.d.ts +2 -0
  741. package/decorator/relations/ManyToOne.js +3 -3
  742. package/decorator/relations/ManyToOne.js.map +1 -1
  743. package/decorator/relations/OneToMany.d.ts +1 -0
  744. package/decorator/relations/OneToMany.js +3 -3
  745. package/decorator/relations/OneToMany.js.map +1 -1
  746. package/decorator/relations/OneToOne.d.ts +2 -0
  747. package/decorator/relations/OneToOne.js +3 -3
  748. package/decorator/relations/OneToOne.js.map +1 -1
  749. package/decorator/relations/RelationId.d.ts +1 -0
  750. package/decorator/relations/RelationId.js +1 -0
  751. package/decorator/relations/RelationId.js.map +1 -1
  752. package/decorator/tree/Tree.d.ts +1 -0
  753. package/decorator/tree/Tree.js +1 -0
  754. package/decorator/tree/Tree.js.map +1 -1
  755. package/decorator/tree/TreeChildren.d.ts +1 -0
  756. package/decorator/tree/TreeChildren.js +3 -3
  757. package/decorator/tree/TreeChildren.js.map +1 -1
  758. package/decorator/tree/TreeParent.d.ts +1 -0
  759. package/decorator/tree/TreeParent.js +3 -3
  760. package/decorator/tree/TreeParent.js.map +1 -1
  761. package/driver/Driver.d.ts +5 -0
  762. package/driver/Driver.js.map +1 -1
  763. package/driver/DriverFactory.d.ts +1 -0
  764. package/driver/DriverFactory.js +1 -0
  765. package/driver/DriverFactory.js.map +1 -1
  766. package/driver/DriverUtils.d.ts +7 -0
  767. package/driver/DriverUtils.js +34 -21
  768. package/driver/DriverUtils.js.map +1 -1
  769. package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +1 -0
  770. package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
  771. package/driver/aurora-mysql/AuroraMysqlDataSourceOptions.d.ts +1 -0
  772. package/driver/aurora-mysql/AuroraMysqlDataSourceOptions.js.map +1 -1
  773. package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +37 -0
  774. package/driver/aurora-mysql/AuroraMysqlDriver.js +53 -16
  775. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  776. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +64 -0
  777. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +90 -30
  778. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  779. package/driver/aurora-postgres/AuroraPostgresDriver.d.ts +13 -0
  780. package/driver/aurora-postgres/AuroraPostgresDriver.js +26 -5
  781. package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
  782. package/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +3 -0
  783. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +27 -1
  784. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  785. package/driver/better-sqlite3/BetterSqlite3DataSourceOptions.d.ts +1 -0
  786. package/driver/better-sqlite3/BetterSqlite3DataSourceOptions.js.map +1 -1
  787. package/driver/better-sqlite3/BetterSqlite3Driver.d.ts +3 -0
  788. package/driver/better-sqlite3/BetterSqlite3Driver.js +5 -3
  789. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  790. package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +1 -0
  791. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +1 -0
  792. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  793. package/driver/capacitor/CapacitorDriver.d.ts +1 -0
  794. package/driver/capacitor/CapacitorDriver.js +3 -3
  795. package/driver/capacitor/CapacitorDriver.js.map +1 -1
  796. package/driver/capacitor/CapacitorQueryRunner.d.ts +2 -0
  797. package/driver/capacitor/CapacitorQueryRunner.js +4 -2
  798. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  799. package/driver/cockroachdb/CockroachDataSourceOptions.d.ts +1 -0
  800. package/driver/cockroachdb/CockroachDataSourceOptions.js.map +1 -1
  801. package/driver/cockroachdb/CockroachDriver.d.ts +35 -0
  802. package/driver/cockroachdb/CockroachDriver.js +64 -29
  803. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  804. package/driver/cockroachdb/CockroachQueryRunner.d.ts +74 -0
  805. package/driver/cockroachdb/CockroachQueryRunner.js +143 -119
  806. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  807. package/driver/cordova/CordovaDriver.d.ts +6 -0
  808. package/driver/cordova/CordovaDriver.js +14 -4
  809. package/driver/cordova/CordovaDriver.js.map +1 -1
  810. package/driver/cordova/CordovaQueryRunner.d.ts +2 -0
  811. package/driver/cordova/CordovaQueryRunner.js +3 -1
  812. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  813. package/driver/expo/ExpoDriver.js +1 -2
  814. package/driver/expo/ExpoDriver.js.map +1 -1
  815. package/driver/mongodb/MongoDriver.d.ts +25 -0
  816. package/driver/mongodb/MongoDriver.js +35 -6
  817. package/driver/mongodb/MongoDriver.js.map +1 -1
  818. package/driver/mongodb/MongoQueryRunner.d.ts +84 -0
  819. package/driver/mongodb/MongoQueryRunner.js +102 -18
  820. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  821. package/driver/mongodb/bson.typings.d.ts +1 -0
  822. package/driver/mongodb/bson.typings.js.map +1 -1
  823. package/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +1 -0
  824. package/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
  825. package/driver/mysql/MysqlDataSourceOptions.d.ts +2 -0
  826. package/driver/mysql/MysqlDataSourceOptions.js.map +1 -1
  827. package/driver/mysql/MysqlDriver.d.ts +37 -0
  828. package/driver/mysql/MysqlDriver.js +57 -17
  829. package/driver/mysql/MysqlDriver.js.map +1 -1
  830. package/driver/mysql/MysqlQueryRunner.d.ts +64 -0
  831. package/driver/mysql/MysqlQueryRunner.js +140 -111
  832. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  833. package/driver/nativescript/NativescriptDriver.d.ts +1 -0
  834. package/driver/nativescript/NativescriptDriver.js +3 -4
  835. package/driver/nativescript/NativescriptDriver.js.map +1 -1
  836. package/driver/nativescript/NativescriptQueryRunner.d.ts +2 -0
  837. package/driver/nativescript/NativescriptQueryRunner.js +3 -1
  838. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  839. package/driver/oracle/OracleDriver.d.ts +32 -0
  840. package/driver/oracle/OracleDriver.js +48 -15
  841. package/driver/oracle/OracleDriver.js.map +1 -1
  842. package/driver/oracle/OracleQueryRunner.d.ts +66 -0
  843. package/driver/oracle/OracleQueryRunner.js +119 -83
  844. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  845. package/driver/postgres/PostgresDataSourceOptions.d.ts +2 -0
  846. package/driver/postgres/PostgresDataSourceOptions.js.map +1 -1
  847. package/driver/postgres/PostgresDriver.d.ts +37 -0
  848. package/driver/postgres/PostgresDriver.js +67 -31
  849. package/driver/postgres/PostgresDriver.js.map +1 -1
  850. package/driver/postgres/PostgresQueryRunner.d.ts +81 -0
  851. package/driver/postgres/PostgresQueryRunner.js +152 -121
  852. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  853. package/driver/react-native/ReactNativeDriver.d.ts +29 -0
  854. package/driver/react-native/ReactNativeDriver.js +45 -12
  855. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  856. package/driver/react-native/ReactNativeQueryRunner.d.ts +2 -0
  857. package/driver/react-native/ReactNativeQueryRunner.js +3 -1
  858. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  859. package/driver/sap/SapDataSourceOptions.d.ts +1 -0
  860. package/driver/sap/SapDataSourceOptions.js.map +1 -1
  861. package/driver/sap/SapDriver.d.ts +30 -0
  862. package/driver/sap/SapDriver.js +45 -11
  863. package/driver/sap/SapDriver.js.map +1 -1
  864. package/driver/sap/SapQueryRunner.d.ts +66 -0
  865. package/driver/sap/SapQueryRunner.js +101 -56
  866. package/driver/sap/SapQueryRunner.js.map +1 -1
  867. package/driver/spanner/SpannerDataSourceOptions.d.ts +1 -0
  868. package/driver/spanner/SpannerDataSourceOptions.js.map +1 -1
  869. package/driver/spanner/SpannerDriver.d.ts +33 -0
  870. package/driver/spanner/SpannerDriver.js +50 -10
  871. package/driver/spanner/SpannerDriver.js.map +1 -1
  872. package/driver/spanner/SpannerQueryRunner.d.ts +64 -0
  873. package/driver/spanner/SpannerQueryRunner.js +89 -32
  874. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  875. package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +30 -0
  876. package/driver/sqlite-abstract/AbstractSqliteDriver.js +43 -77
  877. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  878. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +59 -0
  879. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +89 -45
  880. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  881. package/driver/sqljs/SqljsDriver.d.ts +5 -0
  882. package/driver/sqljs/SqljsDriver.js +8 -4
  883. package/driver/sqljs/SqljsDriver.js.map +1 -1
  884. package/driver/sqljs/SqljsQueryRunner.d.ts +1 -0
  885. package/driver/sqljs/SqljsQueryRunner.js +1 -0
  886. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  887. package/driver/sqlserver/MssqlParameter.d.ts +1 -0
  888. package/driver/sqlserver/MssqlParameter.js +1 -0
  889. package/driver/sqlserver/MssqlParameter.js.map +1 -1
  890. package/driver/sqlserver/SqlServerDataSourceOptions.d.ts +14 -5
  891. package/driver/sqlserver/SqlServerDataSourceOptions.js.map +1 -1
  892. package/driver/sqlserver/SqlServerDriver.d.ts +42 -0
  893. package/driver/sqlserver/SqlServerDriver.js +100 -26
  894. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  895. package/driver/sqlserver/SqlServerQueryRunner.d.ts +76 -10
  896. package/driver/sqlserver/SqlServerQueryRunner.js +160 -163
  897. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  898. package/driver/types/IsolationLevel.d.ts +2 -1
  899. package/driver/types/IsolationLevel.js +8 -0
  900. package/driver/types/IsolationLevel.js.map +1 -1
  901. package/driver/validate-isolation-level.d.ts +9 -0
  902. package/driver/validate-isolation-level.js +23 -0
  903. package/driver/validate-isolation-level.js.map +1 -0
  904. package/entity-manager/EntityManager.d.ts +38 -1
  905. package/entity-manager/EntityManager.js +58 -12
  906. package/entity-manager/EntityManager.js.map +1 -1
  907. package/entity-manager/EntityManagerFactory.d.ts +1 -0
  908. package/entity-manager/EntityManagerFactory.js +1 -0
  909. package/entity-manager/EntityManagerFactory.js.map +1 -1
  910. package/entity-manager/MongoEntityManager.d.ts +54 -1
  911. package/entity-manager/MongoEntityManager.js +103 -12
  912. package/entity-manager/MongoEntityManager.js.map +1 -1
  913. package/entity-manager/SqljsEntityManager.d.ts +2 -0
  914. package/entity-manager/SqljsEntityManager.js +2 -0
  915. package/entity-manager/SqljsEntityManager.js.map +1 -1
  916. package/entity-schema/EntitySchemaColumnOptions.d.ts +1 -0
  917. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  918. package/entity-schema/EntitySchemaOptions.d.ts +1 -0
  919. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  920. package/entity-schema/EntitySchemaTransformer.d.ts +1 -0
  921. package/entity-schema/EntitySchemaTransformer.js +25 -26
  922. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  923. package/error/InitializedRelationError.d.ts +1 -0
  924. package/error/InitializedRelationError.js +1 -0
  925. package/error/InitializedRelationError.js.map +1 -1
  926. package/find-options/FindOptionsUtils.d.ts +7 -0
  927. package/find-options/FindOptionsUtils.js +7 -0
  928. package/find-options/FindOptionsUtils.js.map +1 -1
  929. package/find-options/OrderByCondition.d.ts +2 -1
  930. package/find-options/OrderByCondition.js.map +1 -1
  931. package/find-options/operator/Any.d.ts +4 -1
  932. package/find-options/operator/Any.js +4 -1
  933. package/find-options/operator/Any.js.map +1 -1
  934. package/find-options/operator/ArrayContainedBy.d.ts +4 -1
  935. package/find-options/operator/ArrayContainedBy.js +4 -1
  936. package/find-options/operator/ArrayContainedBy.js.map +1 -1
  937. package/find-options/operator/ArrayContains.d.ts +4 -1
  938. package/find-options/operator/ArrayContains.js +4 -1
  939. package/find-options/operator/ArrayContains.js.map +1 -1
  940. package/find-options/operator/ArrayOverlap.d.ts +4 -1
  941. package/find-options/operator/ArrayOverlap.js +4 -1
  942. package/find-options/operator/ArrayOverlap.js.map +1 -1
  943. package/find-options/operator/Between.d.ts +4 -1
  944. package/find-options/operator/Between.js +4 -1
  945. package/find-options/operator/Between.js.map +1 -1
  946. package/find-options/operator/Equal.d.ts +6 -3
  947. package/find-options/operator/Equal.js +6 -3
  948. package/find-options/operator/Equal.js.map +1 -1
  949. package/find-options/operator/ILike.d.ts +4 -1
  950. package/find-options/operator/ILike.js +4 -1
  951. package/find-options/operator/ILike.js.map +1 -1
  952. package/find-options/operator/In.d.ts +4 -1
  953. package/find-options/operator/In.js +4 -1
  954. package/find-options/operator/In.js.map +1 -1
  955. package/find-options/operator/IsNull.d.ts +4 -1
  956. package/find-options/operator/IsNull.js +4 -1
  957. package/find-options/operator/IsNull.js.map +1 -1
  958. package/find-options/operator/JsonContains.d.ts +4 -1
  959. package/find-options/operator/JsonContains.js +4 -1
  960. package/find-options/operator/JsonContains.js.map +1 -1
  961. package/find-options/operator/LessThan.d.ts +4 -1
  962. package/find-options/operator/LessThan.js +4 -1
  963. package/find-options/operator/LessThan.js.map +1 -1
  964. package/find-options/operator/LessThanOrEqual.d.ts +4 -1
  965. package/find-options/operator/LessThanOrEqual.js +4 -1
  966. package/find-options/operator/LessThanOrEqual.js.map +1 -1
  967. package/find-options/operator/Like.d.ts +4 -1
  968. package/find-options/operator/Like.js +4 -1
  969. package/find-options/operator/Like.js.map +1 -1
  970. package/find-options/operator/MoreThan.d.ts +4 -1
  971. package/find-options/operator/MoreThan.js +4 -1
  972. package/find-options/operator/MoreThan.js.map +1 -1
  973. package/find-options/operator/MoreThanOrEqual.d.ts +4 -1
  974. package/find-options/operator/MoreThanOrEqual.js +4 -1
  975. package/find-options/operator/MoreThanOrEqual.js.map +1 -1
  976. package/find-options/operator/Not.d.ts +4 -1
  977. package/find-options/operator/Not.js +4 -1
  978. package/find-options/operator/Not.js.map +1 -1
  979. package/find-options/operator/Raw.d.ts +12 -3
  980. package/find-options/operator/Raw.js.map +1 -1
  981. package/globals.js +1 -2
  982. package/globals.js.map +1 -1
  983. package/logger/AbstractLogger.d.ts +9 -0
  984. package/logger/AbstractLogger.js +10 -2
  985. package/logger/AbstractLogger.js.map +1 -1
  986. package/logger/AdvancedConsoleLogger.d.ts +1 -0
  987. package/logger/AdvancedConsoleLogger.js +1 -0
  988. package/logger/AdvancedConsoleLogger.js.map +1 -1
  989. package/logger/DebugLogger.d.ts +2 -0
  990. package/logger/DebugLogger.js +3 -1
  991. package/logger/DebugLogger.js.map +1 -1
  992. package/logger/FileLogger.d.ts +13 -2
  993. package/logger/FileLogger.js +4 -5
  994. package/logger/FileLogger.js.map +1 -1
  995. package/logger/FormattedConsoleLogger.d.ts +1 -0
  996. package/logger/FormattedConsoleLogger.js +1 -0
  997. package/logger/FormattedConsoleLogger.js.map +1 -1
  998. package/logger/LoggerFactory.d.ts +1 -0
  999. package/logger/LoggerFactory.js +1 -0
  1000. package/logger/LoggerFactory.js.map +1 -1
  1001. package/logger/LoggerOptions.d.ts +0 -9
  1002. package/logger/LoggerOptions.js.map +1 -1
  1003. package/logger/SimpleConsoleLogger.d.ts +1 -0
  1004. package/logger/SimpleConsoleLogger.js +1 -0
  1005. package/logger/SimpleConsoleLogger.js.map +1 -1
  1006. package/metadata/CheckMetadata.d.ts +1 -0
  1007. package/metadata/CheckMetadata.js +4 -3
  1008. package/metadata/CheckMetadata.js.map +1 -1
  1009. package/metadata/ColumnMetadata.d.ts +8 -5
  1010. package/metadata/ColumnMetadata.js +17 -25
  1011. package/metadata/ColumnMetadata.js.map +1 -1
  1012. package/metadata/EmbeddedMetadata.d.ts +1 -0
  1013. package/metadata/EmbeddedMetadata.js +1 -0
  1014. package/metadata/EmbeddedMetadata.js.map +1 -1
  1015. package/metadata/EntityListenerMetadata.d.ts +3 -0
  1016. package/metadata/EntityListenerMetadata.js +3 -0
  1017. package/metadata/EntityListenerMetadata.js.map +1 -1
  1018. package/metadata/EntityMetadata.d.ts +25 -5
  1019. package/metadata/EntityMetadata.js +32 -12
  1020. package/metadata/EntityMetadata.js.map +1 -1
  1021. package/metadata/ExclusionMetadata.d.ts +1 -0
  1022. package/metadata/ExclusionMetadata.js +4 -3
  1023. package/metadata/ExclusionMetadata.js.map +1 -1
  1024. package/metadata/ForeignKeyMetadata.d.ts +1 -0
  1025. package/metadata/ForeignKeyMetadata.js +6 -5
  1026. package/metadata/ForeignKeyMetadata.js.map +1 -1
  1027. package/metadata/IndexMetadata.d.ts +1 -0
  1028. package/metadata/IndexMetadata.js +4 -3
  1029. package/metadata/IndexMetadata.js.map +1 -1
  1030. package/metadata/RelationIdMetadata.d.ts +1 -0
  1031. package/metadata/RelationIdMetadata.js +1 -0
  1032. package/metadata/RelationIdMetadata.js.map +1 -1
  1033. package/metadata/RelationMetadata.d.ts +8 -0
  1034. package/metadata/RelationMetadata.js +15 -15
  1035. package/metadata/RelationMetadata.js.map +1 -1
  1036. package/metadata/UniqueMetadata.d.ts +1 -0
  1037. package/metadata/UniqueMetadata.js +4 -3
  1038. package/metadata/UniqueMetadata.js.map +1 -1
  1039. package/metadata-args/MetadataArgsStorage.d.ts +4 -0
  1040. package/metadata-args/MetadataArgsStorage.js +4 -0
  1041. package/metadata-args/MetadataArgsStorage.js.map +1 -1
  1042. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.d.ts +1 -0
  1043. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +7 -11
  1044. package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
  1045. package/metadata-builder/EntityMetadataBuilder.d.ts +7 -0
  1046. package/metadata-builder/EntityMetadataBuilder.js +11 -6
  1047. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  1048. package/metadata-builder/EntityMetadataValidator.d.ts +4 -0
  1049. package/metadata-builder/EntityMetadataValidator.js +6 -43
  1050. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  1051. package/metadata-builder/JunctionEntityMetadataBuilder.d.ts +3 -0
  1052. package/metadata-builder/JunctionEntityMetadataBuilder.js +39 -20
  1053. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  1054. package/metadata-builder/MetadataUtils.d.ts +3 -0
  1055. package/metadata-builder/MetadataUtils.js +4 -1
  1056. package/metadata-builder/MetadataUtils.js.map +1 -1
  1057. package/metadata-builder/RelationJoinColumnBuilder.d.ts +3 -0
  1058. package/metadata-builder/RelationJoinColumnBuilder.js +17 -1
  1059. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  1060. package/migration/MigrationExecutor.d.ts +9 -0
  1061. package/migration/MigrationExecutor.js +16 -7
  1062. package/migration/MigrationExecutor.js.map +1 -1
  1063. package/naming-strategy/DefaultNamingStrategy.d.ts +3 -0
  1064. package/naming-strategy/DefaultNamingStrategy.js +13 -10
  1065. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  1066. package/naming-strategy/NamingStrategyInterface.d.ts +2 -0
  1067. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  1068. package/package.json +6 -2
  1069. package/persistence/EntityPersistExecutor.js +2 -4
  1070. package/persistence/EntityPersistExecutor.js.map +1 -1
  1071. package/persistence/Subject.js +4 -6
  1072. package/persistence/Subject.js.map +1 -1
  1073. package/persistence/SubjectChangedColumnsComputer.d.ts +3 -0
  1074. package/persistence/SubjectChangedColumnsComputer.js +3 -0
  1075. package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
  1076. package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -0
  1077. package/persistence/SubjectDatabaseEntityLoader.js +3 -1
  1078. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  1079. package/persistence/SubjectExecutor.d.ts +2 -0
  1080. package/persistence/SubjectExecutor.js +15 -27
  1081. package/persistence/SubjectExecutor.js.map +1 -1
  1082. package/persistence/SubjectTopologicalSorter.d.ts +4 -0
  1083. package/persistence/SubjectTopologicalSorter.js +4 -0
  1084. package/persistence/SubjectTopologicalSorter.js.map +1 -1
  1085. package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +2 -0
  1086. package/persistence/subject-builder/CascadesSubjectBuilder.js +37 -11
  1087. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  1088. package/persistence/subject-builder/ManyToManySubjectBuilder.d.ts +11 -8
  1089. package/persistence/subject-builder/ManyToManySubjectBuilder.js +15 -13
  1090. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  1091. package/persistence/subject-builder/OneToManySubjectBuilder.d.ts +9 -10
  1092. package/persistence/subject-builder/OneToManySubjectBuilder.js +30 -24
  1093. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  1094. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.d.ts +9 -10
  1095. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +9 -10
  1096. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  1097. package/persistence/tree/ClosureSubjectExecutor.d.ts +4 -0
  1098. package/persistence/tree/ClosureSubjectExecutor.js +10 -8
  1099. package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
  1100. package/persistence/tree/MaterializedPathSubjectExecutor.d.ts +2 -0
  1101. package/persistence/tree/MaterializedPathSubjectExecutor.js +8 -6
  1102. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  1103. package/persistence/tree/NestedSetSubjectExecutor.d.ts +5 -0
  1104. package/persistence/tree/NestedSetSubjectExecutor.js +10 -5
  1105. package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
  1106. package/platform/PlatformTools.d.ts +9 -0
  1107. package/platform/PlatformTools.js +10 -1
  1108. package/platform/PlatformTools.js.map +1 -1
  1109. package/query-builder/Alias.js +1 -1
  1110. package/query-builder/Alias.js.map +1 -1
  1111. package/query-builder/Brackets.d.ts +1 -0
  1112. package/query-builder/Brackets.js +1 -0
  1113. package/query-builder/Brackets.js.map +1 -1
  1114. package/query-builder/DeleteQueryBuilder.d.ts +7 -0
  1115. package/query-builder/DeleteQueryBuilder.js +9 -0
  1116. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  1117. package/query-builder/InsertQueryBuilder.d.ts +9 -0
  1118. package/query-builder/InsertQueryBuilder.js +14 -8
  1119. package/query-builder/InsertQueryBuilder.js.map +1 -1
  1120. package/query-builder/JoinAttribute.js +3 -3
  1121. package/query-builder/JoinAttribute.js.map +1 -1
  1122. package/query-builder/QueryBuilder.d.ts +25 -4
  1123. package/query-builder/QueryBuilder.js +58 -15
  1124. package/query-builder/QueryBuilder.js.map +1 -1
  1125. package/query-builder/QueryBuilderUtils.d.ts +1 -0
  1126. package/query-builder/QueryBuilderUtils.js +1 -0
  1127. package/query-builder/QueryBuilderUtils.js.map +1 -1
  1128. package/query-builder/QueryExpressionMap.d.ts +5 -0
  1129. package/query-builder/QueryExpressionMap.js +4 -1
  1130. package/query-builder/QueryExpressionMap.js.map +1 -1
  1131. package/query-builder/RelationIdLoader.d.ts +6 -35
  1132. package/query-builder/RelationIdLoader.js +19 -43
  1133. package/query-builder/RelationIdLoader.js.map +1 -1
  1134. package/query-builder/RelationLoader.d.ts +11 -2
  1135. package/query-builder/RelationLoader.js +20 -17
  1136. package/query-builder/RelationLoader.js.map +1 -1
  1137. package/query-builder/RelationQueryBuilder.d.ts +5 -0
  1138. package/query-builder/RelationQueryBuilder.js +5 -0
  1139. package/query-builder/RelationQueryBuilder.js.map +1 -1
  1140. package/query-builder/RelationRemover.d.ts +1 -0
  1141. package/query-builder/RelationRemover.js +1 -0
  1142. package/query-builder/RelationRemover.js.map +1 -1
  1143. package/query-builder/RelationUpdater.d.ts +1 -0
  1144. package/query-builder/RelationUpdater.js +1 -0
  1145. package/query-builder/RelationUpdater.js.map +1 -1
  1146. package/query-builder/ReturningResultsEntityUpdator.d.ts +2 -0
  1147. package/query-builder/ReturningResultsEntityUpdator.js +3 -1
  1148. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  1149. package/query-builder/SelectQueryBuilder.d.ts +31 -8
  1150. package/query-builder/SelectQueryBuilder.js +98 -70
  1151. package/query-builder/SelectQueryBuilder.js.map +1 -1
  1152. package/query-builder/SoftDeleteQueryBuilder.d.ts +11 -0
  1153. package/query-builder/SoftDeleteQueryBuilder.js +17 -0
  1154. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  1155. package/query-builder/UpdateQueryBuilder.d.ts +11 -0
  1156. package/query-builder/UpdateQueryBuilder.js +18 -1
  1157. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  1158. package/query-builder/relation-id/RelationIdAttribute.js +5 -5
  1159. package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
  1160. package/query-builder/relation-id/RelationIdLoader.d.ts +2 -1
  1161. package/query-builder/relation-id/RelationIdLoader.js +6 -3
  1162. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  1163. package/query-builder/transformer/DocumentToEntityTransformer.js +3 -16
  1164. package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
  1165. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +2 -4
  1166. package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
  1167. package/query-builder/transformer/PlainObjectToNewEntityTransformer.d.ts +1 -0
  1168. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js +1 -0
  1169. package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
  1170. package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +6 -0
  1171. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -7
  1172. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  1173. package/query-runner/BaseQueryRunner.d.ts +21 -1
  1174. package/query-runner/BaseQueryRunner.js +36 -49
  1175. package/query-runner/BaseQueryRunner.js.map +1 -1
  1176. package/query-runner/QueryRunner.d.ts +5 -1
  1177. package/query-runner/QueryRunner.js.map +1 -1
  1178. package/repository/BaseEntity.d.ts +32 -0
  1179. package/repository/BaseEntity.js +36 -0
  1180. package/repository/BaseEntity.js.map +1 -1
  1181. package/repository/MongoRepository.d.ts +39 -0
  1182. package/repository/MongoRepository.js +41 -2
  1183. package/repository/MongoRepository.js.map +1 -1
  1184. package/repository/Repository.d.ts +37 -1
  1185. package/repository/Repository.js +43 -2
  1186. package/repository/Repository.js.map +1 -1
  1187. package/repository/TreeRepository.d.ts +11 -0
  1188. package/repository/TreeRepository.js +12 -1
  1189. package/repository/TreeRepository.js.map +1 -1
  1190. package/schema-builder/RdbmsSchemaBuilder.d.ts +6 -4
  1191. package/schema-builder/RdbmsSchemaBuilder.js +10 -13
  1192. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  1193. package/schema-builder/table/Table.d.ts +17 -0
  1194. package/schema-builder/table/Table.js +19 -2
  1195. package/schema-builder/table/Table.js.map +1 -1
  1196. package/schema-builder/table/TableCheck.d.ts +1 -0
  1197. package/schema-builder/table/TableCheck.js +1 -0
  1198. package/schema-builder/table/TableCheck.js.map +1 -1
  1199. package/schema-builder/table/TableColumn.js +7 -7
  1200. package/schema-builder/table/TableColumn.js.map +1 -1
  1201. package/schema-builder/table/TableExclusion.d.ts +1 -0
  1202. package/schema-builder/table/TableExclusion.js +1 -0
  1203. package/schema-builder/table/TableExclusion.js.map +1 -1
  1204. package/schema-builder/table/TableForeignKey.d.ts +1 -0
  1205. package/schema-builder/table/TableForeignKey.js +1 -0
  1206. package/schema-builder/table/TableForeignKey.js.map +1 -1
  1207. package/schema-builder/table/TableIndex.d.ts +1 -0
  1208. package/schema-builder/table/TableIndex.js +2 -1
  1209. package/schema-builder/table/TableIndex.js.map +1 -1
  1210. package/schema-builder/table/TableUnique.d.ts +1 -0
  1211. package/schema-builder/table/TableUnique.js +1 -0
  1212. package/schema-builder/table/TableUnique.js.map +1 -1
  1213. package/schema-builder/util/ViewUtils.d.ts +1 -0
  1214. package/schema-builder/util/ViewUtils.js +1 -0
  1215. package/schema-builder/util/ViewUtils.js.map +1 -1
  1216. package/schema-builder/view/View.d.ts +3 -0
  1217. package/schema-builder/view/View.js +3 -0
  1218. package/schema-builder/view/View.js.map +1 -1
  1219. package/subscriber/Broadcaster.d.ts +20 -0
  1220. package/subscriber/Broadcaster.js +25 -6
  1221. package/subscriber/Broadcaster.js.map +1 -1
  1222. package/subscriber/event/BaseEvent.d.ts +1 -0
  1223. package/subscriber/event/BaseEvent.js.map +1 -1
  1224. package/util/DateUtils.d.ts +15 -0
  1225. package/util/DateUtils.js +15 -0
  1226. package/util/DateUtils.js.map +1 -1
  1227. package/util/DepGraph.d.ts +10 -0
  1228. package/util/DepGraph.js +11 -0
  1229. package/util/DepGraph.js.map +1 -1
  1230. package/util/DirectoryExportedClassesLoader.d.ts +1 -0
  1231. package/util/DirectoryExportedClassesLoader.js +1 -0
  1232. package/util/DirectoryExportedClassesLoader.js.map +1 -1
  1233. package/util/ObjectUtils.d.ts +6 -0
  1234. package/util/ObjectUtils.js +4 -0
  1235. package/util/ObjectUtils.js.map +1 -1
  1236. package/util/OrmUtils.d.ts +14 -0
  1237. package/util/OrmUtils.js +18 -6
  1238. package/util/OrmUtils.js.map +1 -1
  1239. package/util/PathUtils.d.ts +2 -0
  1240. package/util/PathUtils.js +2 -0
  1241. package/util/PathUtils.js.map +1 -1
  1242. package/util/RandomGenerator.d.ts +2 -0
  1243. package/util/RandomGenerator.js +2 -0
  1244. package/util/RandomGenerator.js.map +1 -1
  1245. package/util/StringUtils.d.ts +11 -4
  1246. package/util/StringUtils.js +15 -7
  1247. package/util/StringUtils.js.map +1 -1
  1248. package/util/TreeRepositoryUtils.js +2 -2
  1249. package/util/TreeRepositoryUtils.js.map +1 -1
@@ -6,18 +6,16 @@ const OrmUtils_1 = require("../../util/OrmUtils");
6
6
  /**
7
7
  * Builds operations needs to be executed for one-to-one non-owner relations of the given subjects.
8
8
  *
9
- * Example:
10
- *
11
- * `Post` contains one-to-one non-owner relation with `Category` in the property called `category`, e.g.:
12
- *
13
- * `@OneToOne(type => Category, category => category.post) category: Category`
14
- *
15
- * If user sets a category into the post and saves post we need to bind them.
16
- * This operation requires updating the category table since it's the owner of
17
- * the relation and contains a join column.
18
- *
19
9
  * Note: this class shares lot of things with `OneToManyUpdateBuilder`, so when
20
10
  * you change this class make sure to reflect changes there as well.
11
+ *
12
+ * @example
13
+ * // Post contains one-to-one non-owner relation with Category in the property called "category".
14
+ * // If user sets a category into the post and saves post we need to bind them.
15
+ * // This operation requires updating the category table since it's the owner of
16
+ * // the relation and contains a join column.
17
+ * \@OneToOne(type => Category, category => category.post) category: Category
18
+ *
21
19
  */
22
20
  class OneToOneInverseSideSubjectBuilder {
23
21
  // ---------------------------------------------------------------------
@@ -50,6 +48,7 @@ class OneToOneInverseSideSubjectBuilder {
50
48
  * Builds operations for a given subject and relation.
51
49
  *
52
50
  * by example: subject is "post" entity we are saving here and relation is "category" inside it here.
51
+ *
53
52
  * @param subject
54
53
  * @param relation
55
54
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OneToOneInverseSideSubjectBuilder.js","sourceRoot":"../build/browser/src/","sources":["persistence/subject-builder/OneToOneInverseSideSubjectBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { Subject } from \"../Subject\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport type { RelationMetadata } from \"../../metadata/RelationMetadata\"\n\n/**\n * Builds operations needs to be executed for one-to-one non-owner relations of the given subjects.\n *\n * Example:\n *\n * `Post` contains one-to-one non-owner relation with `Category` in the property called `category`, e.g.:\n *\n * `@OneToOne(type => Category, category => category.post) category: Category`\n *\n * If user sets a category into the post and saves post we need to bind them.\n * This operation requires updating the category table since it's the owner of\n * the relation and contains a join column.\n *\n * Note: this class shares lot of things with `OneToManyUpdateBuilder`, so when\n * you change this class make sure to reflect changes there as well.\n */\nexport class OneToOneInverseSideSubjectBuilder {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n\n constructor(protected subjects: Subject[]) {}\n\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n\n /**\n * Builds all required operations.\n */\n build(): void {\n this.subjects.forEach((subject) => {\n subject.metadata.oneToOneRelations.forEach((relation) => {\n // we don't need owning relations, this operation is only for inverse side of one-to-one relations\n // skip relations for which persistence is disabled\n if (relation.isOwning || relation.persistenceEnabled === false)\n return\n\n this.buildForSubjectRelation(subject, relation)\n })\n })\n }\n\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n\n /**\n * Builds operations for a given subject and relation.\n *\n * by example: subject is \"post\" entity we are saving here and relation is \"category\" inside it here.\n * @param subject\n * @param relation\n */\n protected buildForSubjectRelation(\n subject: Subject,\n relation: RelationMetadata,\n ) {\n // prepare objects (relation id map) for the database entity\n // note: subject.databaseEntity contains relation with loaded relation id only (id map)\n // by example: since subject is a post, we are expecting to get post's category saved in the database here,\n // particularly its relation id, e.g. category id stored in the database\n let relatedEntityDatabaseRelationId: ObjectLiteral | undefined =\n undefined\n if (subject.databaseEntity)\n // related entity in the database can exist only if this entity (post) is saved\n relatedEntityDatabaseRelationId = relation.getEntityValue(\n subject.databaseEntity,\n )\n\n // get related entities of persisted entity\n // by example: get category from the passed to persist post entity\n const relatedEntity: ObjectLiteral | null = relation.getEntityValue(\n subject.entity!,\n ) // by example: relatedEntity is a category here\n if (relatedEntity === undefined)\n // if relation is undefined then nothing to update\n return\n\n // if related entity is null then we need to check if there a bind in the database and unset it\n // if there is no bind in the entity then we don't need to do anything\n // by example: if post.category = null and category has this post in the database then we unset it\n if (relatedEntity === null) {\n // it makes sense to update database only there is a previously set value in the database\n if (relatedEntityDatabaseRelationId) {\n // todo: probably we can improve this in the future by finding entity with column those values,\n // todo: maybe it was already in persistence process. This is possible due to unique requirements of join columns\n // we create a new subject which operations will be executed in subject operation executor\n\n const removedRelatedEntitySubject = new Subject({\n metadata: relation.inverseEntityMetadata,\n parentSubject: subject,\n canBeUpdated: true,\n identifier: relatedEntityDatabaseRelationId,\n changeMaps: [\n {\n relation: relation.inverseRelation!,\n value: null,\n },\n ],\n })\n this.subjects.push(removedRelatedEntitySubject)\n }\n\n return\n } // else means entity is bind in the database\n\n // extract only relation id from the related entities, since we only need it for comparison\n // by example: extract from category only relation id (category id, or let's say category title, depend on join column options)\n let relationIdMap =\n relation.inverseEntityMetadata!.getEntityIdMap(relatedEntity) // by example: relationIdMap is category.id map here, e.g. { id: ... }\n\n // try to find a subject of this related entity, maybe it was loaded or was marked for persistence\n let relatedEntitySubject = this.subjects.find((operateSubject) => {\n return (\n !!operateSubject.entity &&\n operateSubject.entity === relatedEntity\n )\n })\n\n // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved\n if (relatedEntitySubject)\n relationIdMap = relatedEntitySubject.identifier\n\n // if relationIdMap is undefined then it means user binds object which is not saved in the database yet\n // by example: if post contains category which does not have id(s) yet (because its a new category)\n // it means its always newly inserted and relation update operation always must be created for it\n // it does not make sense to perform difference operation for it for both add and remove actions\n if (!relationIdMap) {\n // we decided to remove this error because it brings complications when saving object with non-saved entities\n // if related entity does not have a subject then it means user tries to bind entity which wasn't saved\n // in this persistence because he didn't pass this entity for save or he did not set cascades\n // but without entity being inserted we cannot bind it in the relation operation, so we throw an exception here\n // if (!relatedEntitySubject)\n // throw new TypeORMError(`One-to-one inverse relation \"${relation.entityMetadata.name}.${relation.propertyPath}\" contains ` +\n // `entity which does not exist in the database yet, thus cannot be bind in the database. ` +\n // `Please setup cascade insertion or save entity before binding it.`);\n if (!relatedEntitySubject) return\n\n // okay, so related subject exist and its marked for insertion, then add a new change map\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is OneToOne owner relation inside Category\n // subject is Post needs to be inserted into Category\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation!,\n value: subject,\n })\n }\n\n // check if this binding really exist in the database\n // by example: find our post if its already bind to category in the database and its not equal to what user tries to set\n const areRelatedIdEqualWithDatabase =\n relatedEntityDatabaseRelationId &&\n OrmUtils.compareIds(relationIdMap, relatedEntityDatabaseRelationId)\n\n // if they aren't equal it means its a new relation and we need to \"bind\" them\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is ManyToOne relation inside Category\n // subject is Post needs to be inserted into Category\n if (!areRelatedIdEqualWithDatabase) {\n // if there is no relatedEntitySubject then it means \"category\" wasn't persisted,\n // but since we are going to update \"category\" table (since its an owning side of relation with join column)\n // we create a new subject here:\n if (!relatedEntitySubject) {\n relatedEntitySubject = new Subject({\n metadata: relation.inverseEntityMetadata,\n canBeUpdated: true,\n identifier: relationIdMap,\n })\n this.subjects.push(relatedEntitySubject)\n }\n\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation!,\n value: subject,\n })\n }\n }\n}\n"]}
1
+ {"version":3,"file":"OneToOneInverseSideSubjectBuilder.js","sourceRoot":"../build/browser/src/","sources":["persistence/subject-builder/OneToOneInverseSideSubjectBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { Subject } from \"../Subject\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport type { RelationMetadata } from \"../../metadata/RelationMetadata\"\n\n/**\n * Builds operations needs to be executed for one-to-one non-owner relations of the given subjects.\n *\n * Note: this class shares lot of things with `OneToManyUpdateBuilder`, so when\n * you change this class make sure to reflect changes there as well.\n *\n * @example\n * // Post contains one-to-one non-owner relation with Category in the property called \"category\".\n * // If user sets a category into the post and saves post we need to bind them.\n * // This operation requires updating the category table since it's the owner of\n * // the relation and contains a join column.\n * \\@OneToOne(type => Category, category => category.post) category: Category\n *\n */\nexport class OneToOneInverseSideSubjectBuilder {\n // ---------------------------------------------------------------------\n // Constructor\n // ---------------------------------------------------------------------\n\n constructor(protected subjects: Subject[]) {}\n\n // ---------------------------------------------------------------------\n // Public Methods\n // ---------------------------------------------------------------------\n\n /**\n * Builds all required operations.\n */\n build(): void {\n this.subjects.forEach((subject) => {\n subject.metadata.oneToOneRelations.forEach((relation) => {\n // we don't need owning relations, this operation is only for inverse side of one-to-one relations\n // skip relations for which persistence is disabled\n if (relation.isOwning || relation.persistenceEnabled === false)\n return\n\n this.buildForSubjectRelation(subject, relation)\n })\n })\n }\n\n // ---------------------------------------------------------------------\n // Protected Methods\n // ---------------------------------------------------------------------\n\n /**\n * Builds operations for a given subject and relation.\n *\n * by example: subject is \"post\" entity we are saving here and relation is \"category\" inside it here.\n *\n * @param subject\n * @param relation\n */\n protected buildForSubjectRelation(\n subject: Subject,\n relation: RelationMetadata,\n ) {\n // prepare objects (relation id map) for the database entity\n // note: subject.databaseEntity contains relation with loaded relation id only (id map)\n // by example: since subject is a post, we are expecting to get post's category saved in the database here,\n // particularly its relation id, e.g. category id stored in the database\n let relatedEntityDatabaseRelationId: ObjectLiteral | undefined =\n undefined\n if (subject.databaseEntity)\n // related entity in the database can exist only if this entity (post) is saved\n relatedEntityDatabaseRelationId = relation.getEntityValue(\n subject.databaseEntity,\n )\n\n // get related entities of persisted entity\n // by example: get category from the passed to persist post entity\n const relatedEntity: ObjectLiteral | null = relation.getEntityValue(\n subject.entity!,\n ) // by example: relatedEntity is a category here\n if (relatedEntity === undefined)\n // if relation is undefined then nothing to update\n return\n\n // if related entity is null then we need to check if there a bind in the database and unset it\n // if there is no bind in the entity then we don't need to do anything\n // by example: if post.category = null and category has this post in the database then we unset it\n if (relatedEntity === null) {\n // it makes sense to update database only there is a previously set value in the database\n if (relatedEntityDatabaseRelationId) {\n // todo: probably we can improve this in the future by finding entity with column those values,\n // todo: maybe it was already in persistence process. This is possible due to unique requirements of join columns\n // we create a new subject which operations will be executed in subject operation executor\n\n const removedRelatedEntitySubject = new Subject({\n metadata: relation.inverseEntityMetadata,\n parentSubject: subject,\n canBeUpdated: true,\n identifier: relatedEntityDatabaseRelationId,\n changeMaps: [\n {\n relation: relation.inverseRelation!,\n value: null,\n },\n ],\n })\n this.subjects.push(removedRelatedEntitySubject)\n }\n\n return\n } // else means entity is bind in the database\n\n // extract only relation id from the related entities, since we only need it for comparison\n // by example: extract from category only relation id (category id, or let's say category title, depend on join column options)\n let relationIdMap =\n relation.inverseEntityMetadata!.getEntityIdMap(relatedEntity) // by example: relationIdMap is category.id map here, e.g. { id: ... }\n\n // try to find a subject of this related entity, maybe it was loaded or was marked for persistence\n let relatedEntitySubject = this.subjects.find((operateSubject) => {\n return (\n !!operateSubject.entity &&\n operateSubject.entity === relatedEntity\n )\n })\n\n // if subject with entity was found take subject identifier as relation id map since it may contain extra properties resolved\n if (relatedEntitySubject)\n relationIdMap = relatedEntitySubject.identifier\n\n // if relationIdMap is undefined then it means user binds object which is not saved in the database yet\n // by example: if post contains category which does not have id(s) yet (because its a new category)\n // it means its always newly inserted and relation update operation always must be created for it\n // it does not make sense to perform difference operation for it for both add and remove actions\n if (!relationIdMap) {\n // we decided to remove this error because it brings complications when saving object with non-saved entities\n // if related entity does not have a subject then it means user tries to bind entity which wasn't saved\n // in this persistence because he didn't pass this entity for save or he did not set cascades\n // but without entity being inserted we cannot bind it in the relation operation, so we throw an exception here\n // if (!relatedEntitySubject)\n // throw new TypeORMError(`One-to-one inverse relation \"${relation.entityMetadata.name}.${relation.propertyPath}\" contains ` +\n // `entity which does not exist in the database yet, thus cannot be bind in the database. ` +\n // `Please setup cascade insertion or save entity before binding it.`);\n if (!relatedEntitySubject) return\n\n // okay, so related subject exist and its marked for insertion, then add a new change map\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is OneToOne owner relation inside Category\n // subject is Post needs to be inserted into Category\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation!,\n value: subject,\n })\n }\n\n // check if this binding really exist in the database\n // by example: find our post if its already bind to category in the database and its not equal to what user tries to set\n const areRelatedIdEqualWithDatabase =\n relatedEntityDatabaseRelationId &&\n OrmUtils.compareIds(relationIdMap, relatedEntityDatabaseRelationId)\n\n // if they aren't equal it means its a new relation and we need to \"bind\" them\n // by example: this will tell category to insert into its post relation our post we are working with\n // relatedEntitySubject is newly inserted CategorySubject\n // relation.inverseRelation is ManyToOne relation inside Category\n // subject is Post needs to be inserted into Category\n if (!areRelatedIdEqualWithDatabase) {\n // if there is no relatedEntitySubject then it means \"category\" wasn't persisted,\n // but since we are going to update \"category\" table (since its an owning side of relation with join column)\n // we create a new subject here:\n if (!relatedEntitySubject) {\n relatedEntitySubject = new Subject({\n metadata: relation.inverseEntityMetadata,\n canBeUpdated: true,\n identifier: relationIdMap,\n })\n this.subjects.push(relatedEntitySubject)\n }\n\n relatedEntitySubject.changeMaps.push({\n relation: relation.inverseRelation!,\n value: subject,\n })\n }\n }\n}\n"]}
@@ -8,22 +8,26 @@ export declare class ClosureSubjectExecutor {
8
8
  constructor(queryRunner: QueryRunner);
9
9
  /**
10
10
  * Executes operations when subject is being inserted.
11
+ *
11
12
  * @param subject
12
13
  */
13
14
  insert(subject: Subject): Promise<void>;
14
15
  /**
15
16
  * Executes operations when subject is being updated.
17
+ *
16
18
  * @param subject
17
19
  */
18
20
  update(subject: Subject): Promise<void>;
19
21
  /**
20
22
  * Executes operations when subject is being removed.
23
+ *
21
24
  * @param subjects
22
25
  */
23
26
  remove(subjects: Subject | Subject[]): Promise<void>;
24
27
  /**
25
28
  * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom
26
29
  * schema name, otherwise returns escaped table name.
30
+ *
27
31
  * @param tablePath
28
32
  */
29
33
  protected getTableName(tablePath: string): string;
@@ -18,6 +18,7 @@ class ClosureSubjectExecutor {
18
18
  // -------------------------------------------------------------------------
19
19
  /**
20
20
  * Executes operations when subject is being inserted.
21
+ *
21
22
  * @param subject
22
23
  */
23
24
  async insert(subject) {
@@ -41,11 +42,11 @@ class ClosureSubjectExecutor {
41
42
  .callListeners(false)
42
43
  .execute();
43
44
  let parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity); // if entity was attached via parent
44
- if (!parent && subject.parentSubject && subject.parentSubject.entity)
45
+ if (!parent && subject.parentSubject?.entity)
45
46
  // if entity was attached via children
46
- parent = subject.parentSubject.insertedValueSet
47
- ? subject.parentSubject.insertedValueSet
48
- : subject.parentSubject.entity;
47
+ parent =
48
+ subject.parentSubject.insertedValueSet ??
49
+ subject.parentSubject.entity;
49
50
  if (parent) {
50
51
  const escape = (alias) => this.queryRunner.dataSource.driver.escape(alias);
51
52
  const tableName = this.getTableName(subject.metadata.closureJunctionTable.tablePath);
@@ -57,9 +58,7 @@ class ClosureSubjectExecutor {
57
58
  return escape(column.databaseName);
58
59
  });
59
60
  const childEntityIds1 = subject.metadata.primaryColumns.map((column) => {
60
- queryParams.push(column.getEntityValue(subject.insertedValueSet
61
- ? subject.insertedValueSet
62
- : subject.entity));
61
+ queryParams.push(column.getEntityValue(subject.insertedValueSet ?? subject.entity));
63
62
  return this.queryRunner.dataSource.driver.createParameter("child_entity_" + column.databaseName, queryParams.length - 1);
64
63
  });
65
64
  const whereCondition = subject.metadata.closureJunctionTable.descendantColumns.map((column) => {
@@ -81,11 +80,12 @@ class ClosureSubjectExecutor {
81
80
  }
82
81
  /**
83
82
  * Executes operations when subject is being updated.
83
+ *
84
84
  * @param subject
85
85
  */
86
86
  async update(subject) {
87
87
  let parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity); // if entity was attached via parent
88
- if (!parent && subject.parentSubject && subject.parentSubject.entity)
88
+ if (!parent && subject.parentSubject?.entity)
89
89
  // if entity was attached via children
90
90
  parent = subject.parentSubject.entity;
91
91
  let entity = subject.databaseEntity; // if entity was attached via parent
@@ -193,6 +193,7 @@ class ClosureSubjectExecutor {
193
193
  }
194
194
  /**
195
195
  * Executes operations when subject is being removed.
196
+ *
196
197
  * @param subjects
197
198
  */
198
199
  async remove(subjects) {
@@ -226,6 +227,7 @@ class ClosureSubjectExecutor {
226
227
  /**
227
228
  * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom
228
229
  * schema name, otherwise returns escaped table name.
230
+ *
229
231
  * @param tablePath
230
232
  */
231
233
  getTableName(tablePath) {
@@ -1 +1 @@
1
- {"version":3,"file":"ClosureSubjectExecutor.js","sourceRoot":"../build/browser/src/","sources":["persistence/tree/ClosureSubjectExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Subject } from \"../Subject\"\nimport type { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { CannotAttachTreeChildrenEntityError } from \"../../error/CannotAttachTreeChildrenEntityError\"\nimport type { DeleteQueryBuilder } from \"../../query-builder/DeleteQueryBuilder\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport type { ColumnMetadata } from \"../../metadata/ColumnMetadata\"\n\n/**\n * Executes subject operations for closure entities.\n */\nexport class ClosureSubjectExecutor {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected queryRunner: QueryRunner) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes operations when subject is being inserted.\n * @param subject\n */\n async insert(subject: Subject): Promise<void> {\n // create values to be inserted into the closure junction\n const closureJunctionInsertMap: ObjectLiteral = {}\n subject.metadata.closureJunctionTable.ancestorColumns.forEach(\n (column) => {\n closureJunctionInsertMap[column.databaseName] =\n subject.identifier\n },\n )\n subject.metadata.closureJunctionTable.descendantColumns.forEach(\n (column) => {\n closureJunctionInsertMap[column.databaseName] =\n subject.identifier\n },\n )\n\n // insert values into the closure junction table\n await this.queryRunner.manager\n .createQueryBuilder()\n .insert()\n .into(subject.metadata.closureJunctionTable.tablePath)\n .values(closureJunctionInsertMap)\n .updateEntity(false)\n .callListeners(false)\n .execute()\n\n let parent = subject.metadata.treeParentRelation!.getEntityValue(\n subject.entity!,\n ) // if entity was attached via parent\n if (!parent && subject.parentSubject && subject.parentSubject.entity)\n // if entity was attached via children\n parent = subject.parentSubject.insertedValueSet\n ? subject.parentSubject.insertedValueSet\n : subject.parentSubject.entity\n\n if (parent) {\n const escape = (alias: string) =>\n this.queryRunner.dataSource.driver.escape(alias)\n const tableName = this.getTableName(\n subject.metadata.closureJunctionTable.tablePath,\n )\n const queryParams: any[] = []\n\n const ancestorColumnNames =\n subject.metadata.closureJunctionTable.ancestorColumns.map(\n (column) => {\n return escape(column.databaseName)\n },\n )\n const descendantColumnNames =\n subject.metadata.closureJunctionTable.descendantColumns.map(\n (column) => {\n return escape(column.databaseName)\n },\n )\n const childEntityIds1 = subject.metadata.primaryColumns.map(\n (column) => {\n queryParams.push(\n column.getEntityValue(\n subject.insertedValueSet\n ? subject.insertedValueSet\n : subject.entity!,\n ),\n )\n return this.queryRunner.dataSource.driver.createParameter(\n \"child_entity_\" + column.databaseName,\n queryParams.length - 1,\n )\n },\n )\n\n const whereCondition =\n subject.metadata.closureJunctionTable.descendantColumns.map(\n (column) => {\n const columnName = escape(column.databaseName)\n const parentId =\n column.referencedColumn!.getEntityValue(parent)\n\n if (!parentId)\n throw new CannotAttachTreeChildrenEntityError(\n subject.metadata.name,\n )\n\n queryParams.push(parentId)\n const parameterName =\n this.queryRunner.dataSource.driver.createParameter(\n \"parent_entity_\" +\n column.referencedColumn!.databaseName,\n queryParams.length - 1,\n )\n return `${columnName} = ${parameterName}`\n },\n )\n\n await this.queryRunner.query(\n `INSERT INTO ${tableName} (${[\n ...ancestorColumnNames,\n ...descendantColumnNames,\n ].join(\", \")}) ` +\n `SELECT ${ancestorColumnNames.join(\n \", \",\n )}, ${childEntityIds1.join(\n \", \",\n )} FROM ${tableName} WHERE ${whereCondition.join(\" AND \")}`,\n queryParams,\n )\n }\n }\n\n /**\n * Executes operations when subject is being updated.\n * @param subject\n */\n async update(subject: Subject): Promise<void> {\n let parent = subject.metadata.treeParentRelation!.getEntityValue(\n subject.entity!,\n ) // if entity was attached via parent\n if (!parent && subject.parentSubject && subject.parentSubject.entity)\n // if entity was attached via children\n parent = subject.parentSubject.entity\n\n let entity = subject.databaseEntity // if entity was attached via parent\n if (!entity && parent)\n // if entity was attached via children\n entity = subject.metadata\n .treeChildrenRelation!.getEntityValue(parent)\n .find((child: any) => {\n return Object.entries(subject.identifier!).every(\n ([key, value]) => child[key] === value,\n )\n })\n\n // Exit if the parent or the entity where never set\n if (entity === undefined || parent === undefined) {\n return\n }\n\n const oldParent = subject.metadata.treeParentRelation!.getEntityValue(\n entity!,\n )\n const oldParentId = subject.metadata.getEntityIdMap(oldParent)\n const parentId = subject.metadata.getEntityIdMap(parent)\n\n // Exit if the new and old parents are the same\n if (OrmUtils.compareIds(oldParentId, parentId)) {\n return\n }\n\n const escape = (alias: string) =>\n this.queryRunner.dataSource.driver.escape(alias)\n const closureTable = subject.metadata.closureJunctionTable\n\n const ancestorColumnNames = closureTable.ancestorColumns.map(\n (column) => {\n return escape(column.databaseName)\n },\n )\n\n const descendantColumnNames = closureTable.descendantColumns.map(\n (column) => {\n return escape(column.databaseName)\n },\n )\n\n // Delete logic\n const createSubQuery = (qb: DeleteQueryBuilder<any>, alias: string) => {\n const subAlias = `sub${alias}`\n\n const subSelect = qb\n .createQueryBuilder()\n .select(descendantColumnNames.join(\", \"))\n .from(closureTable.tablePath, subAlias)\n\n // Create where conditions e.g. (WHERE \"subdescendant\".\"id_ancestor\" = :value_id)\n for (const column of closureTable.ancestorColumns) {\n subSelect.andWhere(\n `${escape(subAlias)}.${escape(\n column.databaseName,\n )} = :value_${column.referencedColumn!.databaseName}`,\n )\n }\n\n return qb\n .createQueryBuilder()\n .select(descendantColumnNames.join(\", \"))\n .from(`(${subSelect.getQuery()})`, alias)\n .setParameters(subSelect.getParameters())\n .getQuery()\n }\n\n const parameters: ObjectLiteral = {}\n for (const column of subject.metadata.primaryColumns) {\n parameters[`value_${column.databaseName}`] =\n entity![column.databaseName]\n }\n\n await this.queryRunner.manager\n .createQueryBuilder()\n .delete()\n .from(closureTable.tablePath)\n .where(\n (qb) =>\n `(${descendantColumnNames.join(\", \")}) IN (${createSubQuery(\n qb,\n \"descendant\",\n )})`,\n )\n .andWhere(\n (qb) =>\n `(${ancestorColumnNames.join(\n \", \",\n )}) NOT IN (${createSubQuery(qb, \"ancestor\")})`,\n )\n .setParameters(parameters)\n .execute()\n\n /**\n * Only insert new parent if it exits\n *\n * This only happens if the entity doesn't become a root entity\n */\n if (parent) {\n // Insert logic\n const queryParams: any[] = []\n\n const tableName = this.getTableName(closureTable.tablePath)\n const superAlias = escape(\"supertree\")\n const subAlias = escape(\"subtree\")\n\n const select = [\n ...ancestorColumnNames.map(\n (columnName) => `${superAlias}.${columnName}`,\n ),\n ...descendantColumnNames.map(\n (columnName) => `${subAlias}.${columnName}`,\n ),\n ]\n\n const entityWhereCondition =\n subject.metadata.closureJunctionTable.ancestorColumns.map(\n (column) => {\n const columnName = escape(column.databaseName)\n const entityId =\n column.referencedColumn!.getEntityValue(entity!)\n\n queryParams.push(entityId)\n const parameterName =\n this.queryRunner.dataSource.driver.createParameter(\n \"entity_\" +\n column.referencedColumn!.databaseName,\n queryParams.length - 1,\n )\n return `${subAlias}.${columnName} = ${parameterName}`\n },\n )\n\n const parentWhereCondition =\n subject.metadata.closureJunctionTable.descendantColumns.map(\n (column) => {\n const columnName = escape(column.databaseName)\n const parentId =\n column.referencedColumn!.getEntityValue(parent)\n\n if (!parentId)\n throw new CannotAttachTreeChildrenEntityError(\n subject.metadata.name,\n )\n\n queryParams.push(parentId)\n const parameterName =\n this.queryRunner.dataSource.driver.createParameter(\n \"parent_entity_\" +\n column.referencedColumn!.databaseName,\n queryParams.length - 1,\n )\n return `${superAlias}.${columnName} = ${parameterName}`\n },\n )\n\n await this.queryRunner.query(\n `INSERT INTO ${tableName} (${[\n ...ancestorColumnNames,\n ...descendantColumnNames,\n ].join(\", \")}) ` +\n `SELECT ${select.join(\", \")} ` +\n `FROM ${tableName} AS ${superAlias}, ${tableName} AS ${subAlias} ` +\n `WHERE ${[\n ...entityWhereCondition,\n ...parentWhereCondition,\n ].join(\" AND \")}`,\n queryParams,\n )\n }\n }\n\n /**\n * Executes operations when subject is being removed.\n * @param subjects\n */\n async remove(subjects: Subject | Subject[]): Promise<void> {\n // Only mssql need to execute deletes for the juntion table as it doesn't support multi cascade paths.\n if (!(this.queryRunner.dataSource.driver.options.type === \"mssql\")) {\n return\n }\n\n if (!Array.isArray(subjects)) subjects = [subjects]\n\n const escape = (alias: string) =>\n this.queryRunner.dataSource.driver.escape(alias)\n const identifiers = subjects.map((subject) => subject.identifier)\n const closureTable = subjects[0].metadata.closureJunctionTable\n\n const generateWheres = (columns: ColumnMetadata[]) => {\n return columns\n .map((column) => {\n const data = identifiers.map(\n (identifier) =>\n identifier![column.referencedColumn!.databaseName],\n )\n return `${escape(column.databaseName)} IN (${data.join(\n \", \",\n )})`\n })\n .join(\" AND \")\n }\n\n const ancestorWhere = generateWheres(closureTable.ancestorColumns)\n const descendantWhere = generateWheres(closureTable.descendantColumns)\n\n await this.queryRunner.manager\n .createQueryBuilder()\n .delete()\n .from(closureTable.tablePath)\n .where(ancestorWhere)\n .orWhere(descendantWhere)\n .execute()\n }\n\n /**\n * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom\n * schema name, otherwise returns escaped table name.\n * @param tablePath\n */\n protected getTableName(tablePath: string): string {\n return tablePath\n .split(\".\")\n .map((i) => {\n // this condition need because in SQL Server driver when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string\n return i === \"\"\n ? i\n : this.queryRunner.dataSource.driver.escape(i)\n })\n .join(\".\")\n }\n}\n"]}
1
+ {"version":3,"file":"ClosureSubjectExecutor.js","sourceRoot":"../build/browser/src/","sources":["persistence/tree/ClosureSubjectExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Subject } from \"../Subject\"\nimport type { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { CannotAttachTreeChildrenEntityError } from \"../../error/CannotAttachTreeChildrenEntityError\"\nimport type { DeleteQueryBuilder } from \"../../query-builder/DeleteQueryBuilder\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport type { ColumnMetadata } from \"../../metadata/ColumnMetadata\"\n\n/**\n * Executes subject operations for closure entities.\n */\nexport class ClosureSubjectExecutor {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected queryRunner: QueryRunner) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes operations when subject is being inserted.\n *\n * @param subject\n */\n async insert(subject: Subject): Promise<void> {\n // create values to be inserted into the closure junction\n const closureJunctionInsertMap: ObjectLiteral = {}\n subject.metadata.closureJunctionTable.ancestorColumns.forEach(\n (column) => {\n closureJunctionInsertMap[column.databaseName] =\n subject.identifier\n },\n )\n subject.metadata.closureJunctionTable.descendantColumns.forEach(\n (column) => {\n closureJunctionInsertMap[column.databaseName] =\n subject.identifier\n },\n )\n\n // insert values into the closure junction table\n await this.queryRunner.manager\n .createQueryBuilder()\n .insert()\n .into(subject.metadata.closureJunctionTable.tablePath)\n .values(closureJunctionInsertMap)\n .updateEntity(false)\n .callListeners(false)\n .execute()\n\n let parent = subject.metadata.treeParentRelation!.getEntityValue(\n subject.entity!,\n ) // if entity was attached via parent\n if (!parent && subject.parentSubject?.entity)\n // if entity was attached via children\n parent =\n subject.parentSubject.insertedValueSet ??\n subject.parentSubject.entity\n\n if (parent) {\n const escape = (alias: string) =>\n this.queryRunner.dataSource.driver.escape(alias)\n const tableName = this.getTableName(\n subject.metadata.closureJunctionTable.tablePath,\n )\n const queryParams: any[] = []\n\n const ancestorColumnNames =\n subject.metadata.closureJunctionTable.ancestorColumns.map(\n (column) => {\n return escape(column.databaseName)\n },\n )\n const descendantColumnNames =\n subject.metadata.closureJunctionTable.descendantColumns.map(\n (column) => {\n return escape(column.databaseName)\n },\n )\n const childEntityIds1 = subject.metadata.primaryColumns.map(\n (column) => {\n queryParams.push(\n column.getEntityValue(\n subject.insertedValueSet ?? subject.entity!,\n ),\n )\n return this.queryRunner.dataSource.driver.createParameter(\n \"child_entity_\" + column.databaseName,\n queryParams.length - 1,\n )\n },\n )\n\n const whereCondition =\n subject.metadata.closureJunctionTable.descendantColumns.map(\n (column) => {\n const columnName = escape(column.databaseName)\n const parentId =\n column.referencedColumn!.getEntityValue(parent)\n\n if (!parentId)\n throw new CannotAttachTreeChildrenEntityError(\n subject.metadata.name,\n )\n\n queryParams.push(parentId)\n const parameterName =\n this.queryRunner.dataSource.driver.createParameter(\n \"parent_entity_\" +\n column.referencedColumn!.databaseName,\n queryParams.length - 1,\n )\n return `${columnName} = ${parameterName}`\n },\n )\n\n await this.queryRunner.query(\n `INSERT INTO ${tableName} (${[\n ...ancestorColumnNames,\n ...descendantColumnNames,\n ].join(\", \")}) ` +\n `SELECT ${ancestorColumnNames.join(\n \", \",\n )}, ${childEntityIds1.join(\n \", \",\n )} FROM ${tableName} WHERE ${whereCondition.join(\" AND \")}`,\n queryParams,\n )\n }\n }\n\n /**\n * Executes operations when subject is being updated.\n *\n * @param subject\n */\n async update(subject: Subject): Promise<void> {\n let parent = subject.metadata.treeParentRelation!.getEntityValue(\n subject.entity!,\n ) // if entity was attached via parent\n if (!parent && subject.parentSubject?.entity)\n // if entity was attached via children\n parent = subject.parentSubject.entity\n\n let entity = subject.databaseEntity // if entity was attached via parent\n if (!entity && parent)\n // if entity was attached via children\n entity = subject.metadata\n .treeChildrenRelation!.getEntityValue(parent)\n .find((child: any) => {\n return Object.entries(subject.identifier!).every(\n ([key, value]) => child[key] === value,\n )\n })\n\n // Exit if the parent or the entity where never set\n if (entity === undefined || parent === undefined) {\n return\n }\n\n const oldParent = subject.metadata.treeParentRelation!.getEntityValue(\n entity!,\n )\n const oldParentId = subject.metadata.getEntityIdMap(oldParent)\n const parentId = subject.metadata.getEntityIdMap(parent)\n\n // Exit if the new and old parents are the same\n if (OrmUtils.compareIds(oldParentId, parentId)) {\n return\n }\n\n const escape = (alias: string) =>\n this.queryRunner.dataSource.driver.escape(alias)\n const closureTable = subject.metadata.closureJunctionTable\n\n const ancestorColumnNames = closureTable.ancestorColumns.map(\n (column) => {\n return escape(column.databaseName)\n },\n )\n\n const descendantColumnNames = closureTable.descendantColumns.map(\n (column) => {\n return escape(column.databaseName)\n },\n )\n\n // Delete logic\n const createSubQuery = (qb: DeleteQueryBuilder<any>, alias: string) => {\n const subAlias = `sub${alias}`\n\n const subSelect = qb\n .createQueryBuilder()\n .select(descendantColumnNames.join(\", \"))\n .from(closureTable.tablePath, subAlias)\n\n // Create where conditions e.g. (WHERE \"subdescendant\".\"id_ancestor\" = :value_id)\n for (const column of closureTable.ancestorColumns) {\n subSelect.andWhere(\n `${escape(subAlias)}.${escape(\n column.databaseName,\n )} = :value_${column.referencedColumn!.databaseName}`,\n )\n }\n\n return qb\n .createQueryBuilder()\n .select(descendantColumnNames.join(\", \"))\n .from(`(${subSelect.getQuery()})`, alias)\n .setParameters(subSelect.getParameters())\n .getQuery()\n }\n\n const parameters: ObjectLiteral = {}\n for (const column of subject.metadata.primaryColumns) {\n parameters[`value_${column.databaseName}`] =\n entity![column.databaseName]\n }\n\n await this.queryRunner.manager\n .createQueryBuilder()\n .delete()\n .from(closureTable.tablePath)\n .where(\n (qb) =>\n `(${descendantColumnNames.join(\", \")}) IN (${createSubQuery(\n qb,\n \"descendant\",\n )})`,\n )\n .andWhere(\n (qb) =>\n `(${ancestorColumnNames.join(\n \", \",\n )}) NOT IN (${createSubQuery(qb, \"ancestor\")})`,\n )\n .setParameters(parameters)\n .execute()\n\n /**\n * Only insert new parent if it exits\n *\n * This only happens if the entity doesn't become a root entity\n */\n if (parent) {\n // Insert logic\n const queryParams: any[] = []\n\n const tableName = this.getTableName(closureTable.tablePath)\n const superAlias = escape(\"supertree\")\n const subAlias = escape(\"subtree\")\n\n const select = [\n ...ancestorColumnNames.map(\n (columnName) => `${superAlias}.${columnName}`,\n ),\n ...descendantColumnNames.map(\n (columnName) => `${subAlias}.${columnName}`,\n ),\n ]\n\n const entityWhereCondition =\n subject.metadata.closureJunctionTable.ancestorColumns.map(\n (column) => {\n const columnName = escape(column.databaseName)\n const entityId =\n column.referencedColumn!.getEntityValue(entity!)\n\n queryParams.push(entityId)\n const parameterName =\n this.queryRunner.dataSource.driver.createParameter(\n \"entity_\" +\n column.referencedColumn!.databaseName,\n queryParams.length - 1,\n )\n return `${subAlias}.${columnName} = ${parameterName}`\n },\n )\n\n const parentWhereCondition =\n subject.metadata.closureJunctionTable.descendantColumns.map(\n (column) => {\n const columnName = escape(column.databaseName)\n const parentId =\n column.referencedColumn!.getEntityValue(parent)\n\n if (!parentId)\n throw new CannotAttachTreeChildrenEntityError(\n subject.metadata.name,\n )\n\n queryParams.push(parentId)\n const parameterName =\n this.queryRunner.dataSource.driver.createParameter(\n \"parent_entity_\" +\n column.referencedColumn!.databaseName,\n queryParams.length - 1,\n )\n return `${superAlias}.${columnName} = ${parameterName}`\n },\n )\n\n await this.queryRunner.query(\n `INSERT INTO ${tableName} (${[\n ...ancestorColumnNames,\n ...descendantColumnNames,\n ].join(\", \")}) ` +\n `SELECT ${select.join(\", \")} ` +\n `FROM ${tableName} AS ${superAlias}, ${tableName} AS ${subAlias} ` +\n `WHERE ${[\n ...entityWhereCondition,\n ...parentWhereCondition,\n ].join(\" AND \")}`,\n queryParams,\n )\n }\n }\n\n /**\n * Executes operations when subject is being removed.\n *\n * @param subjects\n */\n async remove(subjects: Subject | Subject[]): Promise<void> {\n // Only mssql need to execute deletes for the juntion table as it doesn't support multi cascade paths.\n if (!(this.queryRunner.dataSource.driver.options.type === \"mssql\")) {\n return\n }\n\n if (!Array.isArray(subjects)) subjects = [subjects]\n\n const escape = (alias: string) =>\n this.queryRunner.dataSource.driver.escape(alias)\n const identifiers = subjects.map((subject) => subject.identifier)\n const closureTable = subjects[0].metadata.closureJunctionTable\n\n const generateWheres = (columns: ColumnMetadata[]) => {\n return columns\n .map((column) => {\n const data = identifiers.map(\n (identifier) =>\n identifier![column.referencedColumn!.databaseName],\n )\n return `${escape(column.databaseName)} IN (${data.join(\n \", \",\n )})`\n })\n .join(\" AND \")\n }\n\n const ancestorWhere = generateWheres(closureTable.ancestorColumns)\n const descendantWhere = generateWheres(closureTable.descendantColumns)\n\n await this.queryRunner.manager\n .createQueryBuilder()\n .delete()\n .from(closureTable.tablePath)\n .where(ancestorWhere)\n .orWhere(descendantWhere)\n .execute()\n }\n\n /**\n * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom\n * schema name, otherwise returns escaped table name.\n *\n * @param tablePath\n */\n protected getTableName(tablePath: string): string {\n return tablePath\n .split(\".\")\n .map((i) => {\n // this condition need because in SQL Server driver when custom database name was specified and schema name was not, we got `dbName..tableName` string, and doesn't need to escape middle empty string\n return i === \"\"\n ? i\n : this.queryRunner.dataSource.driver.escape(i)\n })\n .join(\".\")\n }\n}\n"]}
@@ -8,11 +8,13 @@ export declare class MaterializedPathSubjectExecutor {
8
8
  constructor(queryRunner: QueryRunner);
9
9
  /**
10
10
  * Executes operations when subject is being inserted.
11
+ *
11
12
  * @param subject
12
13
  */
13
14
  insert(subject: Subject): Promise<void>;
14
15
  /**
15
16
  * Executes operations when subject is being updated.
17
+ *
16
18
  * @param subject
17
19
  */
18
20
  update(subject: Subject): Promise<void>;
@@ -19,15 +19,16 @@ class MaterializedPathSubjectExecutor {
19
19
  // -------------------------------------------------------------------------
20
20
  /**
21
21
  * Executes operations when subject is being inserted.
22
+ *
22
23
  * @param subject
23
24
  */
24
25
  async insert(subject) {
25
26
  let parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity); // if entity was attached via parent
26
- if (!parent && subject.parentSubject && subject.parentSubject.entity)
27
+ if (!parent && subject.parentSubject?.entity)
27
28
  // if entity was attached via children
28
- parent = subject.parentSubject.insertedValueSet
29
- ? subject.parentSubject.insertedValueSet
30
- : subject.parentSubject.entity;
29
+ parent =
30
+ subject.parentSubject.insertedValueSet ??
31
+ subject.parentSubject.entity;
31
32
  const parentId = subject.metadata.getEntityIdMap(parent);
32
33
  let parentPath = "";
33
34
  if (parentId) {
@@ -49,11 +50,12 @@ class MaterializedPathSubjectExecutor {
49
50
  }
50
51
  /**
51
52
  * Executes operations when subject is being updated.
53
+ *
52
54
  * @param subject
53
55
  */
54
56
  async update(subject) {
55
57
  let newParent = subject.metadata.treeParentRelation.getEntityValue(subject.entity); // if entity was attached via parent
56
- if (!newParent && subject.parentSubject && subject.parentSubject.entity)
58
+ if (!newParent && subject.parentSubject?.entity)
57
59
  // if entity was attached via children
58
60
  newParent = subject.parentSubject.entity;
59
61
  let entity = subject.databaseEntity; // if entity was attached via parent
@@ -102,7 +104,7 @@ class MaterializedPathSubjectExecutor {
102
104
  return undefined;
103
105
  return EntityMetadata_1.EntityMetadata.getValueMap(entity, subject.metadata
104
106
  .treeParentRelation.joinColumns.map((column) => column.referencedColumn)
105
- .filter((v) => v != null), { skipNulls: true });
107
+ .filter((v) => v != null));
106
108
  }
107
109
  getEntityPath(subject, id) {
108
110
  const metadata = subject.metadata;
@@ -1 +1 @@
1
- {"version":3,"file":"MaterializedPathSubjectExecutor.js","sourceRoot":"../build/browser/src/","sources":["persistence/tree/MaterializedPathSubjectExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Subject } from \"../Subject\"\nimport type { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport type { ColumnMetadata } from \"../../metadata/ColumnMetadata\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { Brackets } from \"../../query-builder/Brackets\"\n\n/**\n * Executes subject operations for materialized-path tree entities.\n */\nexport class MaterializedPathSubjectExecutor {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected queryRunner: QueryRunner) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes operations when subject is being inserted.\n * @param subject\n */\n async insert(subject: Subject): Promise<void> {\n let parent = subject.metadata.treeParentRelation!.getEntityValue(\n subject.entity!,\n ) // if entity was attached via parent\n if (!parent && subject.parentSubject && subject.parentSubject.entity)\n // if entity was attached via children\n parent = subject.parentSubject.insertedValueSet\n ? subject.parentSubject.insertedValueSet\n : subject.parentSubject.entity\n\n const parentId = subject.metadata.getEntityIdMap(parent)\n\n let parentPath: string = \"\"\n if (parentId) {\n parentPath = await this.getEntityPath(subject, parentId)\n }\n\n const insertedEntityId = subject.metadata\n .treeParentRelation!.joinColumns.map((joinColumn) => {\n return joinColumn.referencedColumn!.getEntityValue(\n subject.insertedValueSet!,\n )\n })\n .join(\"_\")\n\n await this.queryRunner.manager\n .createQueryBuilder()\n .update(subject.metadata.target)\n .set({\n [subject.metadata.materializedPathColumn!.propertyPath]:\n parentPath + insertedEntityId + \".\",\n } as any)\n .where(subject.identifier!)\n .execute()\n }\n\n /**\n * Executes operations when subject is being updated.\n * @param subject\n */\n async update(subject: Subject): Promise<void> {\n let newParent = subject.metadata.treeParentRelation!.getEntityValue(\n subject.entity!,\n ) // if entity was attached via parent\n if (!newParent && subject.parentSubject && subject.parentSubject.entity)\n // if entity was attached via children\n newParent = subject.parentSubject.entity\n\n let entity = subject.databaseEntity // if entity was attached via parent\n if (!entity && newParent)\n // if entity was attached via children\n entity = subject.metadata\n .treeChildrenRelation!.getEntityValue(newParent)\n .find((child: any) => {\n return Object.entries(subject.identifier!).every(\n ([key, value]) => child[key] === value,\n )\n })\n\n const oldParent = subject.metadata.treeParentRelation!.getEntityValue(\n entity!,\n )\n const oldParentId = this.getEntityParentReferencedColumnMap(\n subject,\n oldParent,\n )\n const newParentId = this.getEntityParentReferencedColumnMap(\n subject,\n newParent,\n )\n\n // Exit if the new and old parents are the same\n if (OrmUtils.compareIds(oldParentId, newParentId)) {\n return\n }\n\n let newParentPath: string = \"\"\n if (newParentId) {\n newParentPath = await this.getEntityPath(subject, newParentId)\n }\n\n let oldParentPath: string = \"\"\n if (oldParentId) {\n oldParentPath =\n (await this.getEntityPath(subject, oldParentId)) || \"\"\n }\n\n const entityPath = subject.metadata\n .treeParentRelation!.joinColumns.map((joinColumn) => {\n return joinColumn.referencedColumn!.getEntityValue(entity!)\n })\n .join(\"_\")\n\n const propertyPath =\n subject.metadata.materializedPathColumn!.propertyPath\n await this.queryRunner.manager\n .createQueryBuilder()\n .update(subject.metadata.target)\n .set({\n [propertyPath]: () =>\n `REPLACE(${this.queryRunner.dataSource.driver.escape(\n propertyPath,\n )}, '${oldParentPath}${entityPath}.', '${newParentPath}${entityPath}.')`,\n } as any)\n .where(`${propertyPath} LIKE :path`, {\n path: `${oldParentPath}${entityPath}.%`,\n })\n .execute()\n }\n\n private getEntityParentReferencedColumnMap(\n subject: Subject,\n entity: ObjectLiteral | undefined,\n ): ObjectLiteral | undefined {\n if (!entity) return undefined\n return EntityMetadata.getValueMap(\n entity,\n subject.metadata\n .treeParentRelation!.joinColumns.map(\n (column) => column.referencedColumn,\n )\n .filter((v) => v != null) as ColumnMetadata[],\n { skipNulls: true },\n )\n }\n\n private getEntityPath(\n subject: Subject,\n id: ObjectLiteral,\n ): Promise<string> {\n const metadata = subject.metadata\n const normalized = (Array.isArray(id) ? id : [id]).map((id) =>\n metadata.ensureEntityIdMap(id),\n )\n return this.queryRunner.manager\n .createQueryBuilder()\n .select(\n subject.metadata.targetName +\n \".\" +\n subject.metadata.materializedPathColumn!.propertyPath,\n \"path\",\n )\n .from(subject.metadata.target, subject.metadata.targetName)\n .where(\n new Brackets((qb) => {\n for (const data of normalized) {\n qb.orWhere(new Brackets((qb) => qb.where(data)))\n }\n }),\n )\n .withDeleted()\n .getRawOne()\n .then((result) => (result ? result[\"path\"] : \"\"))\n }\n}\n"]}
1
+ {"version":3,"file":"MaterializedPathSubjectExecutor.js","sourceRoot":"../build/browser/src/","sources":["persistence/tree/MaterializedPathSubjectExecutor.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Subject } from \"../Subject\"\nimport type { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport type { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport type { ColumnMetadata } from \"../../metadata/ColumnMetadata\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { Brackets } from \"../../query-builder/Brackets\"\n\n/**\n * Executes subject operations for materialized-path tree entities.\n */\nexport class MaterializedPathSubjectExecutor {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected queryRunner: QueryRunner) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes operations when subject is being inserted.\n *\n * @param subject\n */\n async insert(subject: Subject): Promise<void> {\n let parent = subject.metadata.treeParentRelation!.getEntityValue(\n subject.entity!,\n ) // if entity was attached via parent\n if (!parent && subject.parentSubject?.entity)\n // if entity was attached via children\n parent =\n subject.parentSubject.insertedValueSet ??\n subject.parentSubject.entity\n\n const parentId = subject.metadata.getEntityIdMap(parent)\n\n let parentPath: string = \"\"\n if (parentId) {\n parentPath = await this.getEntityPath(subject, parentId)\n }\n\n const insertedEntityId = subject.metadata\n .treeParentRelation!.joinColumns.map((joinColumn) => {\n return joinColumn.referencedColumn!.getEntityValue(\n subject.insertedValueSet!,\n )\n })\n .join(\"_\")\n\n await this.queryRunner.manager\n .createQueryBuilder()\n .update(subject.metadata.target)\n .set({\n [subject.metadata.materializedPathColumn!.propertyPath]:\n parentPath + insertedEntityId + \".\",\n } as any)\n .where(subject.identifier!)\n .execute()\n }\n\n /**\n * Executes operations when subject is being updated.\n *\n * @param subject\n */\n async update(subject: Subject): Promise<void> {\n let newParent = subject.metadata.treeParentRelation!.getEntityValue(\n subject.entity!,\n ) // if entity was attached via parent\n if (!newParent && subject.parentSubject?.entity)\n // if entity was attached via children\n newParent = subject.parentSubject.entity\n\n let entity = subject.databaseEntity // if entity was attached via parent\n if (!entity && newParent)\n // if entity was attached via children\n entity = subject.metadata\n .treeChildrenRelation!.getEntityValue(newParent)\n .find((child: any) => {\n return Object.entries(subject.identifier!).every(\n ([key, value]) => child[key] === value,\n )\n })\n\n const oldParent = subject.metadata.treeParentRelation!.getEntityValue(\n entity!,\n )\n const oldParentId = this.getEntityParentReferencedColumnMap(\n subject,\n oldParent,\n )\n const newParentId = this.getEntityParentReferencedColumnMap(\n subject,\n newParent,\n )\n\n // Exit if the new and old parents are the same\n if (OrmUtils.compareIds(oldParentId, newParentId)) {\n return\n }\n\n let newParentPath: string = \"\"\n if (newParentId) {\n newParentPath = await this.getEntityPath(subject, newParentId)\n }\n\n let oldParentPath: string = \"\"\n if (oldParentId) {\n oldParentPath =\n (await this.getEntityPath(subject, oldParentId)) || \"\"\n }\n\n const entityPath = subject.metadata\n .treeParentRelation!.joinColumns.map((joinColumn) => {\n return joinColumn.referencedColumn!.getEntityValue(entity!)\n })\n .join(\"_\")\n\n const propertyPath =\n subject.metadata.materializedPathColumn!.propertyPath\n await this.queryRunner.manager\n .createQueryBuilder()\n .update(subject.metadata.target)\n .set({\n [propertyPath]: () =>\n `REPLACE(${this.queryRunner.dataSource.driver.escape(\n propertyPath,\n )}, '${oldParentPath}${entityPath}.', '${newParentPath}${entityPath}.')`,\n } as any)\n .where(`${propertyPath} LIKE :path`, {\n path: `${oldParentPath}${entityPath}.%`,\n })\n .execute()\n }\n\n private getEntityParentReferencedColumnMap(\n subject: Subject,\n entity: ObjectLiteral | undefined,\n ): ObjectLiteral | undefined {\n if (!entity) return undefined\n return EntityMetadata.getValueMap(\n entity,\n subject.metadata\n .treeParentRelation!.joinColumns.map(\n (column) => column.referencedColumn,\n )\n .filter((v) => v != null) as ColumnMetadata[],\n )\n }\n\n private getEntityPath(\n subject: Subject,\n id: ObjectLiteral,\n ): Promise<string> {\n const metadata = subject.metadata\n const normalized = (Array.isArray(id) ? id : [id]).map((id) =>\n metadata.ensureEntityIdMap(id),\n )\n return this.queryRunner.manager\n .createQueryBuilder()\n .select(\n subject.metadata.targetName +\n \".\" +\n subject.metadata.materializedPathColumn!.propertyPath,\n \"path\",\n )\n .from(subject.metadata.target, subject.metadata.targetName)\n .where(\n new Brackets((qb) => {\n for (const data of normalized) {\n qb.orWhere(new Brackets((qb) => qb.where(data)))\n }\n }),\n )\n .withDeleted()\n .getRawOne()\n .then((result) => (result ? result[\"path\"] : \"\"))\n }\n}\n"]}
@@ -14,21 +14,25 @@ export declare class NestedSetSubjectExecutor {
14
14
  constructor(queryRunner: QueryRunner);
15
15
  /**
16
16
  * Executes operations when subject is being inserted.
17
+ *
17
18
  * @param subject
18
19
  */
19
20
  insert(subject: Subject): Promise<void>;
20
21
  /**
21
22
  * Executes operations when subject is being updated.
23
+ *
22
24
  * @param subject
23
25
  */
24
26
  update(subject: Subject): Promise<void>;
25
27
  /**
26
28
  * Executes operations when subject is being removed.
29
+ *
27
30
  * @param subjects
28
31
  */
29
32
  remove(subjects: Subject | Subject[]): Promise<void>;
30
33
  /**
31
34
  * Get the nested set ids for a given entity
35
+ *
32
36
  * @param metadata
33
37
  * @param ids
34
38
  */
@@ -37,6 +41,7 @@ export declare class NestedSetSubjectExecutor {
37
41
  /**
38
42
  * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom
39
43
  * schema name, otherwise returns escaped table name.
44
+ *
40
45
  * @param tablePath
41
46
  */
42
47
  protected getTableName(tablePath: string): string;
@@ -20,6 +20,7 @@ class NestedSetSubjectExecutor {
20
20
  // -------------------------------------------------------------------------
21
21
  /**
22
22
  * Executes operations when subject is being inserted.
23
+ *
23
24
  * @param subject
24
25
  */
25
26
  async insert(subject) {
@@ -28,11 +29,11 @@ class NestedSetSubjectExecutor {
28
29
  const leftColumnName = escape(subject.metadata.nestedSetLeftColumn.databaseName);
29
30
  const rightColumnName = escape(subject.metadata.nestedSetRightColumn.databaseName);
30
31
  let parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity); // if entity was attached via parent
31
- if (!parent && subject.parentSubject && subject.parentSubject.entity)
32
+ if (!parent && subject.parentSubject?.entity)
32
33
  // if entity was attached via children
33
- parent = subject.parentSubject.insertedValueSet
34
- ? subject.parentSubject.insertedValueSet
35
- : subject.parentSubject.entity;
34
+ parent =
35
+ subject.parentSubject.insertedValueSet ??
36
+ subject.parentSubject.entity;
36
37
  const parentId = subject.metadata.getEntityIdMap(parent);
37
38
  let parentNsRight = undefined;
38
39
  if (parentId) {
@@ -67,11 +68,12 @@ class NestedSetSubjectExecutor {
67
68
  }
68
69
  /**
69
70
  * Executes operations when subject is being updated.
71
+ *
70
72
  * @param subject
71
73
  */
72
74
  async update(subject) {
73
75
  let parent = subject.metadata.treeParentRelation.getEntityValue(subject.entity); // if entity was attached via parent
74
- if (!parent && subject.parentSubject && subject.parentSubject.entity)
76
+ if (!parent && subject.parentSubject?.entity)
75
77
  // if entity was attached via children
76
78
  parent = subject.parentSubject.entity;
77
79
  let entity = subject.databaseEntity; // if entity was attached via parent
@@ -170,6 +172,7 @@ class NestedSetSubjectExecutor {
170
172
  }
171
173
  /**
172
174
  * Executes operations when subject is being removed.
175
+ *
173
176
  * @param subjects
174
177
  */
175
178
  async remove(subjects) {
@@ -203,6 +206,7 @@ class NestedSetSubjectExecutor {
203
206
  }
204
207
  /**
205
208
  * Get the nested set ids for a given entity
209
+ *
206
210
  * @param metadata
207
211
  * @param ids
208
212
  */
@@ -258,6 +262,7 @@ class NestedSetSubjectExecutor {
258
262
  /**
259
263
  * Gets escaped table name with schema name if SqlServer or Postgres driver used with custom
260
264
  * schema name, otherwise returns escaped table name.
265
+ *
261
266
  * @param tablePath
262
267
  */
263
268
  getTableName(tablePath) {