typeorm 0.3.18-dev.dff2d53 → 0.3.18-dev.e67d704

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 (378) hide show
  1. package/README.md +23 -23
  2. package/browser/data-source/BaseDataSourceOptions.d.ts +4 -0
  3. package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
  4. package/browser/data-source/DataSource.d.ts +4 -0
  5. package/browser/data-source/DataSource.js +14 -0
  6. package/browser/data-source/DataSource.js.map +1 -1
  7. package/browser/decorator/Index.js +1 -0
  8. package/browser/decorator/Index.js.map +1 -1
  9. package/browser/decorator/options/IndexOptions.d.ts +5 -0
  10. package/browser/decorator/options/IndexOptions.js.map +1 -1
  11. package/browser/driver/Driver.d.ts +4 -0
  12. package/browser/driver/Driver.js.map +1 -1
  13. package/browser/driver/DriverUtils.js +2 -5
  14. package/browser/driver/DriverUtils.js.map +1 -1
  15. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +9 -6
  16. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  17. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +9 -6
  18. package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  19. package/browser/driver/cockroachdb/CockroachConnectionOptions.d.ts +6 -0
  20. package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  21. package/browser/driver/cockroachdb/CockroachDriver.d.ts +4 -0
  22. package/browser/driver/cockroachdb/CockroachDriver.js +10 -1
  23. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  24. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +6 -1
  25. package/browser/driver/cockroachdb/CockroachQueryRunner.js +46 -17
  26. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  27. package/browser/driver/cordova/CordovaQueryRunner.js +8 -0
  28. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  29. package/browser/driver/expo/ExpoQueryRunner.js +9 -2
  30. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  31. package/browser/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  32. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  33. package/browser/driver/mongodb/typings.d.ts +3 -3
  34. package/browser/driver/mongodb/typings.js.map +1 -1
  35. package/browser/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
  36. package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  37. package/browser/driver/mysql/MysqlQueryRunner.js +18 -7
  38. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  39. package/browser/driver/oracle/OracleConnectionOptions.d.ts +14 -0
  40. package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
  41. package/browser/driver/oracle/OracleDriver.d.ts +4 -0
  42. package/browser/driver/oracle/OracleDriver.js +17 -2
  43. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  44. package/browser/driver/oracle/OracleQueryRunner.js +48 -6
  45. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  46. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +5 -0
  47. package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  48. package/browser/driver/postgres/PostgresConnectionOptions.d.ts +6 -5
  49. package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  50. package/browser/driver/postgres/PostgresDriver.d.ts +4 -0
  51. package/browser/driver/postgres/PostgresDriver.js +13 -4
  52. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  53. package/browser/driver/postgres/PostgresQueryRunner.js +46 -23
  54. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  55. package/browser/driver/react-native/ReactNativeQueryRunner.js +10 -2
  56. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  57. package/browser/driver/sap/SapDriver.d.ts +8 -0
  58. package/browser/driver/sap/SapDriver.js +14 -3
  59. package/browser/driver/sap/SapDriver.js.map +1 -1
  60. package/browser/driver/sap/SapQueryRunner.d.ts +5 -14
  61. package/browser/driver/sap/SapQueryRunner.js +74 -64
  62. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  63. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +6 -0
  64. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  65. package/browser/driver/spanner/SpannerDriver.d.ts +4 -0
  66. package/browser/driver/spanner/SpannerDriver.js +10 -1
  67. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  68. package/browser/driver/spanner/SpannerQueryRunner.js +6 -0
  69. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
  70. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  71. package/browser/driver/sqlite/SqliteQueryRunner.js +61 -46
  72. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  73. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +10 -16
  74. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  75. package/browser/driver/sqljs/SqljsQueryRunner.js +11 -3
  76. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  77. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +2 -1
  78. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  79. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +11 -5
  80. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  81. package/browser/driver/sqlserver/SqlServerDriver.d.ts +4 -0
  82. package/browser/driver/sqlserver/SqlServerDriver.js +10 -1
  83. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  84. package/browser/driver/sqlserver/SqlServerQueryRunner.js +25 -5
  85. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  86. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.d.ts +12 -0
  87. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js +3 -0
  88. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -0
  89. package/browser/entity-manager/EntityManager.d.ts +5 -1
  90. package/browser/entity-manager/EntityManager.js +15 -2
  91. package/browser/entity-manager/EntityManager.js.map +1 -1
  92. package/browser/entity-manager/MongoEntityManager.d.ts +8 -4
  93. package/browser/entity-manager/MongoEntityManager.js +12 -10
  94. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  95. package/browser/entity-schema/EntitySchemaOptions.d.ts +4 -0
  96. package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
  97. package/browser/entity-schema/EntitySchemaTransformer.js +7 -0
  98. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  99. package/browser/error/EntityNotFoundError.d.ts +2 -0
  100. package/browser/error/EntityNotFoundError.js +2 -0
  101. package/browser/error/EntityNotFoundError.js.map +1 -1
  102. package/browser/error/QueryFailedError.d.ts +3 -3
  103. package/browser/error/QueryFailedError.js.map +1 -1
  104. package/browser/find-options/FindOptionsUtils.js +1 -1
  105. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  106. package/browser/find-options/FindOptionsWhere.d.ts +1 -1
  107. package/browser/find-options/FindOptionsWhere.js.map +1 -1
  108. package/browser/index.d.ts +1 -0
  109. package/browser/index.js +1 -0
  110. package/browser/index.js.map +1 -1
  111. package/browser/logger/AbstractLogger.js +1 -1
  112. package/browser/logger/AbstractLogger.js.map +1 -1
  113. package/browser/metadata/ColumnMetadata.js +4 -0
  114. package/browser/metadata/ColumnMetadata.js.map +1 -1
  115. package/browser/metadata/EntityMetadata.d.ts +3 -3
  116. package/browser/metadata/EntityMetadata.js +7 -3
  117. package/browser/metadata/EntityMetadata.js.map +1 -1
  118. package/browser/metadata/IndexMetadata.d.ts +5 -0
  119. package/browser/metadata/IndexMetadata.js +1 -0
  120. package/browser/metadata/IndexMetadata.js.map +1 -1
  121. package/browser/metadata-args/IndexMetadataArgs.d.ts +5 -0
  122. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  123. package/browser/metadata-builder/EntityMetadataBuilder.js +22 -0
  124. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  125. package/browser/naming-strategy/DefaultNamingStrategy.d.ts +0 -1
  126. package/browser/naming-strategy/DefaultNamingStrategy.js +0 -3
  127. package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  128. package/browser/naming-strategy/NamingStrategyInterface.d.ts +0 -4
  129. package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
  130. package/browser/persistence/Subject.js +2 -1
  131. package/browser/persistence/Subject.js.map +1 -1
  132. package/browser/persistence/SubjectExecutor.js +4 -1
  133. package/browser/persistence/SubjectExecutor.js.map +1 -1
  134. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +6 -2
  135. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  136. package/browser/platform/BrowserPlatformTools.js +3 -2
  137. package/browser/platform/BrowserPlatformTools.js.map +1 -1
  138. package/browser/platform/PlatformTools.js +2 -0
  139. package/browser/platform/PlatformTools.js.map +1 -1
  140. package/browser/query-builder/InsertQueryBuilder.js +19 -6
  141. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  142. package/browser/query-builder/QueryBuilder.d.ts +5 -0
  143. package/browser/query-builder/QueryBuilder.js +27 -24
  144. package/browser/query-builder/QueryBuilder.js.map +1 -1
  145. package/browser/query-builder/SelectQueryBuilder.js +13 -3
  146. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  147. package/browser/query-builder/index.d.ts +1 -0
  148. package/browser/query-builder/index.js +17 -0
  149. package/browser/query-builder/index.js.map +1 -0
  150. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +9 -0
  151. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +28 -0
  152. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  153. package/browser/repository/BaseEntity.d.ts +12 -0
  154. package/browser/repository/BaseEntity.js +12 -0
  155. package/browser/repository/BaseEntity.js.map +1 -1
  156. package/browser/repository/MongoRepository.d.ts +8 -4
  157. package/browser/repository/MongoRepository.js +6 -0
  158. package/browser/repository/MongoRepository.js.map +1 -1
  159. package/browser/repository/Repository.d.ts +14 -2
  160. package/browser/repository/Repository.js +26 -6
  161. package/browser/repository/Repository.js.map +1 -1
  162. package/browser/schema-builder/options/TableIndexOptions.d.ts +5 -0
  163. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  164. package/browser/schema-builder/table/TableIndex.d.ts +5 -0
  165. package/browser/schema-builder/table/TableIndex.js +3 -0
  166. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  167. package/browser/subscriber/Broadcaster.d.ts +11 -1
  168. package/browser/subscriber/Broadcaster.js +48 -1
  169. package/browser/subscriber/Broadcaster.js.map +1 -1
  170. package/browser/subscriber/EntitySubscriberInterface.d.ts +9 -0
  171. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  172. package/browser/subscriber/event/InsertEvent.d.ts +5 -0
  173. package/browser/subscriber/event/InsertEvent.js.map +1 -1
  174. package/browser/subscriber/event/QueryEvent.d.ts +50 -0
  175. package/browser/subscriber/event/QueryEvent.js +3 -0
  176. package/browser/subscriber/event/QueryEvent.js.map +1 -0
  177. package/browser/util/DateUtils.js +4 -2
  178. package/browser/util/DateUtils.js.map +1 -1
  179. package/browser/util/OrmUtils.d.ts +6 -0
  180. package/browser/util/OrmUtils.js +66 -0
  181. package/browser/util/OrmUtils.js.map +1 -1
  182. package/commands/CommandUtils.js +6 -1
  183. package/commands/CommandUtils.js.map +1 -1
  184. package/commands/EntityCreateCommand.d.ts +3 -0
  185. package/commands/EntityCreateCommand.js +7 -0
  186. package/commands/EntityCreateCommand.js.map +1 -1
  187. package/commands/InitCommand.js +1 -1
  188. package/commands/InitCommand.js.map +1 -1
  189. package/commands/MigrationCreateCommand.d.ts +5 -1
  190. package/commands/MigrationCreateCommand.js +6 -1
  191. package/commands/MigrationCreateCommand.js.map +1 -1
  192. package/commands/MigrationGenerateCommand.d.ts +5 -1
  193. package/commands/MigrationGenerateCommand.js +8 -1
  194. package/commands/MigrationGenerateCommand.js.map +1 -1
  195. package/commands/SubscriberCreateCommand.d.ts +3 -0
  196. package/commands/SubscriberCreateCommand.js +7 -0
  197. package/commands/SubscriberCreateCommand.js.map +1 -1
  198. package/data-source/BaseDataSourceOptions.d.ts +4 -0
  199. package/data-source/BaseDataSourceOptions.js.map +1 -1
  200. package/data-source/DataSource.d.ts +4 -0
  201. package/data-source/DataSource.js +14 -0
  202. package/data-source/DataSource.js.map +1 -1
  203. package/decorator/Index.js +1 -0
  204. package/decorator/Index.js.map +1 -1
  205. package/decorator/options/IndexOptions.d.ts +5 -0
  206. package/decorator/options/IndexOptions.js.map +1 -1
  207. package/driver/Driver.d.ts +4 -0
  208. package/driver/Driver.js.map +1 -1
  209. package/driver/DriverUtils.js +2 -5
  210. package/driver/DriverUtils.js.map +1 -1
  211. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +9 -6
  212. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  213. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +9 -6
  214. package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
  215. package/driver/cockroachdb/CockroachConnectionOptions.d.ts +6 -0
  216. package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
  217. package/driver/cockroachdb/CockroachDriver.d.ts +4 -0
  218. package/driver/cockroachdb/CockroachDriver.js +10 -1
  219. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  220. package/driver/cockroachdb/CockroachQueryRunner.d.ts +6 -1
  221. package/driver/cockroachdb/CockroachQueryRunner.js +46 -17
  222. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  223. package/driver/cordova/CordovaQueryRunner.js +8 -0
  224. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  225. package/driver/expo/ExpoQueryRunner.js +9 -2
  226. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  227. package/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  228. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  229. package/driver/mongodb/typings.d.ts +3 -3
  230. package/driver/mongodb/typings.js.map +1 -1
  231. package/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
  232. package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
  233. package/driver/mysql/MysqlQueryRunner.js +18 -7
  234. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  235. package/driver/oracle/OracleConnectionOptions.d.ts +14 -0
  236. package/driver/oracle/OracleConnectionOptions.js.map +1 -1
  237. package/driver/oracle/OracleDriver.d.ts +4 -0
  238. package/driver/oracle/OracleDriver.js +17 -2
  239. package/driver/oracle/OracleDriver.js.map +1 -1
  240. package/driver/oracle/OracleQueryRunner.js +48 -6
  241. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  242. package/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +5 -0
  243. package/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
  244. package/driver/postgres/PostgresConnectionOptions.d.ts +6 -5
  245. package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
  246. package/driver/postgres/PostgresDriver.d.ts +4 -0
  247. package/driver/postgres/PostgresDriver.js +13 -4
  248. package/driver/postgres/PostgresDriver.js.map +1 -1
  249. package/driver/postgres/PostgresQueryRunner.js +46 -23
  250. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  251. package/driver/react-native/ReactNativeQueryRunner.js +10 -2
  252. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  253. package/driver/sap/SapDriver.d.ts +8 -0
  254. package/driver/sap/SapDriver.js +15 -4
  255. package/driver/sap/SapDriver.js.map +1 -1
  256. package/driver/sap/SapQueryRunner.d.ts +5 -14
  257. package/driver/sap/SapQueryRunner.js +74 -64
  258. package/driver/sap/SapQueryRunner.js.map +1 -1
  259. package/driver/spanner/SpannerConnectionOptions.d.ts +6 -0
  260. package/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  261. package/driver/spanner/SpannerDriver.d.ts +4 -0
  262. package/driver/spanner/SpannerDriver.js +10 -1
  263. package/driver/spanner/SpannerDriver.js.map +1 -1
  264. package/driver/spanner/SpannerQueryRunner.js +6 -0
  265. package/driver/spanner/SpannerQueryRunner.js.map +1 -1
  266. package/driver/sqlite/SqliteDriver.js.map +1 -1
  267. package/driver/sqlite/SqliteQueryRunner.js +61 -46
  268. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  269. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +10 -16
  270. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  271. package/driver/sqljs/SqljsQueryRunner.js +11 -3
  272. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  273. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +2 -1
  274. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
  275. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +11 -5
  276. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  277. package/driver/sqlserver/SqlServerDriver.d.ts +4 -0
  278. package/driver/sqlserver/SqlServerDriver.js +10 -1
  279. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  280. package/driver/sqlserver/SqlServerQueryRunner.js +25 -5
  281. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  282. package/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.d.ts +12 -0
  283. package/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js +4 -0
  284. package/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -0
  285. package/entity-manager/EntityManager.d.ts +5 -1
  286. package/entity-manager/EntityManager.js +15 -2
  287. package/entity-manager/EntityManager.js.map +1 -1
  288. package/entity-manager/MongoEntityManager.d.ts +8 -4
  289. package/entity-manager/MongoEntityManager.js +12 -10
  290. package/entity-manager/MongoEntityManager.js.map +1 -1
  291. package/entity-schema/EntitySchemaOptions.d.ts +4 -0
  292. package/entity-schema/EntitySchemaOptions.js.map +1 -1
  293. package/entity-schema/EntitySchemaTransformer.js +7 -0
  294. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  295. package/error/EntityNotFoundError.d.ts +2 -0
  296. package/error/EntityNotFoundError.js +2 -0
  297. package/error/EntityNotFoundError.js.map +1 -1
  298. package/error/QueryFailedError.d.ts +3 -3
  299. package/error/QueryFailedError.js.map +1 -1
  300. package/find-options/FindOptionsUtils.js +1 -1
  301. package/find-options/FindOptionsUtils.js.map +1 -1
  302. package/find-options/FindOptionsWhere.d.ts +1 -1
  303. package/find-options/FindOptionsWhere.js.map +1 -1
  304. package/index.d.ts +1 -0
  305. package/index.js +1 -0
  306. package/index.js.map +1 -1
  307. package/index.mjs +2 -0
  308. package/logger/AbstractLogger.js +1 -1
  309. package/logger/AbstractLogger.js.map +1 -1
  310. package/metadata/ColumnMetadata.js +4 -0
  311. package/metadata/ColumnMetadata.js.map +1 -1
  312. package/metadata/EntityMetadata.d.ts +3 -3
  313. package/metadata/EntityMetadata.js +7 -3
  314. package/metadata/EntityMetadata.js.map +1 -1
  315. package/metadata/IndexMetadata.d.ts +5 -0
  316. package/metadata/IndexMetadata.js +1 -0
  317. package/metadata/IndexMetadata.js.map +1 -1
  318. package/metadata-args/IndexMetadataArgs.d.ts +5 -0
  319. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  320. package/metadata-builder/EntityMetadataBuilder.js +22 -0
  321. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  322. package/naming-strategy/DefaultNamingStrategy.d.ts +0 -1
  323. package/naming-strategy/DefaultNamingStrategy.js +0 -3
  324. package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
  325. package/naming-strategy/NamingStrategyInterface.d.ts +0 -4
  326. package/naming-strategy/NamingStrategyInterface.js.map +1 -1
  327. package/package.json +1 -1
  328. package/persistence/Subject.js +2 -1
  329. package/persistence/Subject.js.map +1 -1
  330. package/persistence/SubjectExecutor.js +4 -1
  331. package/persistence/SubjectExecutor.js.map +1 -1
  332. package/persistence/subject-builder/ManyToManySubjectBuilder.js +6 -2
  333. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  334. package/platform/PlatformTools.js +2 -0
  335. package/platform/PlatformTools.js.map +1 -1
  336. package/query-builder/InsertQueryBuilder.js +19 -6
  337. package/query-builder/InsertQueryBuilder.js.map +1 -1
  338. package/query-builder/QueryBuilder.d.ts +5 -0
  339. package/query-builder/QueryBuilder.js +27 -24
  340. package/query-builder/QueryBuilder.js.map +1 -1
  341. package/query-builder/SelectQueryBuilder.js +13 -3
  342. package/query-builder/SelectQueryBuilder.js.map +1 -1
  343. package/query-builder/index.d.ts +1 -0
  344. package/query-builder/index.js +21 -0
  345. package/query-builder/index.js.map +1 -0
  346. package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +9 -0
  347. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +28 -0
  348. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  349. package/repository/BaseEntity.d.ts +12 -0
  350. package/repository/BaseEntity.js +12 -0
  351. package/repository/BaseEntity.js.map +1 -1
  352. package/repository/MongoRepository.d.ts +8 -4
  353. package/repository/MongoRepository.js +6 -0
  354. package/repository/MongoRepository.js.map +1 -1
  355. package/repository/Repository.d.ts +14 -2
  356. package/repository/Repository.js +26 -6
  357. package/repository/Repository.js.map +1 -1
  358. package/schema-builder/options/TableIndexOptions.d.ts +5 -0
  359. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  360. package/schema-builder/table/TableIndex.d.ts +5 -0
  361. package/schema-builder/table/TableIndex.js +3 -0
  362. package/schema-builder/table/TableIndex.js.map +1 -1
  363. package/subscriber/Broadcaster.d.ts +11 -1
  364. package/subscriber/Broadcaster.js +48 -1
  365. package/subscriber/Broadcaster.js.map +1 -1
  366. package/subscriber/EntitySubscriberInterface.d.ts +9 -0
  367. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  368. package/subscriber/event/InsertEvent.d.ts +5 -0
  369. package/subscriber/event/InsertEvent.js.map +1 -1
  370. package/subscriber/event/QueryEvent.d.ts +50 -0
  371. package/subscriber/event/QueryEvent.js +4 -0
  372. package/subscriber/event/QueryEvent.js.map +1 -0
  373. package/typeorm-model-shim.js +61 -53
  374. package/util/DateUtils.js +5 -2
  375. package/util/DateUtils.js.map +1 -1
  376. package/util/OrmUtils.d.ts +6 -0
  377. package/util/OrmUtils.js +66 -0
  378. package/util/OrmUtils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/sqlite/SqliteDriver.ts"],"names":[],"mappings":"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","file":"SqliteDriver.js","sourcesContent":["import mkdirp from \"mkdirp\"\nimport path from \"path\"\nimport { DriverPackageNotInstalledError } from \"../../error/DriverPackageNotInstalledError\"\nimport { SqliteQueryRunner } from \"./SqliteQueryRunner\"\nimport { PlatformTools } from \"../../platform/PlatformTools\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { SqliteConnectionOptions } from \"./SqliteConnectionOptions\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { AbstractSqliteDriver } from \"../sqlite-abstract/AbstractSqliteDriver\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\nimport { filepathToName, isAbsolute } from \"../../util/PathUtils\"\n\n/**\n * Organizes communication with sqlite DBMS.\n */\nexport class SqliteDriver extends AbstractSqliteDriver {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: SqliteConnectionOptions\n\n /**\n * SQLite underlying library.\n */\n sqlite: any\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: DataSource) {\n super(connection)\n\n this.connection = connection\n this.options = connection.options as SqliteConnectionOptions\n this.database = this.options.database\n\n // load sqlite package\n this.loadDependencies()\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Closes connection with database.\n */\n async disconnect(): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.queryRunner = undefined\n this.databaseConnection.close((err: any) =>\n err ? fail(err) : ok(),\n )\n })\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode): QueryRunner {\n if (!this.queryRunner) this.queryRunner = new SqliteQueryRunner(this)\n\n return this.queryRunner\n }\n\n normalizeType(column: {\n type?: ColumnType\n length?: number | string\n precision?: number | null\n scale?: number\n }): string {\n if ((column.type as any) === Buffer) {\n return \"blob\"\n }\n\n return super.normalizeType(column)\n }\n\n async afterConnect(): Promise<void> {\n return this.attachDatabases()\n }\n\n /**\n * For SQLite, the database may be added in the decorator metadata. It will be a filepath to a database file.\n */\n buildTableName(\n tableName: string,\n _schema?: string,\n database?: string,\n ): string {\n if (!database) return tableName\n if (this.getAttachedDatabaseHandleByRelativePath(database))\n return `${this.getAttachedDatabaseHandleByRelativePath(\n database,\n )}.${tableName}`\n\n if (database === this.options.database) return tableName\n\n // we use the decorated name as supplied when deriving attach handle (ideally without non-portable absolute path)\n const identifierHash = filepathToName(database)\n // decorated name will be assumed relative to main database file when non absolute. Paths supplied as absolute won't be portable\n const absFilepath = isAbsolute(database)\n ? database\n : path.join(this.getMainDatabasePath(), database)\n\n this.attachedDatabases[database] = {\n attachFilepathAbsolute: absFilepath,\n attachFilepathRelative: database,\n attachHandle: identifierHash,\n }\n\n return `${identifierHash}.${tableName}`\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates connection with the database.\n */\n protected async createDatabaseConnection() {\n if (\n this.options.flags === undefined ||\n !(this.options.flags & this.sqlite.OPEN_URI)\n ) {\n await this.createDatabaseDirectory(this.options.database)\n }\n\n const databaseConnection: any = await new Promise((ok, fail) => {\n if (this.options.flags === undefined) {\n const connection = new this.sqlite.Database(\n this.options.database,\n (err: any) => {\n if (err) return fail(err)\n ok(connection)\n },\n )\n } else {\n const connection = new this.sqlite.Database(\n this.options.database,\n this.options.flags,\n (err: any) => {\n if (err) return fail(err)\n ok(connection)\n },\n )\n }\n })\n\n // Internal function to run a command on the connection and fail if an error occured.\n function run(line: string): Promise<void> {\n return new Promise((ok, fail) => {\n databaseConnection.run(line, (err: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n // in the options, if encryption key for SQLCipher is setted.\n // Must invoke key pragma before trying to do any other interaction with the database.\n if (this.options.key) {\n await run(`PRAGMA key = ${JSON.stringify(this.options.key)}`)\n }\n\n if (this.options.enableWAL) {\n await run(`PRAGMA journal_mode = WAL`)\n }\n\n if (\n this.options.busyTimeout &&\n typeof this.options.busyTimeout === \"number\" &&\n this.options.busyTimeout > 0\n ) {\n await run(`PRAGMA busy_timeout = ${this.options.busyTimeout}`)\n }\n\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete to work with sqlite.\n await run(`PRAGMA foreign_keys = ON`)\n\n return databaseConnection\n }\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n try {\n const sqlite = this.options.driver || PlatformTools.load(\"sqlite3\")\n this.sqlite = sqlite.verbose()\n } catch (e) {\n throw new DriverPackageNotInstalledError(\"SQLite\", \"sqlite3\")\n }\n }\n\n /**\n * Auto creates database directory if it does not exist.\n */\n protected async createDatabaseDirectory(fullPath: string): Promise<void> {\n await mkdirp(path.dirname(fullPath))\n }\n\n /**\n * Performs the attaching of the database files. The attachedDatabase should have been populated during calls to #buildTableName\n * during EntityMetadata production (see EntityMetadata#buildTablePath)\n *\n * https://sqlite.org/lang_attach.html\n */\n protected async attachDatabases() {\n // @todo - possibly check number of databases (but unqueriable at runtime sadly) - https://www.sqlite.org/limits.html#max_attached\n for await (const {\n attachHandle,\n attachFilepathAbsolute,\n } of Object.values(this.attachedDatabases)) {\n await this.createDatabaseDirectory(attachFilepathAbsolute)\n await this.connection.query(\n `ATTACH \"${attachFilepathAbsolute}\" AS \"${attachHandle}\"`,\n )\n }\n }\n\n protected getMainDatabasePath(): string {\n const optionsDb = this.options.database\n return path.dirname(\n isAbsolute(optionsDb)\n ? optionsDb\n : path.join(process.cwd(), optionsDb),\n )\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/sqlite/SqliteDriver.ts"],"names":[],"mappings":";;;;AAAA,4DAA2B;AAC3B,wDAAuB;AACvB,+FAA2F;AAC3F,2DAAuD;AACvD,gEAA4D;AAK5D,kFAA8E;AAE9E,oDAAiE;AAEjE;;GAEG;AACH,MAAa,YAAa,SAAQ,2CAAoB;IAelD,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,UAAsB;QAC9B,KAAK,CAAC,UAAU,CAAC,CAAA;QACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAkC,CAAA;QAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;QAErC,sBAAsB;QACtB,IAAI,CAAC,gBAAgB,EAAE,CAAA;IAC3B,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,UAAU;QACZ,OAAO,IAAI,OAAO,CAAO,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;YAClC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAA;YAC5B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE,CACvC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CACzB,CAAA;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,IAAqB;QACnC,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,WAAW,CAAA;IAC3B,CAAC;IAED,aAAa,CAAC,MAKb;QACG,IAAK,MAAM,CAAC,IAAY,KAAK,MAAM,EAAE;YACjC,OAAO,MAAM,CAAA;SAChB;QAED,OAAO,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,CAAC;IAED,KAAK,CAAC,YAAY;QACd,OAAO,IAAI,CAAC,eAAe,EAAE,CAAA;IACjC,CAAC;IAED;;OAEG;IACH,cAAc,CACV,SAAiB,EACjB,OAAgB,EAChB,QAAiB;QAEjB,IAAI,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAA;QAC/B,IAAI,IAAI,CAAC,uCAAuC,CAAC,QAAQ,CAAC;YACtD,OAAO,GAAG,IAAI,CAAC,uCAAuC,CAClD,QAAQ,CACX,IAAI,SAAS,EAAE,CAAA;QAEpB,IAAI,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ;YAAE,OAAO,SAAS,CAAA;QAExD,iHAAiH;QACjH,MAAM,cAAc,GAAG,IAAA,0BAAc,EAAC,QAAQ,CAAC,CAAA;QAC/C,gIAAgI;QAChI,MAAM,WAAW,GAAG,IAAA,sBAAU,EAAC,QAAQ,CAAC;YACpC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,QAAQ,CAAC,CAAA;QAErD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG;YAC/B,sBAAsB,EAAE,WAAW;YACnC,sBAAsB,EAAE,QAAQ;YAChC,YAAY,EAAE,cAAc;SAC/B,CAAA;QAED,OAAO,GAAG,cAAc,IAAI,SAAS,EAAE,CAAA;IAC3C,CAAC;IAED,4EAA4E;IAC5E,oBAAoB;IACpB,4EAA4E;IAE5E;;OAEG;IACO,KAAK,CAAC,wBAAwB;QACpC,IACI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS;YAChC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAC9C;YACE,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;SAC5D;QAED,MAAM,kBAAkB,GAAQ,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;YAC3D,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE;gBAClC,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,CAAC,GAAQ,EAAE,EAAE;oBACT,IAAI,GAAG;wBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;oBACzB,EAAE,CAAC,UAAU,CAAC,CAAA;gBAClB,CAAC,CACJ,CAAA;aACJ;iBAAM;gBACH,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,EACrB,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,CAAC,GAAQ,EAAE,EAAE;oBACT,IAAI,GAAG;wBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;oBACzB,EAAE,CAAC,UAAU,CAAC,CAAA;gBAClB,CAAC,CACJ,CAAA;aACJ;QACL,CAAC,CAAC,CAAA;QAEF,qFAAqF;QACrF,SAAS,GAAG,CAAC,IAAY;YACrB,OAAO,IAAI,OAAO,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;gBAC5B,kBAAkB,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAQ,EAAE,EAAE;oBACtC,IAAI,GAAG;wBAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;oBACzB,EAAE,EAAE,CAAA;gBACR,CAAC,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;QACN,CAAC;QACD,6DAA6D;QAC7D,sFAAsF;QACtF,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAClB,MAAM,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;SAChE;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACxB,MAAM,GAAG,CAAC,2BAA2B,CAAC,CAAA;SACzC;QAED,IACI,IAAI,CAAC,OAAO,CAAC,WAAW;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,KAAK,QAAQ;YAC5C,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,EAC9B;YACE,MAAM,GAAG,CAAC,yBAAyB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;SACjE;QAED,yFAAyF;QACzF,kEAAkE;QAClE,MAAM,GAAG,CAAC,0BAA0B,CAAC,CAAA;QAErC,OAAO,kBAAkB,CAAA;IAC7B,CAAC;IAED;;OAEG;IACO,gBAAgB;QACtB,IAAI;YACA,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,6BAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACnE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAA;SACjC;QAAC,OAAO,CAAC,EAAE;YACR,MAAM,IAAI,+DAA8B,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;SAChE;IACL,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,uBAAuB,CAAC,QAAgB;QACpD,MAAM,IAAA,gBAAM,EAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IACxC,CAAC;IAED;;;;;OAKG;IACO,KAAK,CAAC,eAAe;QAC3B,kIAAkI;QAClI,IAAI,KAAK,EAAE,MAAM,EACb,YAAY,EACZ,sBAAsB,GACzB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YACxC,MAAM,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAA;YAC1D,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,CACvB,WAAW,sBAAsB,SAAS,YAAY,GAAG,CAC5D,CAAA;SACJ;IACL,CAAC;IAES,mBAAmB;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;QACvC,OAAO,cAAI,CAAC,OAAO,CACf,IAAA,sBAAU,EAAC,SAAS,CAAC;YACjB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAC5C,CAAA;IACL,CAAC;CACJ;AA3ND,oCA2NC","file":"SqliteDriver.js","sourcesContent":["import mkdirp from \"mkdirp\"\nimport path from \"path\"\nimport { DriverPackageNotInstalledError } from \"../../error/DriverPackageNotInstalledError\"\nimport { SqliteQueryRunner } from \"./SqliteQueryRunner\"\nimport { PlatformTools } from \"../../platform/PlatformTools\"\nimport { DataSource } from \"../../data-source/DataSource\"\nimport { SqliteConnectionOptions } from \"./SqliteConnectionOptions\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { AbstractSqliteDriver } from \"../sqlite-abstract/AbstractSqliteDriver\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\nimport { filepathToName, isAbsolute } from \"../../util/PathUtils\"\n\n/**\n * Organizes communication with sqlite DBMS.\n */\nexport class SqliteDriver extends AbstractSqliteDriver {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: SqliteConnectionOptions\n\n /**\n * SQLite underlying library.\n */\n sqlite: any\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: DataSource) {\n super(connection)\n this.connection = connection\n this.options = connection.options as SqliteConnectionOptions\n this.database = this.options.database\n\n // load sqlite package\n this.loadDependencies()\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Closes connection with database.\n */\n async disconnect(): Promise<void> {\n return new Promise<void>((ok, fail) => {\n this.queryRunner = undefined\n this.databaseConnection.close((err: any) =>\n err ? fail(err) : ok(),\n )\n })\n }\n\n /**\n * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode): QueryRunner {\n if (!this.queryRunner) this.queryRunner = new SqliteQueryRunner(this)\n\n return this.queryRunner\n }\n\n normalizeType(column: {\n type?: ColumnType\n length?: number | string\n precision?: number | null\n scale?: number\n }): string {\n if ((column.type as any) === Buffer) {\n return \"blob\"\n }\n\n return super.normalizeType(column)\n }\n\n async afterConnect(): Promise<void> {\n return this.attachDatabases()\n }\n\n /**\n * For SQLite, the database may be added in the decorator metadata. It will be a filepath to a database file.\n */\n buildTableName(\n tableName: string,\n _schema?: string,\n database?: string,\n ): string {\n if (!database) return tableName\n if (this.getAttachedDatabaseHandleByRelativePath(database))\n return `${this.getAttachedDatabaseHandleByRelativePath(\n database,\n )}.${tableName}`\n\n if (database === this.options.database) return tableName\n\n // we use the decorated name as supplied when deriving attach handle (ideally without non-portable absolute path)\n const identifierHash = filepathToName(database)\n // decorated name will be assumed relative to main database file when non absolute. Paths supplied as absolute won't be portable\n const absFilepath = isAbsolute(database)\n ? database\n : path.join(this.getMainDatabasePath(), database)\n\n this.attachedDatabases[database] = {\n attachFilepathAbsolute: absFilepath,\n attachFilepathRelative: database,\n attachHandle: identifierHash,\n }\n\n return `${identifierHash}.${tableName}`\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates connection with the database.\n */\n protected async createDatabaseConnection() {\n if (\n this.options.flags === undefined ||\n !(this.options.flags & this.sqlite.OPEN_URI)\n ) {\n await this.createDatabaseDirectory(this.options.database)\n }\n\n const databaseConnection: any = await new Promise((ok, fail) => {\n if (this.options.flags === undefined) {\n const connection = new this.sqlite.Database(\n this.options.database,\n (err: any) => {\n if (err) return fail(err)\n ok(connection)\n },\n )\n } else {\n const connection = new this.sqlite.Database(\n this.options.database,\n this.options.flags,\n (err: any) => {\n if (err) return fail(err)\n ok(connection)\n },\n )\n }\n })\n\n // Internal function to run a command on the connection and fail if an error occured.\n function run(line: string): Promise<void> {\n return new Promise((ok, fail) => {\n databaseConnection.run(line, (err: any) => {\n if (err) return fail(err)\n ok()\n })\n })\n }\n // in the options, if encryption key for SQLCipher is setted.\n // Must invoke key pragma before trying to do any other interaction with the database.\n if (this.options.key) {\n await run(`PRAGMA key = ${JSON.stringify(this.options.key)}`)\n }\n\n if (this.options.enableWAL) {\n await run(`PRAGMA journal_mode = WAL`)\n }\n\n if (\n this.options.busyTimeout &&\n typeof this.options.busyTimeout === \"number\" &&\n this.options.busyTimeout > 0\n ) {\n await run(`PRAGMA busy_timeout = ${this.options.busyTimeout}`)\n }\n\n // we need to enable foreign keys in sqlite to make sure all foreign key related features\n // working properly. this also makes onDelete to work with sqlite.\n await run(`PRAGMA foreign_keys = ON`)\n\n return databaseConnection\n }\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n try {\n const sqlite = this.options.driver || PlatformTools.load(\"sqlite3\")\n this.sqlite = sqlite.verbose()\n } catch (e) {\n throw new DriverPackageNotInstalledError(\"SQLite\", \"sqlite3\")\n }\n }\n\n /**\n * Auto creates database directory if it does not exist.\n */\n protected async createDatabaseDirectory(fullPath: string): Promise<void> {\n await mkdirp(path.dirname(fullPath))\n }\n\n /**\n * Performs the attaching of the database files. The attachedDatabase should have been populated during calls to #buildTableName\n * during EntityMetadata production (see EntityMetadata#buildTablePath)\n *\n * https://sqlite.org/lang_attach.html\n */\n protected async attachDatabases() {\n // @todo - possibly check number of databases (but unqueriable at runtime sadly) - https://www.sqlite.org/limits.html#max_attached\n for await (const {\n attachHandle,\n attachFilepathAbsolute,\n } of Object.values(this.attachedDatabases)) {\n await this.createDatabaseDirectory(attachFilepathAbsolute)\n await this.connection.query(\n `ATTACH \"${attachFilepathAbsolute}\" AS \"${attachHandle}\"`,\n )\n }\n }\n\n protected getMainDatabasePath(): string {\n const optionsDb = this.options.database\n return path.dirname(\n isAbsolute(optionsDb)\n ? optionsDb\n : path.join(process.cwd(), optionsDb),\n )\n }\n}\n"],"sourceRoot":"../.."}
@@ -7,6 +7,7 @@ const AbstractSqliteQueryRunner_1 = require("../sqlite-abstract/AbstractSqliteQu
7
7
  const Broadcaster_1 = require("../../subscriber/Broadcaster");
8
8
  const ConnectionIsNotSetError_1 = require("../../error/ConnectionIsNotSetError");
9
9
  const QueryResult_1 = require("../../query-runner/QueryResult");
10
+ const BroadcasterResult_1 = require("../../subscriber/BroadcasterResult");
10
11
  /**
11
12
  * Runs queries on a single sqlite database connection.
12
13
  *
@@ -44,63 +45,77 @@ class SqliteQueryRunner extends AbstractSqliteQueryRunner_1.AbstractSqliteQueryR
44
45
  const connection = this.driver.connection;
45
46
  const options = connection.options;
46
47
  const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
48
+ const broadcasterResult = new BroadcasterResult_1.BroadcasterResult();
49
+ const broadcaster = this.broadcaster;
50
+ broadcaster.broadcastBeforeQueryEvent(broadcasterResult, query, parameters);
47
51
  if (!connection.isInitialized) {
48
52
  throw new ConnectionIsNotSetError_1.ConnectionIsNotSetError("sqlite");
49
53
  }
50
54
  return new Promise(async (ok, fail) => {
51
- const databaseConnection = await this.connect();
52
- this.driver.connection.logger.logQuery(query, parameters, this);
53
- const queryStartTime = +new Date();
54
- const isInsertQuery = query.startsWith("INSERT ");
55
- const isDeleteQuery = query.startsWith("DELETE ");
56
- const isUpdateQuery = query.startsWith("UPDATE ");
57
- const execute = async () => {
58
- if (isInsertQuery || isDeleteQuery || isUpdateQuery) {
59
- await databaseConnection.run(query, parameters, handler);
60
- }
61
- else {
62
- await databaseConnection.all(query, parameters, handler);
63
- }
64
- };
65
- const handler = function (err, rows) {
66
- if (err && err.toString().indexOf("SQLITE_BUSY:") !== -1) {
67
- if (typeof options.busyErrorRetry === "number" &&
68
- options.busyErrorRetry > 0) {
69
- setTimeout(execute, options.busyErrorRetry);
70
- return;
71
- }
72
- }
73
- // log slow queries if maxQueryExecution time is set
74
- const queryEndTime = +new Date();
75
- const queryExecutionTime = queryEndTime - queryStartTime;
76
- if (maxQueryExecutionTime &&
77
- queryExecutionTime > maxQueryExecutionTime)
78
- connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
79
- if (err) {
80
- connection.logger.logQueryError(err, query, parameters, this);
81
- fail(new QueryFailedError_1.QueryFailedError(query, parameters, err));
82
- }
83
- else {
84
- const result = new QueryResult_1.QueryResult();
85
- if (isInsertQuery) {
86
- result.raw = this["lastID"];
55
+ try {
56
+ const databaseConnection = await this.connect();
57
+ this.driver.connection.logger.logQuery(query, parameters, this);
58
+ const queryStartTime = +new Date();
59
+ const isInsertQuery = query.startsWith("INSERT ");
60
+ const isDeleteQuery = query.startsWith("DELETE ");
61
+ const isUpdateQuery = query.startsWith("UPDATE ");
62
+ const execute = async () => {
63
+ if (isInsertQuery || isDeleteQuery || isUpdateQuery) {
64
+ await databaseConnection.run(query, parameters, handler);
87
65
  }
88
66
  else {
89
- result.raw = rows;
67
+ await databaseConnection.all(query, parameters, handler);
90
68
  }
91
- if (Array.isArray(rows)) {
92
- result.records = rows;
69
+ };
70
+ const handler = function (err, rows) {
71
+ if (err && err.toString().indexOf("SQLITE_BUSY:") !== -1) {
72
+ if (typeof options.busyErrorRetry === "number" &&
73
+ options.busyErrorRetry > 0) {
74
+ setTimeout(execute, options.busyErrorRetry);
75
+ return;
76
+ }
93
77
  }
94
- result.affected = this["changes"];
95
- if (useStructuredResult) {
96
- ok(result);
78
+ // log slow queries if maxQueryExecution time is set
79
+ const queryEndTime = +new Date();
80
+ const queryExecutionTime = queryEndTime - queryStartTime;
81
+ if (maxQueryExecutionTime &&
82
+ queryExecutionTime > maxQueryExecutionTime)
83
+ connection.logger.logQuerySlow(queryExecutionTime, query, parameters, this);
84
+ if (err) {
85
+ connection.logger.logQueryError(err, query, parameters, this);
86
+ broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, false, undefined, undefined, err);
87
+ return fail(new QueryFailedError_1.QueryFailedError(query, parameters, err));
97
88
  }
98
89
  else {
99
- ok(result.raw);
90
+ const result = new QueryResult_1.QueryResult();
91
+ if (isInsertQuery) {
92
+ result.raw = this["lastID"];
93
+ }
94
+ else {
95
+ result.raw = rows;
96
+ }
97
+ broadcaster.broadcastAfterQueryEvent(broadcasterResult, query, parameters, true, queryExecutionTime, result.raw, undefined);
98
+ if (Array.isArray(rows)) {
99
+ result.records = rows;
100
+ }
101
+ result.affected = this["changes"];
102
+ if (useStructuredResult) {
103
+ ok(result);
104
+ }
105
+ else {
106
+ ok(result.raw);
107
+ }
100
108
  }
101
- }
102
- };
103
- await execute();
109
+ };
110
+ await execute();
111
+ }
112
+ catch (err) {
113
+ fail(err);
114
+ }
115
+ finally {
116
+ await broadcasterResult.wait();
117
+ console.log("Finally", query, broadcasterResult.count);
118
+ }
104
119
  });
105
120
  }
106
121
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/driver/sqlite/SqliteQueryRunner.ts"],"names":[],"mappings":";;;AAAA,iGAA6F;AAC7F,mEAA+D;AAC/D,4FAAwF;AAGxF,8DAA0D;AAC1D,iFAA6E;AAC7E,gEAA4D;AAE5D;;;;;GAKG;AACH,MAAa,iBAAkB,SAAQ,qDAAyB;IAM5D,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YAAY,MAAoB;QAC5B,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAA;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACjB,MAAM,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAA;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAChB,MAAM,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CACD,KAAa,EACb,UAAkB,EAClB,mBAAmB,GAAG,KAAK;QAE3B,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,iEAA+B,EAAE,CAAA;QAEhE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAA;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAkC,CAAA;QAC7D,MAAM,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAA;QAEvE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YAC3B,MAAM,IAAI,iDAAuB,CAAC,QAAQ,CAAC,CAAA;SAC9C;QAED,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;YAClC,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;YAC/C,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;YAC/D,MAAM,cAAc,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;YAClC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;YACjD,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;YACjD,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;YAEjD,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;gBACvB,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,EAAE;oBACjD,MAAM,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;iBAC3D;qBAAM;oBACH,MAAM,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;iBAC3D;YACL,CAAC,CAAA;YAED,MAAM,OAAO,GAAG,UAAU,GAAQ,EAAE,IAAS;gBACzC,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;oBACtD,IACI,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ;wBAC1C,OAAO,CAAC,cAAc,GAAG,CAAC,EAC5B;wBACE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;wBAC3C,OAAM;qBACT;iBACJ;gBAED,oDAAoD;gBACpD,MAAM,YAAY,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;gBAChC,MAAM,kBAAkB,GAAG,YAAY,GAAG,cAAc,CAAA;gBACxD,IACI,qBAAqB;oBACrB,kBAAkB,GAAG,qBAAqB;oBAE1C,UAAU,CAAC,MAAM,CAAC,YAAY,CAC1B,kBAAkB,EAClB,KAAK,EACL,UAAU,EACV,IAAI,CACP,CAAA;gBAEL,IAAI,GAAG,EAAE;oBACL,UAAU,CAAC,MAAM,CAAC,aAAa,CAC3B,GAAG,EACH,KAAK,EACL,UAAU,EACV,IAAI,CACP,CAAA;oBACD,IAAI,CAAC,IAAI,mCAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAA;iBACrD;qBAAM;oBACH,MAAM,MAAM,GAAG,IAAI,yBAAW,EAAE,CAAA;oBAEhC,IAAI,aAAa,EAAE;wBACf,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;qBAC9B;yBAAM;wBACH,MAAM,CAAC,GAAG,GAAG,IAAI,CAAA;qBACpB;oBAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBACrB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;qBACxB;oBAED,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;oBAEjC,IAAI,mBAAmB,EAAE;wBACrB,EAAE,CAAC,MAAM,CAAC,CAAA;qBACb;yBAAM;wBACH,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;qBACjB;iBACJ;YACL,CAAC,CAAA;YAED,MAAM,OAAO,EAAE,CAAA;QACnB,CAAC,CAAC,CAAA;IACN,CAAC;CACJ;AA5HD,8CA4HC","file":"SqliteQueryRunner.js","sourcesContent":["import { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { SqliteConnectionOptions } from \"./SqliteConnectionOptions\"\nimport { SqliteDriver } from \"./SqliteDriver\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { ConnectionIsNotSetError } from \"../../error/ConnectionIsNotSetError\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\n\n/**\n * Runs queries on a single sqlite database connection.\n *\n * Does not support compose primary keys with autoincrement field.\n * todo: need to throw exception for this case.\n */\nexport class SqliteQueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n driver: SqliteDriver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: SqliteDriver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n /**\n * Executes a given SQL query.\n */\n query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const connection = this.driver.connection\n const options = connection.options as SqliteConnectionOptions\n const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime\n\n if (!connection.isInitialized) {\n throw new ConnectionIsNotSetError(\"sqlite\")\n }\n\n return new Promise(async (ok, fail) => {\n const databaseConnection = await this.connect()\n this.driver.connection.logger.logQuery(query, parameters, this)\n const queryStartTime = +new Date()\n const isInsertQuery = query.startsWith(\"INSERT \")\n const isDeleteQuery = query.startsWith(\"DELETE \")\n const isUpdateQuery = query.startsWith(\"UPDATE \")\n\n const execute = async () => {\n if (isInsertQuery || isDeleteQuery || isUpdateQuery) {\n await databaseConnection.run(query, parameters, handler)\n } else {\n await databaseConnection.all(query, parameters, handler)\n }\n }\n\n const handler = function (err: any, rows: any) {\n if (err && err.toString().indexOf(\"SQLITE_BUSY:\") !== -1) {\n if (\n typeof options.busyErrorRetry === \"number\" &&\n options.busyErrorRetry > 0\n ) {\n setTimeout(execute, options.busyErrorRetry)\n return\n }\n }\n\n // log slow queries if maxQueryExecution time is set\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n if (err) {\n connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n fail(new QueryFailedError(query, parameters, err))\n } else {\n const result = new QueryResult()\n\n if (isInsertQuery) {\n result.raw = this[\"lastID\"]\n } else {\n result.raw = rows\n }\n\n if (Array.isArray(rows)) {\n result.records = rows\n }\n\n result.affected = this[\"changes\"]\n\n if (useStructuredResult) {\n ok(result)\n } else {\n ok(result.raw)\n }\n }\n }\n\n await execute()\n })\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../../src/driver/sqlite/SqliteQueryRunner.ts"],"names":[],"mappings":"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","file":"SqliteQueryRunner.js","sourcesContent":["import { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { SqliteConnectionOptions } from \"./SqliteConnectionOptions\"\nimport { SqliteDriver } from \"./SqliteDriver\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { ConnectionIsNotSetError } from \"../../error/ConnectionIsNotSetError\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\n\n/**\n * Runs queries on a single sqlite database connection.\n *\n * Does not support compose primary keys with autoincrement field.\n * todo: need to throw exception for this case.\n */\nexport class SqliteQueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n driver: SqliteDriver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: SqliteDriver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n /**\n * Executes a given SQL query.\n */\n query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const connection = this.driver.connection\n const options = connection.options as SqliteConnectionOptions\n const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime\n const broadcasterResult = new BroadcasterResult()\n const broadcaster = this.broadcaster\n\n broadcaster.broadcastBeforeQueryEvent(\n broadcasterResult,\n query,\n parameters,\n )\n\n if (!connection.isInitialized) {\n throw new ConnectionIsNotSetError(\"sqlite\")\n }\n\n return new Promise(async (ok, fail) => {\n try {\n const databaseConnection = await this.connect()\n this.driver.connection.logger.logQuery(query, parameters, this)\n const queryStartTime = +new Date()\n const isInsertQuery = query.startsWith(\"INSERT \")\n const isDeleteQuery = query.startsWith(\"DELETE \")\n const isUpdateQuery = query.startsWith(\"UPDATE \")\n\n const execute = async () => {\n if (isInsertQuery || isDeleteQuery || isUpdateQuery) {\n await databaseConnection.run(query, parameters, handler)\n } else {\n await databaseConnection.all(query, parameters, handler)\n }\n }\n\n const handler = function (err: any, rows: any) {\n if (err && err.toString().indexOf(\"SQLITE_BUSY:\") !== -1) {\n if (\n typeof options.busyErrorRetry === \"number\" &&\n options.busyErrorRetry > 0\n ) {\n setTimeout(execute, options.busyErrorRetry)\n return\n }\n }\n\n // log slow queries if maxQueryExecution time is set\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n if (err) {\n connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n undefined,\n undefined,\n err,\n )\n\n return fail(\n new QueryFailedError(query, parameters, err),\n )\n } else {\n const result = new QueryResult()\n\n if (isInsertQuery) {\n result.raw = this[\"lastID\"]\n } else {\n result.raw = rows\n }\n\n broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n result.raw,\n undefined,\n )\n\n if (Array.isArray(rows)) {\n result.records = rows\n }\n\n result.affected = this[\"changes\"]\n\n if (useStructuredResult) {\n ok(result)\n } else {\n ok(result.raw)\n }\n }\n }\n\n await execute()\n } catch (err) {\n fail(err)\n } finally {\n await broadcasterResult.wait()\n console.log(\"Finally\", query, broadcasterResult.count)\n }\n })\n }\n}\n"],"sourceRoot":"../.."}
@@ -67,6 +67,7 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
67
67
  throw err;
68
68
  }
69
69
  if (this.transactionDepth === 0) {
70
+ this.transactionDepth += 1;
70
71
  if (isolationLevel) {
71
72
  if (isolationLevel === "READ UNCOMMITTED") {
72
73
  await this.query("PRAGMA read_uncommitted = true");
@@ -78,9 +79,9 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
78
79
  await this.query("BEGIN TRANSACTION");
79
80
  }
80
81
  else {
81
- await this.query(`SAVEPOINT typeorm_${this.transactionDepth}`);
82
+ this.transactionDepth += 1;
83
+ await this.query(`SAVEPOINT typeorm_${this.transactionDepth - 1}`);
82
84
  }
83
- this.transactionDepth += 1;
84
85
  await this.broadcaster.broadcast("AfterTransactionStart");
85
86
  }
86
87
  /**
@@ -92,13 +93,14 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
92
93
  throw new TransactionNotStartedError_1.TransactionNotStartedError();
93
94
  await this.broadcaster.broadcast("BeforeTransactionCommit");
94
95
  if (this.transactionDepth > 1) {
95
- await this.query(`RELEASE SAVEPOINT typeorm_${this.transactionDepth - 1}`);
96
+ this.transactionDepth -= 1;
97
+ await this.query(`RELEASE SAVEPOINT typeorm_${this.transactionDepth}`);
96
98
  }
97
99
  else {
100
+ this.transactionDepth -= 1;
98
101
  await this.query("COMMIT");
99
102
  this.isTransactionActive = false;
100
103
  }
101
- this.transactionDepth -= 1;
102
104
  await this.broadcaster.broadcast("AfterTransactionCommit");
103
105
  }
104
106
  /**
@@ -110,13 +112,14 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
110
112
  throw new TransactionNotStartedError_1.TransactionNotStartedError();
111
113
  await this.broadcaster.broadcast("BeforeTransactionRollback");
112
114
  if (this.transactionDepth > 1) {
113
- await this.query(`ROLLBACK TO SAVEPOINT typeorm_${this.transactionDepth - 1}`);
115
+ this.transactionDepth -= 1;
116
+ await this.query(`ROLLBACK TO SAVEPOINT typeorm_${this.transactionDepth}`);
114
117
  }
115
118
  else {
119
+ this.transactionDepth -= 1;
116
120
  await this.query("ROLLBACK");
117
121
  this.isTransactionActive = false;
118
122
  }
119
- this.transactionDepth -= 1;
120
123
  await this.broadcaster.broadcast("AfterTransactionRollback");
121
124
  }
122
125
  /**
@@ -977,16 +980,7 @@ class AbstractSqliteQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
977
980
  }
978
981
  }
979
982
  if (tableColumn.type === "varchar") {
980
- // Check if this is an enum
981
- const enumMatch = sql.match(new RegExp('"(' +
982
- tableColumn.name +
983
- ")\" varchar CHECK\\s*\\(\\s*\"\\1\"\\s+IN\\s*\\(('[^']+'(?:\\s*,\\s*'[^']+')+)\\s*\\)\\s*\\)"));
984
- if (enumMatch) {
985
- // This is an enum
986
- tableColumn.enum = enumMatch[2]
987
- .substr(1, enumMatch[2].length - 2)
988
- .split("','");
989
- }
983
+ tableColumn.enum = OrmUtils_1.OrmUtils.parseSqlCheckExpression(sql, tableColumn.name);
990
984
  }
991
985
  // parse datatype and attempt to retrieve length, precision and scale
992
986
  let pos = tableColumn.type.indexOf("(");