typeorm 0.2.42-dev.f8154eb → 0.2.42

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 (310) hide show
  1. package/browser/common/DeepPartial.d.ts +3 -3
  2. package/browser/common/DeepPartial.js.map +1 -1
  3. package/browser/connection/BaseConnectionOptions.js.map +1 -1
  4. package/browser/connection/Connection.js +33 -24
  5. package/browser/connection/Connection.js.map +1 -1
  6. package/browser/connection/ConnectionOptionsReader.js +3 -1
  7. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  8. package/browser/decorator/listeners/AfterRecover.d.ts +4 -0
  9. package/browser/decorator/listeners/AfterRecover.js +16 -0
  10. package/browser/decorator/listeners/AfterRecover.js.map +1 -0
  11. package/browser/decorator/listeners/AfterSoftRemove.d.ts +4 -0
  12. package/browser/decorator/listeners/AfterSoftRemove.js +16 -0
  13. package/browser/decorator/listeners/AfterSoftRemove.js.map +1 -0
  14. package/browser/decorator/listeners/BeforeRecover.d.ts +4 -0
  15. package/browser/decorator/listeners/BeforeRecover.js +16 -0
  16. package/browser/decorator/listeners/BeforeRecover.js.map +1 -0
  17. package/browser/decorator/listeners/BeforeSoftRemove.d.ts +4 -0
  18. package/browser/decorator/listeners/BeforeSoftRemove.js +16 -0
  19. package/browser/decorator/listeners/BeforeSoftRemove.js.map +1 -0
  20. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +1 -1
  21. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  22. package/browser/driver/better-sqlite3/BetterSqlite3Driver.d.ts +14 -1
  23. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +87 -4
  24. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  25. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +10 -0
  26. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +64 -1
  27. package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  28. package/browser/driver/capacitor/CapacitorQueryRunner.d.ts +8 -0
  29. package/browser/driver/capacitor/CapacitorQueryRunner.js +30 -0
  30. package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  31. package/browser/driver/cordova/CordovaQueryRunner.d.ts +8 -0
  32. package/browser/driver/cordova/CordovaQueryRunner.js +30 -0
  33. package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
  34. package/browser/driver/expo/ExpoQueryRunner.d.ts +8 -0
  35. package/browser/driver/expo/ExpoQueryRunner.js +30 -0
  36. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  37. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +1 -1
  38. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  39. package/browser/driver/mongodb/MongoQueryRunner.d.ts +8 -0
  40. package/browser/driver/mongodb/MongoQueryRunner.js +20 -0
  41. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  42. package/browser/driver/nativescript/NativescriptQueryRunner.d.ts +8 -0
  43. package/browser/driver/nativescript/NativescriptQueryRunner.js +30 -0
  44. package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  45. package/browser/driver/postgres/PostgresQueryRunner.js +37 -13
  46. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  47. package/browser/driver/react-native/ReactNativeQueryRunner.d.ts +8 -0
  48. package/browser/driver/react-native/ReactNativeQueryRunner.js +30 -0
  49. package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  50. package/browser/driver/sqlite/SqliteDriver.d.ts +13 -0
  51. package/browser/driver/sqlite/SqliteDriver.js +84 -1
  52. package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
  53. package/browser/driver/sqlite/SqliteQueryRunner.d.ts +8 -0
  54. package/browser/driver/sqlite/SqliteQueryRunner.js +30 -0
  55. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  56. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +13 -0
  57. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +25 -2
  58. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  59. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +11 -1
  60. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +118 -57
  61. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  62. package/browser/driver/sqljs/SqljsQueryRunner.d.ts +8 -0
  63. package/browser/driver/sqljs/SqljsQueryRunner.js +30 -0
  64. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  65. package/browser/entity-manager/EntityManager.js +1 -11
  66. package/browser/entity-manager/EntityManager.js.map +1 -1
  67. package/browser/entity-manager/MongoEntityManager.d.ts +2 -0
  68. package/browser/entity-manager/MongoEntityManager.js +35 -4
  69. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  70. package/browser/entity-schema/EntitySchemaRelationOptions.d.ts +6 -0
  71. package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  72. package/browser/entity-schema/EntitySchemaTransformer.js +1 -0
  73. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  74. package/browser/find-options/operator/Not.d.ts +1 -1
  75. package/browser/find-options/operator/Not.js +1 -1
  76. package/browser/find-options/operator/Not.js.map +1 -1
  77. package/browser/index.d.ts +4 -0
  78. package/browser/index.js +4 -0
  79. package/browser/index.js.map +1 -1
  80. package/browser/metadata/EntityMetadata.d.ts +16 -0
  81. package/browser/metadata/EntityMetadata.js +16 -0
  82. package/browser/metadata/EntityMetadata.js.map +1 -1
  83. package/browser/metadata/types/EventListenerTypes.d.ts +5 -1
  84. package/browser/metadata/types/EventListenerTypes.js +4 -0
  85. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  86. package/browser/metadata-builder/EntityMetadataBuilder.js +4 -0
  87. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  88. package/browser/metadata-builder/EntityMetadataValidator.js +1 -1
  89. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  90. package/browser/migration/MigrationExecutor.js +37 -25
  91. package/browser/migration/MigrationExecutor.js.map +1 -1
  92. package/browser/persistence/SubjectExecutor.d.ts +4 -2
  93. package/browser/persistence/SubjectExecutor.js +105 -13
  94. package/browser/persistence/SubjectExecutor.js.map +1 -1
  95. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +1 -1
  96. package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  97. package/browser/platform/PlatformTools.d.ts +1 -0
  98. package/browser/platform/PlatformTools.js +5 -0
  99. package/browser/platform/PlatformTools.js.map +1 -1
  100. package/browser/query-builder/InsertQueryBuilder.js +11 -2
  101. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  102. package/browser/query-builder/SelectQueryBuilder.d.ts +9 -0
  103. package/browser/query-builder/SelectQueryBuilder.js +27 -20
  104. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  105. package/browser/query-builder/SoftDeleteQueryBuilder.js +44 -30
  106. package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  107. package/browser/query-builder/relation-id/RelationIdLoader.js +9 -9
  108. package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  109. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +13 -0
  110. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +94 -50
  111. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  112. package/browser/query-runner/BaseQueryRunner.d.ts +8 -0
  113. package/browser/query-runner/BaseQueryRunner.js +20 -0
  114. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  115. package/browser/query-runner/QueryRunner.d.ts +8 -0
  116. package/browser/query-runner/QueryRunner.js.map +1 -1
  117. package/browser/repository/TreeRepository.js +2 -1
  118. package/browser/repository/TreeRepository.js.map +1 -1
  119. package/browser/schema-builder/RdbmsSchemaBuilder.js +36 -30
  120. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  121. package/browser/subscriber/Broadcaster.d.ts +40 -0
  122. package/browser/subscriber/Broadcaster.js +191 -31
  123. package/browser/subscriber/Broadcaster.js.map +1 -1
  124. package/browser/subscriber/EntitySubscriberInterface.d.ts +18 -0
  125. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  126. package/browser/subscriber/event/RecoverEvent.d.ts +6 -0
  127. package/browser/subscriber/event/RecoverEvent.js +3 -0
  128. package/browser/subscriber/event/RecoverEvent.js.map +1 -0
  129. package/browser/subscriber/event/SoftRemoveEvent.d.ts +6 -0
  130. package/browser/subscriber/event/SoftRemoveEvent.js +3 -0
  131. package/browser/subscriber/event/SoftRemoveEvent.js.map +1 -0
  132. package/browser/util/PathUtils.d.ts +10 -0
  133. package/browser/util/PathUtils.js +28 -0
  134. package/browser/util/PathUtils.js.map +1 -0
  135. package/browser/util/RandomGenerator.d.ts +0 -4
  136. package/browser/util/RandomGenerator.js +0 -9
  137. package/browser/util/RandomGenerator.js.map +1 -1
  138. package/cli.js +0 -0
  139. package/commands/CacheClearCommand.js +3 -3
  140. package/commands/CacheClearCommand.js.map +1 -1
  141. package/commands/CommandUtils.d.ts +4 -0
  142. package/commands/CommandUtils.js +10 -0
  143. package/commands/CommandUtils.js.map +1 -1
  144. package/commands/EntityCreateCommand.js +2 -2
  145. package/commands/EntityCreateCommand.js.map +1 -1
  146. package/commands/InitCommand.js +2 -2
  147. package/commands/InitCommand.js.map +1 -1
  148. package/commands/MigrationCreateCommand.d.ts +2 -0
  149. package/commands/MigrationCreateCommand.js +9 -3
  150. package/commands/MigrationCreateCommand.js.map +1 -1
  151. package/commands/MigrationGenerateCommand.d.ts +2 -0
  152. package/commands/MigrationGenerateCommand.js +9 -3
  153. package/commands/MigrationGenerateCommand.js.map +1 -1
  154. package/commands/MigrationRevertCommand.js +2 -3
  155. package/commands/MigrationRevertCommand.js.map +1 -1
  156. package/commands/MigrationRunCommand.js +2 -3
  157. package/commands/MigrationRunCommand.js.map +1 -1
  158. package/commands/MigrationShowCommand.js +5 -7
  159. package/commands/MigrationShowCommand.js.map +1 -1
  160. package/commands/QueryCommand.js +1 -2
  161. package/commands/QueryCommand.js.map +1 -1
  162. package/commands/SchemaDropCommand.js +2 -2
  163. package/commands/SchemaDropCommand.js.map +1 -1
  164. package/commands/SchemaLogCommand.js +2 -2
  165. package/commands/SchemaLogCommand.js.map +1 -1
  166. package/commands/SchemaSyncCommand.js +2 -2
  167. package/commands/SchemaSyncCommand.js.map +1 -1
  168. package/commands/SubscriberCreateCommand.js +3 -3
  169. package/commands/SubscriberCreateCommand.js.map +1 -1
  170. package/common/DeepPartial.d.ts +3 -3
  171. package/common/DeepPartial.js.map +1 -1
  172. package/connection/BaseConnectionOptions.js.map +1 -1
  173. package/connection/Connection.js +33 -24
  174. package/connection/Connection.js.map +1 -1
  175. package/connection/ConnectionOptionsReader.js +3 -1
  176. package/connection/ConnectionOptionsReader.js.map +1 -1
  177. package/decorator/listeners/AfterRecover.d.ts +4 -0
  178. package/decorator/listeners/AfterRecover.js +20 -0
  179. package/decorator/listeners/AfterRecover.js.map +1 -0
  180. package/decorator/listeners/AfterSoftRemove.d.ts +4 -0
  181. package/decorator/listeners/AfterSoftRemove.js +20 -0
  182. package/decorator/listeners/AfterSoftRemove.js.map +1 -0
  183. package/decorator/listeners/BeforeRecover.d.ts +4 -0
  184. package/decorator/listeners/BeforeRecover.js +20 -0
  185. package/decorator/listeners/BeforeRecover.js.map +1 -0
  186. package/decorator/listeners/BeforeSoftRemove.d.ts +4 -0
  187. package/decorator/listeners/BeforeSoftRemove.js +20 -0
  188. package/decorator/listeners/BeforeSoftRemove.js.map +1 -0
  189. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +1 -1
  190. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  191. package/driver/better-sqlite3/BetterSqlite3Driver.d.ts +14 -1
  192. package/driver/better-sqlite3/BetterSqlite3Driver.js +86 -3
  193. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  194. package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +10 -0
  195. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +63 -0
  196. package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
  197. package/driver/capacitor/CapacitorQueryRunner.d.ts +8 -0
  198. package/driver/capacitor/CapacitorQueryRunner.js +30 -0
  199. package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
  200. package/driver/cordova/CordovaQueryRunner.d.ts +8 -0
  201. package/driver/cordova/CordovaQueryRunner.js +30 -0
  202. package/driver/cordova/CordovaQueryRunner.js.map +1 -1
  203. package/driver/expo/ExpoQueryRunner.d.ts +8 -0
  204. package/driver/expo/ExpoQueryRunner.js +30 -0
  205. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  206. package/driver/mongodb/MongoConnectionOptions.d.ts +1 -1
  207. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  208. package/driver/mongodb/MongoQueryRunner.d.ts +8 -0
  209. package/driver/mongodb/MongoQueryRunner.js +20 -0
  210. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  211. package/driver/nativescript/NativescriptQueryRunner.d.ts +8 -0
  212. package/driver/nativescript/NativescriptQueryRunner.js +30 -0
  213. package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
  214. package/driver/postgres/PostgresQueryRunner.js +37 -13
  215. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  216. package/driver/react-native/ReactNativeQueryRunner.d.ts +8 -0
  217. package/driver/react-native/ReactNativeQueryRunner.js +30 -0
  218. package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
  219. package/driver/sqlite/SqliteDriver.d.ts +13 -0
  220. package/driver/sqlite/SqliteDriver.js +83 -0
  221. package/driver/sqlite/SqliteDriver.js.map +1 -1
  222. package/driver/sqlite/SqliteQueryRunner.d.ts +8 -0
  223. package/driver/sqlite/SqliteQueryRunner.js +30 -0
  224. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  225. package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +13 -0
  226. package/driver/sqlite-abstract/AbstractSqliteDriver.js +25 -2
  227. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  228. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +11 -1
  229. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +118 -57
  230. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  231. package/driver/sqljs/SqljsQueryRunner.d.ts +8 -0
  232. package/driver/sqljs/SqljsQueryRunner.js +30 -0
  233. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  234. package/entity-manager/EntityManager.js +1 -11
  235. package/entity-manager/EntityManager.js.map +1 -1
  236. package/entity-manager/MongoEntityManager.d.ts +2 -0
  237. package/entity-manager/MongoEntityManager.js +35 -4
  238. package/entity-manager/MongoEntityManager.js.map +1 -1
  239. package/entity-schema/EntitySchemaRelationOptions.d.ts +6 -0
  240. package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  241. package/entity-schema/EntitySchemaTransformer.js +1 -0
  242. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  243. package/find-options/operator/Not.d.ts +1 -1
  244. package/find-options/operator/Not.js +1 -1
  245. package/find-options/operator/Not.js.map +1 -1
  246. package/index.d.ts +4 -0
  247. package/index.js +4 -0
  248. package/index.js.map +1 -1
  249. package/index.mjs +8 -0
  250. package/metadata/EntityMetadata.d.ts +16 -0
  251. package/metadata/EntityMetadata.js +16 -0
  252. package/metadata/EntityMetadata.js.map +1 -1
  253. package/metadata/types/EventListenerTypes.d.ts +5 -1
  254. package/metadata/types/EventListenerTypes.js +4 -0
  255. package/metadata/types/EventListenerTypes.js.map +1 -1
  256. package/metadata-builder/EntityMetadataBuilder.js +4 -0
  257. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  258. package/metadata-builder/EntityMetadataValidator.js +1 -1
  259. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  260. package/migration/MigrationExecutor.js +37 -25
  261. package/migration/MigrationExecutor.js.map +1 -1
  262. package/package.json +248 -1
  263. package/persistence/SubjectExecutor.d.ts +4 -2
  264. package/persistence/SubjectExecutor.js +105 -13
  265. package/persistence/SubjectExecutor.js.map +1 -1
  266. package/persistence/tree/MaterializedPathSubjectExecutor.js +1 -1
  267. package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
  268. package/platform/PlatformTools.d.ts +1 -0
  269. package/platform/PlatformTools.js +5 -0
  270. package/platform/PlatformTools.js.map +1 -1
  271. package/query-builder/InsertQueryBuilder.js +11 -2
  272. package/query-builder/InsertQueryBuilder.js.map +1 -1
  273. package/query-builder/SelectQueryBuilder.d.ts +9 -0
  274. package/query-builder/SelectQueryBuilder.js +27 -20
  275. package/query-builder/SelectQueryBuilder.js.map +1 -1
  276. package/query-builder/SoftDeleteQueryBuilder.js +44 -30
  277. package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
  278. package/query-builder/relation-id/RelationIdLoader.js +9 -9
  279. package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
  280. package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +13 -0
  281. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +94 -50
  282. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  283. package/query-runner/BaseQueryRunner.d.ts +8 -0
  284. package/query-runner/BaseQueryRunner.js +20 -0
  285. package/query-runner/BaseQueryRunner.js.map +1 -1
  286. package/query-runner/QueryRunner.d.ts +8 -0
  287. package/query-runner/QueryRunner.js.map +1 -1
  288. package/repository/TreeRepository.js +2 -1
  289. package/repository/TreeRepository.js.map +1 -1
  290. package/schema-builder/RdbmsSchemaBuilder.js +36 -30
  291. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  292. package/subscriber/Broadcaster.d.ts +40 -0
  293. package/subscriber/Broadcaster.js +191 -31
  294. package/subscriber/Broadcaster.js.map +1 -1
  295. package/subscriber/EntitySubscriberInterface.d.ts +18 -0
  296. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  297. package/subscriber/event/RecoverEvent.d.ts +6 -0
  298. package/subscriber/event/RecoverEvent.js +4 -0
  299. package/subscriber/event/RecoverEvent.js.map +1 -0
  300. package/subscriber/event/SoftRemoveEvent.d.ts +6 -0
  301. package/subscriber/event/SoftRemoveEvent.js +4 -0
  302. package/subscriber/event/SoftRemoveEvent.js.map +1 -0
  303. package/typeorm-class-transformer-shim.js +20 -0
  304. package/typeorm-model-shim.js +20 -0
  305. package/util/PathUtils.d.ts +10 -0
  306. package/util/PathUtils.js +34 -0
  307. package/util/PathUtils.js.map +1 -0
  308. package/util/RandomGenerator.d.ts +0 -4
  309. package/util/RandomGenerator.js +0 -9
  310. package/util/RandomGenerator.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/driver/sqlite-abstract/AbstractSqliteDriver.ts"],"names":[],"mappings":"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","file":"AbstractSqliteDriver.js","sourcesContent":["import {Driver} from \"../Driver\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {DateUtils} from \"../../util/DateUtils\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RdbmsSchemaBuilder} from \"../../schema-builder/RdbmsSchemaBuilder\";\nimport {MappedColumnTypes} from \"../types/MappedColumnTypes\";\nimport {ColumnType} from \"../types/ColumnTypes\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {DataTypeDefaults} from \"../types/DataTypeDefaults\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {BaseConnectionOptions} from \"../../connection/BaseConnectionOptions\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {ApplyValueTransformers} from \"../../util/ApplyValueTransformers\";\nimport {ReplicationMode} from \"../types/ReplicationMode\";\nimport {DriverUtils} from \"../DriverUtils\";\nimport { TypeORMError } from \"../../error\";\nimport { Table } from \"../../schema-builder/table/Table\";\nimport { View } from \"../../schema-builder/view/View\";\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\";\n\n/**\n * Organizes communication with sqlite DBMS.\n */\nexport abstract class AbstractSqliteDriver implements Driver {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used by driver.\n */\n connection: Connection;\n\n /**\n * Sqlite has a single QueryRunner because it works on a single database connection.\n */\n queryRunner?: QueryRunner;\n\n /**\n * Real database connection with sqlite database.\n */\n databaseConnection: any;\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: BaseConnectionOptions;\n\n /**\n * Master database used to perform all write queries.\n */\n database?: string;\n\n /**\n * Indicates if replication is enabled.\n */\n isReplicated: boolean = false;\n\n /**\n * SQLite underlying library.\n */\n sqlite: any;\n\n /**\n * Indicates if tree tables are supported by this driver.\n */\n treeSupport = true;\n\n /**\n * Gets list of supported column data types by a driver.\n *\n * @see https://www.tutorialspoint.com/sqlite/sqlite_data_types.htm\n * @see https://sqlite.org/datatype3.html\n */\n supportedDataTypes: ColumnType[] = [\n \"int\",\n \"integer\",\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"bigint\",\n \"unsigned big int\",\n \"int2\",\n \"int8\",\n \"integer\",\n \"character\",\n \"varchar\",\n \"varying character\",\n \"nchar\",\n \"native character\",\n \"nvarchar\",\n \"text\",\n \"clob\",\n \"text\",\n \"blob\",\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n \"boolean\",\n \"date\",\n \"time\",\n \"datetime\"\n ];\n\n /**\n * Returns type of upsert supported by driver if any\n */\n readonly supportedUpsertType = \"on-conflict-do-update\";\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withLengthColumnTypes: ColumnType[] = [\n \"character\",\n \"varchar\",\n \"varying character\",\n \"nchar\",\n \"native character\",\n \"nvarchar\",\n \"text\",\n \"blob\",\n \"clob\"\n ];\n\n /**\n * Gets list of spatial column data types.\n */\n spatialTypes: ColumnType[] = [];\n\n /**\n * Gets list of column data types that support precision by a driver.\n */\n withPrecisionColumnTypes: ColumnType[] = [\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n \"date\",\n \"time\",\n \"datetime\"\n ];\n\n /**\n * Gets list of column data types that support scale by a driver.\n */\n withScaleColumnTypes: ColumnType[] = [\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n ];\n\n /**\n * Orm has special columns and we need to know what database column types should be for those types.\n * Column types are driver dependant.\n */\n mappedDataTypes: MappedColumnTypes = {\n createDate: \"datetime\",\n createDateDefault: \"datetime('now')\",\n updateDate: \"datetime\",\n updateDateDefault: \"datetime('now')\",\n deleteDate: \"datetime\",\n deleteDateNullable: true,\n version: \"integer\",\n treeLevel: \"integer\",\n migrationId: \"integer\",\n migrationName: \"varchar\",\n migrationTimestamp: \"bigint\",\n cacheId: \"int\",\n cacheIdentifier: \"varchar\",\n cacheTime: \"bigint\",\n cacheDuration: \"int\",\n cacheQuery: \"text\",\n cacheResult: \"text\",\n metadataType: \"varchar\",\n metadataDatabase: \"varchar\",\n metadataSchema: \"varchar\",\n metadataTable: \"varchar\",\n metadataName: \"varchar\",\n metadataValue: \"text\",\n };\n\n /**\n * Default values of length, precision and scale depends on column data type.\n * Used in the cases when length/precision/scale is not specified by user.\n */\n dataTypeDefaults: DataTypeDefaults;\n\n /**\n * No documentation specifying a maximum length for identifiers could be found\n * for SQLite.\n */\n maxAliasLength?: number;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: Connection) {\n this.connection = connection;\n this.options = connection.options as BaseConnectionOptions;\n\n this.database = DriverUtils.buildDriverOptions(this.options).database;\n }\n\n // -------------------------------------------------------------------------\n // Public Abstract\n // -------------------------------------------------------------------------\n\n /**\n * Creates a query runner used to execute database queries.\n */\n abstract createQueryRunner(mode: ReplicationMode): QueryRunner;\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n */\n async connect(): Promise<void> {\n this.databaseConnection = await this.createDatabaseConnection();\n }\n\n /**\n * Makes any action after connection (e.g. create extensions in Postgres driver).\n */\n afterConnect(): Promise<void> {\n return Promise.resolve();\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) => err ? fail(err) : ok());\n });\n }\n\n /**\n * Creates a schema builder used to build and sync a schema.\n */\n createSchemaBuilder() {\n return new RdbmsSchemaBuilder(this.connection);\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n preparePersistentValue(value: any, columnMetadata: ColumnMetadata): any {\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformTo(columnMetadata.transformer, value);\n\n if (value === null || value === undefined)\n return value;\n\n if (columnMetadata.type === Boolean || columnMetadata.type === \"boolean\") {\n return value === true ? 1 : 0;\n\n } else if (columnMetadata.type === \"date\") {\n return DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"time\") {\n return DateUtils.mixedDateToTimeString(value);\n\n } else if (columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n // to string conversation needs because SQLite stores date as integer number, when date came as Object\n // TODO: think about `toUTC` conversion\n return DateUtils.mixedDateToUtcDatetimeString(value);\n\n } else if (columnMetadata.type === \"simple-array\") {\n return DateUtils.simpleArrayToString(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n return DateUtils.simpleJsonToString(value);\n } else if (columnMetadata.type === \"simple-enum\") {\n return DateUtils.simpleEnumToString(value);\n }\n\n return value;\n }\n\n /**\n * Prepares given value to a value to be hydrated, based on its column type or metadata.\n */\n prepareHydratedValue(value: any, columnMetadata: ColumnMetadata): any {\n if (value === null || value === undefined)\n return columnMetadata.transformer ? ApplyValueTransformers.transformFrom(columnMetadata.transformer, value) : value;\n\n if (columnMetadata.type === Boolean || columnMetadata.type === \"boolean\") {\n value = value ? true : false;\n\n } else if (columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n /**\n * Fix date conversion issue\n *\n * If the format of the date string is \"2018-03-14 02:33:33.906\", Safari (and iOS WKWebView) will convert it to an invalid date object.\n * We need to modify the date string to \"2018-03-14T02:33:33.906Z\" and Safari will convert it correctly.\n *\n * ISO 8601\n * https://www.w3.org/TR/NOTE-datetime\n */\n if (value && typeof value === \"string\") {\n // There are various valid time string formats a sqlite time string might have:\n // https://www.sqlite.org/lang_datefunc.html\n // There are two separate fixes we may need to do:\n // 1) Add 'T' separator if space is used instead\n // 2) Add 'Z' UTC suffix if no timezone or offset specified\n\n if (/^\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d/.test(value)) {\n value = value.replace(\" \", \"T\");\n }\n if (/^\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d:\\d\\d(:\\d\\d(\\.\\d\\d\\d)?)?$/.test(value)) {\n value += \"Z\";\n }\n }\n\n value = DateUtils.normalizeHydratedDate(value);\n\n } else if (columnMetadata.type === \"date\") {\n value = DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"time\") {\n value = DateUtils.mixedTimeToString(value);\n\n } else if (columnMetadata.type === \"simple-array\") {\n value = DateUtils.stringToSimpleArray(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n value = DateUtils.stringToSimpleJson(value);\n\n } else if ( columnMetadata.type === \"simple-enum\" ) {\n value = DateUtils.stringToSimpleEnum(value, columnMetadata);\n\n }\n\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);\n\n return value;\n }\n\n /**\n * Replaces parameters in the given sql with special escaping character\n * and an array of parameter names to be passed to a query.\n */\n escapeQueryWithParameters(sql: string, parameters: ObjectLiteral, nativeParameters: ObjectLiteral): [string, any[]] {\n const escapedParameters: any[] = Object.keys(nativeParameters).map(key => {\n // Mapping boolean values to their numeric representation\n if (typeof nativeParameters[key] === \"boolean\") {\n return nativeParameters[key] === true ? 1 : 0;\n }\n\n return nativeParameters[key];\n });\n\n if (!parameters || !Object.keys(parameters).length)\n return [sql, escapedParameters];\n\n sql = sql.replace(/:(\\.\\.\\.)?([A-Za-z0-9_.]+)/g, (full, isArray: string, key: string): string => {\n if (!parameters.hasOwnProperty(key)) {\n return full;\n }\n\n let value: any = parameters[key];\n\n if (isArray) {\n return value.map((v: any) => {\n escapedParameters.push(v);\n return this.createParameter(key, escapedParameters.length - 1);\n }).join(\", \");\n\n }\n\n if (value instanceof Function) {\n return value();\n\n }\n\n escapedParameters.push(value);\n return this.createParameter(key, escapedParameters.length - 1);\n }); // todo: make replace only in value statements, otherwise problems\n return [sql, escapedParameters];\n }\n\n /**\n * Escapes a column name.\n */\n escape(columnName: string): string {\n return \"\\\"\" + columnName + \"\\\"\";\n }\n\n /**\n * Build full table name with database name, schema name and table name.\n * E.g. myDB.mySchema.myTable\n *\n * Returns only simple table name because all inherited drivers does not supports schema and database.\n */\n buildTableName(tableName: string, schema?: string, database?: string): string {\n return tableName;\n }\n\n\n /**\n * Parse a target table name or other types and return a normalized table definition.\n */\n parseTableName(target: EntityMetadata | Table | View | TableForeignKey | string): { database?: string, schema?: string, tableName: string } {\n const driverDatabase = this.database;\n const driverSchema = undefined\n\n if (target instanceof Table || target instanceof View) {\n const parsed = this.parseTableName(target.name);\n\n return {\n database: target.database || parsed.database || driverDatabase,\n schema: target.schema || parsed.schema || driverSchema,\n tableName: parsed.tableName,\n };\n }\n\n if (target instanceof TableForeignKey) {\n const parsed = this.parseTableName(target.referencedTableName);\n\n return {\n database: target.referencedDatabase || parsed.database || driverDatabase,\n schema: target.referencedSchema || parsed.schema || driverSchema,\n tableName: parsed.tableName\n };\n }\n\n if (target instanceof EntityMetadata) {\n // EntityMetadata tableName is never a path\n\n return {\n database: target.database || driverDatabase,\n schema: target.schema || driverSchema,\n tableName: target.tableName\n }\n\n }\n\n const parts = target.split(\".\");\n\n if (parts.length === 3) {\n return {\n database: parts[0] || driverDatabase,\n schema: parts[1] || driverSchema,\n tableName: parts[2]\n };\n } else if (parts.length === 2) {\n return {\n database: driverDatabase,\n schema: parts[0],\n tableName: parts[1]\n };\n } else {\n return {\n database: driverDatabase,\n schema: driverSchema,\n tableName: target\n };\n }\n }\n\n /**\n * Creates a database type from a given column metadata.\n */\n normalizeType(column: { type?: ColumnType, length?: number | string, precision?: number|null, scale?: number }): string {\n if (column.type === Number || column.type === \"int\") {\n return \"integer\";\n\n } else if (column.type === String) {\n return \"varchar\";\n\n } else if (column.type === Date) {\n return \"datetime\";\n\n } else if (column.type === Boolean) {\n return \"boolean\";\n\n } else if (column.type === \"uuid\") {\n return \"varchar\";\n\n } else if (column.type === \"simple-array\") {\n return \"text\";\n\n } else if (column.type === \"simple-json\") {\n return \"text\";\n\n } else if (column.type === \"simple-enum\") {\n return \"varchar\";\n\n } else {\n return column.type as string || \"\";\n }\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n normalizeDefault(columnMetadata: ColumnMetadata): string | undefined {\n const defaultValue = columnMetadata.default;\n\n if (typeof defaultValue === \"number\") {\n return \"\" + defaultValue;\n }\n\n if (typeof defaultValue === \"boolean\") {\n return defaultValue ? \"1\" : \"0\";\n }\n\n if (typeof defaultValue === \"function\") {\n return defaultValue();\n }\n\n if (typeof defaultValue === \"string\") {\n return `'${defaultValue}'`;\n }\n\n if (defaultValue === null || defaultValue === undefined) {\n return undefined;\n }\n\n return `${defaultValue}`;\n }\n\n /**\n * Normalizes \"isUnique\" value of the column.\n */\n normalizeIsUnique(column: ColumnMetadata): boolean {\n return column.entityMetadata.uniques.some(uq => uq.columns.length === 1 && uq.columns[0] === column);\n }\n\n /**\n * Calculates column length taking into account the default length values.\n */\n getColumnLength(column: ColumnMetadata): string {\n return column.length ? column.length.toString() : \"\";\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n createFullType(column: TableColumn): string {\n let type = column.type;\n if (column.enum) {\n return \"varchar\";\n }\n if (column.length) {\n type += \"(\" + column.length + \")\";\n\n } else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) {\n type += \"(\" + column.precision + \",\" + column.scale + \")\";\n\n } else if (column.precision !== null && column.precision !== undefined) {\n type += \"(\" + column.precision + \")\";\n }\n\n if (column.isArray)\n type += \" array\";\n\n return type;\n }\n\n /**\n * Obtains a new database connection to a master server.\n * Used for replication.\n * If replication is not setup then returns default connection's database connection.\n */\n obtainMasterConnection(): Promise<any> {\n return Promise.resolve();\n }\n\n /**\n * Obtains a new database connection to a slave server.\n * Used for replication.\n * If replication is not setup then returns master (default) connection's database connection.\n */\n obtainSlaveConnection(): Promise<any> {\n return Promise.resolve();\n }\n\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n createGeneratedMap(metadata: EntityMetadata, insertResult: any, entityIndex: number, entityNum: number) {\n const generatedMap = metadata.generatedColumns.reduce((map, generatedColumn) => {\n let value: any;\n if (generatedColumn.generationStrategy === \"increment\" && insertResult) {\n // NOTE: When INSERT statement is successfully completed, the last inserted row ID is returned.\n // see also: SqliteQueryRunner.query()\n value = insertResult - entityNum + entityIndex + 1;\n // } else if (generatedColumn.generationStrategy === \"uuid\") {\n // value = insertValue[generatedColumn.databaseName];\n }\n\n if (!value) return map;\n return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value));\n }, {} as ObjectLiteral);\n\n return Object.keys(generatedMap).length > 0 ? generatedMap : undefined;\n }\n\n /**\n * Differentiate columns of this table and columns from the given column metadatas columns\n * and returns only changed.\n */\n findChangedColumns(tableColumns: TableColumn[], columnMetadatas: ColumnMetadata[]): ColumnMetadata[] {\n return columnMetadatas.filter(columnMetadata => {\n const tableColumn = tableColumns.find(c => c.name === columnMetadata.databaseName);\n if (!tableColumn)\n return false; // we don't need new columns, we only need exist and changed\n\n // console.log(\"table:\", columnMetadata.entityMetadata.tableName);\n // console.log(\"name:\", tableColumn.name, columnMetadata.databaseName);\n // console.log(\"type:\", tableColumn.type, this.normalizeType(columnMetadata));\n // console.log(\"length:\", tableColumn.length, columnMetadata.length);\n // console.log(\"precision:\", tableColumn.precision, columnMetadata.precision);\n // console.log(\"scale:\", tableColumn.scale, columnMetadata.scale);\n // console.log(\"comment:\", tableColumn.comment, columnMetadata.comment);\n // console.log(\"default:\", this.normalizeDefault(columnMetadata), columnMetadata.default);\n // console.log(\"isPrimary:\", tableColumn.isPrimary, columnMetadata.isPrimary);\n // console.log(\"isNullable:\", tableColumn.isNullable, columnMetadata.isNullable);\n // console.log(\"isUnique:\", tableColumn.isUnique, this.normalizeIsUnique(columnMetadata));\n // console.log(\"isGenerated:\", tableColumn.isGenerated, columnMetadata.isGenerated);\n // console.log(\"==========================================\");\n\n return tableColumn.name !== columnMetadata.databaseName\n || tableColumn.type !== this.normalizeType(columnMetadata)\n || tableColumn.length !== columnMetadata.length\n || tableColumn.precision !== columnMetadata.precision\n || tableColumn.scale !== columnMetadata.scale\n // || tableColumn.comment !== columnMetadata.comment || // todo\n || this.normalizeDefault(columnMetadata) !== tableColumn.default\n || tableColumn.isPrimary !== columnMetadata.isPrimary\n || tableColumn.isNullable !== columnMetadata.isNullable\n || tableColumn.isUnique !== this.normalizeIsUnique(columnMetadata)\n || (columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated);\n });\n }\n\n /**\n * Returns true if driver supports RETURNING / OUTPUT statement.\n */\n isReturningSqlSupported(): boolean {\n return false;\n }\n\n /**\n * Returns true if driver supports uuid values generation on its own.\n */\n isUUIDGenerationSupported(): boolean {\n return false;\n }\n\n /**\n * Returns true if driver supports fulltext indices.\n */\n isFullTextColumnTypeSupported(): boolean {\n return false;\n }\n\n /**\n * Creates an escaped parameter.\n */\n createParameter(parameterName: string, index: number): string {\n // return \"$\" + (index + 1);\n return \"?\";\n // return \"$\" + parameterName;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates connection with the database.\n */\n protected createDatabaseConnection() {\n throw new TypeORMError(\"Do not use AbstractSqlite directly, it has to be used with one of the sqlite drivers\");\n }\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n // dependencies have to be loaded in the specific driver\n }\n\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/driver/sqlite-abstract/AbstractSqliteDriver.ts"],"names":[],"mappings":"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","file":"AbstractSqliteDriver.js","sourcesContent":["import {Driver} from \"../Driver\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {DateUtils} from \"../../util/DateUtils\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RdbmsSchemaBuilder} from \"../../schema-builder/RdbmsSchemaBuilder\";\nimport {MappedColumnTypes} from \"../types/MappedColumnTypes\";\nimport {ColumnType} from \"../types/ColumnTypes\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {DataTypeDefaults} from \"../types/DataTypeDefaults\";\nimport {TableColumn} from \"../../schema-builder/table/TableColumn\";\nimport {BaseConnectionOptions} from \"../../connection/BaseConnectionOptions\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {OrmUtils} from \"../../util/OrmUtils\";\nimport {ApplyValueTransformers} from \"../../util/ApplyValueTransformers\";\nimport {ReplicationMode} from \"../types/ReplicationMode\";\nimport {DriverUtils} from \"../DriverUtils\";\nimport { TypeORMError } from \"../../error\";\nimport { Table } from \"../../schema-builder/table/Table\";\nimport { View } from \"../../schema-builder/view/View\";\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\";\n\n\ntype DatabasesMap = Record<string, {\n attachFilepathAbsolute: string\n attachFilepathRelative: string\n attachHandle: string\n}>;\n\n/**\n * Organizes communication with sqlite DBMS.\n */\nexport abstract class AbstractSqliteDriver implements Driver {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection used by driver.\n */\n connection: Connection;\n\n /**\n * Sqlite has a single QueryRunner because it works on a single database connection.\n */\n queryRunner?: QueryRunner;\n\n /**\n * Real database connection with sqlite database.\n */\n databaseConnection: any;\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: BaseConnectionOptions;\n\n /**\n * Master database used to perform all write queries.\n */\n database?: string;\n\n /**\n * Indicates if replication is enabled.\n */\n isReplicated: boolean = false;\n\n /**\n * SQLite underlying library.\n */\n sqlite: any;\n\n /**\n * Indicates if tree tables are supported by this driver.\n */\n treeSupport = true;\n\n /**\n * Gets list of supported column data types by a driver.\n *\n * @see https://www.tutorialspoint.com/sqlite/sqlite_data_types.htm\n * @see https://sqlite.org/datatype3.html\n */\n supportedDataTypes: ColumnType[] = [\n \"int\",\n \"integer\",\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"bigint\",\n \"unsigned big int\",\n \"int2\",\n \"int8\",\n \"integer\",\n \"character\",\n \"varchar\",\n \"varying character\",\n \"nchar\",\n \"native character\",\n \"nvarchar\",\n \"text\",\n \"clob\",\n \"text\",\n \"blob\",\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n \"boolean\",\n \"date\",\n \"time\",\n \"datetime\"\n ];\n\n /**\n * Returns type of upsert supported by driver if any\n */\n readonly supportedUpsertType = \"on-conflict-do-update\";\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withLengthColumnTypes: ColumnType[] = [\n \"character\",\n \"varchar\",\n \"varying character\",\n \"nchar\",\n \"native character\",\n \"nvarchar\",\n \"text\",\n \"blob\",\n \"clob\"\n ];\n\n /**\n * Gets list of spatial column data types.\n */\n spatialTypes: ColumnType[] = [];\n\n /**\n * Gets list of column data types that support precision by a driver.\n */\n withPrecisionColumnTypes: ColumnType[] = [\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n \"date\",\n \"time\",\n \"datetime\"\n ];\n\n /**\n * Gets list of column data types that support scale by a driver.\n */\n withScaleColumnTypes: ColumnType[] = [\n \"real\",\n \"double\",\n \"double precision\",\n \"float\",\n \"real\",\n \"numeric\",\n \"decimal\",\n ];\n\n /**\n * Orm has special columns and we need to know what database column types should be for those types.\n * Column types are driver dependant.\n */\n mappedDataTypes: MappedColumnTypes = {\n createDate: \"datetime\",\n createDateDefault: \"datetime('now')\",\n updateDate: \"datetime\",\n updateDateDefault: \"datetime('now')\",\n deleteDate: \"datetime\",\n deleteDateNullable: true,\n version: \"integer\",\n treeLevel: \"integer\",\n migrationId: \"integer\",\n migrationName: \"varchar\",\n migrationTimestamp: \"bigint\",\n cacheId: \"int\",\n cacheIdentifier: \"varchar\",\n cacheTime: \"bigint\",\n cacheDuration: \"int\",\n cacheQuery: \"text\",\n cacheResult: \"text\",\n metadataType: \"varchar\",\n metadataDatabase: \"varchar\",\n metadataSchema: \"varchar\",\n metadataTable: \"varchar\",\n metadataName: \"varchar\",\n metadataValue: \"text\",\n };\n\n /**\n * Default values of length, precision and scale depends on column data type.\n * Used in the cases when length/precision/scale is not specified by user.\n */\n dataTypeDefaults: DataTypeDefaults;\n\n /**\n * No documentation specifying a maximum length for identifiers could be found\n * for SQLite.\n */\n maxAliasLength?: number;\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Any attached databases (excepting default 'main')\n */\n attachedDatabases: DatabasesMap = {};\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: Connection) {\n this.connection = connection;\n this.options = connection.options as BaseConnectionOptions;\n\n this.database = DriverUtils.buildDriverOptions(this.options).database;\n }\n\n // -------------------------------------------------------------------------\n // Public Abstract\n // -------------------------------------------------------------------------\n\n /**\n * Creates a query runner used to execute database queries.\n */\n abstract createQueryRunner(mode: ReplicationMode): QueryRunner;\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n */\n async connect(): Promise<void> {\n this.databaseConnection = await this.createDatabaseConnection();\n }\n\n /**\n * Makes any action after connection (e.g. create extensions in Postgres driver).\n */\n afterConnect(): Promise<void> {\n return Promise.resolve();\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) => err ? fail(err) : ok());\n });\n }\n\n hasAttachedDatabases(): boolean {\n return !!Object.keys(this.attachedDatabases).length;\n }\n\n getAttachedDatabaseHandleByRelativePath(path: string): string | undefined {\n return this.attachedDatabases?.[path]?.attachHandle\n }\n\n getAttachedDatabasePathRelativeByHandle(handle: string): string | undefined {\n return Object.values(this.attachedDatabases).find(({attachHandle}) => handle === attachHandle)?.attachFilepathRelative\n }\n\n /**\n * Creates a schema builder used to build and sync a schema.\n */\n createSchemaBuilder() {\n return new RdbmsSchemaBuilder(this.connection);\n }\n\n /**\n * Prepares given value to a value to be persisted, based on its column type and metadata.\n */\n preparePersistentValue(value: any, columnMetadata: ColumnMetadata): any {\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformTo(columnMetadata.transformer, value);\n\n if (value === null || value === undefined)\n return value;\n\n if (columnMetadata.type === Boolean || columnMetadata.type === \"boolean\") {\n return value === true ? 1 : 0;\n\n } else if (columnMetadata.type === \"date\") {\n return DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"time\") {\n return DateUtils.mixedDateToTimeString(value);\n\n } else if (columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n // to string conversation needs because SQLite stores date as integer number, when date came as Object\n // TODO: think about `toUTC` conversion\n return DateUtils.mixedDateToUtcDatetimeString(value);\n\n } else if (columnMetadata.type === \"simple-array\") {\n return DateUtils.simpleArrayToString(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n return DateUtils.simpleJsonToString(value);\n } else if (columnMetadata.type === \"simple-enum\") {\n return DateUtils.simpleEnumToString(value);\n }\n\n return value;\n }\n\n /**\n * Prepares given value to a value to be hydrated, based on its column type or metadata.\n */\n prepareHydratedValue(value: any, columnMetadata: ColumnMetadata): any {\n if (value === null || value === undefined)\n return columnMetadata.transformer ? ApplyValueTransformers.transformFrom(columnMetadata.transformer, value) : value;\n\n if (columnMetadata.type === Boolean || columnMetadata.type === \"boolean\") {\n value = value ? true : false;\n\n } else if (columnMetadata.type === \"datetime\" || columnMetadata.type === Date) {\n /**\n * Fix date conversion issue\n *\n * If the format of the date string is \"2018-03-14 02:33:33.906\", Safari (and iOS WKWebView) will convert it to an invalid date object.\n * We need to modify the date string to \"2018-03-14T02:33:33.906Z\" and Safari will convert it correctly.\n *\n * ISO 8601\n * https://www.w3.org/TR/NOTE-datetime\n */\n if (value && typeof value === \"string\") {\n // There are various valid time string formats a sqlite time string might have:\n // https://www.sqlite.org/lang_datefunc.html\n // There are two separate fixes we may need to do:\n // 1) Add 'T' separator if space is used instead\n // 2) Add 'Z' UTC suffix if no timezone or offset specified\n\n if (/^\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d/.test(value)) {\n value = value.replace(\" \", \"T\");\n }\n if (/^\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d:\\d\\d(:\\d\\d(\\.\\d\\d\\d)?)?$/.test(value)) {\n value += \"Z\";\n }\n }\n\n value = DateUtils.normalizeHydratedDate(value);\n\n } else if (columnMetadata.type === \"date\") {\n value = DateUtils.mixedDateToDateString(value);\n\n } else if (columnMetadata.type === \"time\") {\n value = DateUtils.mixedTimeToString(value);\n\n } else if (columnMetadata.type === \"simple-array\") {\n value = DateUtils.stringToSimpleArray(value);\n\n } else if (columnMetadata.type === \"simple-json\") {\n value = DateUtils.stringToSimpleJson(value);\n\n } else if ( columnMetadata.type === \"simple-enum\" ) {\n value = DateUtils.stringToSimpleEnum(value, columnMetadata);\n\n }\n\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);\n\n return value;\n }\n\n /**\n * Replaces parameters in the given sql with special escaping character\n * and an array of parameter names to be passed to a query.\n */\n escapeQueryWithParameters(sql: string, parameters: ObjectLiteral, nativeParameters: ObjectLiteral): [string, any[]] {\n const escapedParameters: any[] = Object.keys(nativeParameters).map(key => {\n // Mapping boolean values to their numeric representation\n if (typeof nativeParameters[key] === \"boolean\") {\n return nativeParameters[key] === true ? 1 : 0;\n }\n\n return nativeParameters[key];\n });\n\n if (!parameters || !Object.keys(parameters).length)\n return [sql, escapedParameters];\n\n sql = sql.replace(/:(\\.\\.\\.)?([A-Za-z0-9_.]+)/g, (full, isArray: string, key: string): string => {\n if (!parameters.hasOwnProperty(key)) {\n return full;\n }\n\n let value: any = parameters[key];\n\n if (isArray) {\n return value.map((v: any) => {\n escapedParameters.push(v);\n return this.createParameter(key, escapedParameters.length - 1);\n }).join(\", \");\n\n }\n\n if (value instanceof Function) {\n return value();\n\n }\n\n escapedParameters.push(value);\n return this.createParameter(key, escapedParameters.length - 1);\n }); // todo: make replace only in value statements, otherwise problems\n return [sql, escapedParameters];\n }\n\n /**\n * Escapes a column name.\n */\n escape(columnName: string): string {\n return \"\\\"\" + columnName + \"\\\"\";\n }\n\n /**\n * Build full table name with database name, schema name and table name.\n * E.g. myDB.mySchema.myTable\n *\n * Returns only simple table name because all inherited drivers does not supports schema and database.\n */\n buildTableName(tableName: string, schema?: string, database?: string): string {\n return tableName;\n }\n\n\n /**\n * Parse a target table name or other types and return a normalized table definition.\n */\n parseTableName(target: EntityMetadata | Table | View | TableForeignKey | string): { database?: string, schema?: string, tableName: string } {\n const driverDatabase = this.database;\n const driverSchema = undefined\n\n if (target instanceof Table || target instanceof View) {\n const parsed = this.parseTableName(target.schema ? `\"${target.schema}\".\"${target.name}\"` : target.name);\n\n return {\n database: target.database || parsed.database || driverDatabase,\n schema: target.schema || parsed.schema || driverSchema,\n tableName: parsed.tableName,\n };\n }\n\n if (target instanceof TableForeignKey) {\n const parsed = this.parseTableName(target.referencedTableName);\n\n return {\n database: target.referencedDatabase || parsed.database || driverDatabase,\n schema: target.referencedSchema || parsed.schema || driverSchema,\n tableName: parsed.tableName\n };\n }\n\n if (target instanceof EntityMetadata) {\n // EntityMetadata tableName is never a path\n\n return {\n database: target.database || driverDatabase,\n schema: target.schema || driverSchema,\n tableName: target.tableName\n }\n\n }\n\n const parts = target.split(\".\");\n\n if (parts.length === 3) {\n return {\n database: parts[0] || driverDatabase,\n schema: parts[1] || driverSchema,\n tableName: parts[2]\n };\n } else if (parts.length === 2) {\n const database = this.getAttachedDatabasePathRelativeByHandle(parts[0]) ?? driverDatabase\n return {\n database: database,\n schema: parts[0],\n tableName: parts[1]\n };\n } else {\n return {\n database: driverDatabase,\n schema: driverSchema,\n tableName: target\n };\n }\n }\n\n /**\n * Creates a database type from a given column metadata.\n */\n normalizeType(column: { type?: ColumnType, length?: number | string, precision?: number|null, scale?: number }): string {\n if (column.type === Number || column.type === \"int\") {\n return \"integer\";\n\n } else if (column.type === String) {\n return \"varchar\";\n\n } else if (column.type === Date) {\n return \"datetime\";\n\n } else if (column.type === Boolean) {\n return \"boolean\";\n\n } else if (column.type === \"uuid\") {\n return \"varchar\";\n\n } else if (column.type === \"simple-array\") {\n return \"text\";\n\n } else if (column.type === \"simple-json\") {\n return \"text\";\n\n } else if (column.type === \"simple-enum\") {\n return \"varchar\";\n\n } else {\n return column.type as string || \"\";\n }\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n normalizeDefault(columnMetadata: ColumnMetadata): string | undefined {\n const defaultValue = columnMetadata.default;\n\n if (typeof defaultValue === \"number\") {\n return \"\" + defaultValue;\n }\n\n if (typeof defaultValue === \"boolean\") {\n return defaultValue ? \"1\" : \"0\";\n }\n\n if (typeof defaultValue === \"function\") {\n return defaultValue();\n }\n\n if (typeof defaultValue === \"string\") {\n return `'${defaultValue}'`;\n }\n\n if (defaultValue === null || defaultValue === undefined) {\n return undefined;\n }\n\n return `${defaultValue}`;\n }\n\n /**\n * Normalizes \"isUnique\" value of the column.\n */\n normalizeIsUnique(column: ColumnMetadata): boolean {\n return column.entityMetadata.uniques.some(uq => uq.columns.length === 1 && uq.columns[0] === column);\n }\n\n /**\n * Calculates column length taking into account the default length values.\n */\n getColumnLength(column: ColumnMetadata): string {\n return column.length ? column.length.toString() : \"\";\n }\n\n /**\n * Normalizes \"default\" value of the column.\n */\n createFullType(column: TableColumn): string {\n let type = column.type;\n if (column.enum) {\n return \"varchar\";\n }\n if (column.length) {\n type += \"(\" + column.length + \")\";\n\n } else if (column.precision !== null && column.precision !== undefined && column.scale !== null && column.scale !== undefined) {\n type += \"(\" + column.precision + \",\" + column.scale + \")\";\n\n } else if (column.precision !== null && column.precision !== undefined) {\n type += \"(\" + column.precision + \")\";\n }\n\n if (column.isArray)\n type += \" array\";\n\n return type;\n }\n\n /**\n * Obtains a new database connection to a master server.\n * Used for replication.\n * If replication is not setup then returns default connection's database connection.\n */\n obtainMasterConnection(): Promise<any> {\n return Promise.resolve();\n }\n\n /**\n * Obtains a new database connection to a slave server.\n * Used for replication.\n * If replication is not setup then returns master (default) connection's database connection.\n */\n obtainSlaveConnection(): Promise<any> {\n return Promise.resolve();\n }\n\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n createGeneratedMap(metadata: EntityMetadata, insertResult: any, entityIndex: number, entityNum: number) {\n const generatedMap = metadata.generatedColumns.reduce((map, generatedColumn) => {\n let value: any;\n if (generatedColumn.generationStrategy === \"increment\" && insertResult) {\n // NOTE: When INSERT statement is successfully completed, the last inserted row ID is returned.\n // see also: SqliteQueryRunner.query()\n value = insertResult - entityNum + entityIndex + 1;\n // } else if (generatedColumn.generationStrategy === \"uuid\") {\n // value = insertValue[generatedColumn.databaseName];\n }\n\n if (!value) return map;\n return OrmUtils.mergeDeep(map, generatedColumn.createValueMap(value));\n }, {} as ObjectLiteral);\n\n return Object.keys(generatedMap).length > 0 ? generatedMap : undefined;\n }\n\n /**\n * Differentiate columns of this table and columns from the given column metadatas columns\n * and returns only changed.\n */\n findChangedColumns(tableColumns: TableColumn[], columnMetadatas: ColumnMetadata[]): ColumnMetadata[] {\n return columnMetadatas.filter(columnMetadata => {\n const tableColumn = tableColumns.find(c => c.name === columnMetadata.databaseName);\n if (!tableColumn)\n return false; // we don't need new columns, we only need exist and changed\n\n // console.log(\"table:\", columnMetadata.entityMetadata.tableName);\n // console.log(\"name:\", tableColumn.name, columnMetadata.databaseName);\n // console.log(\"type:\", tableColumn.type, this.normalizeType(columnMetadata));\n // console.log(\"length:\", tableColumn.length, columnMetadata.length);\n // console.log(\"precision:\", tableColumn.precision, columnMetadata.precision);\n // console.log(\"scale:\", tableColumn.scale, columnMetadata.scale);\n // console.log(\"comment:\", tableColumn.comment, columnMetadata.comment);\n // console.log(\"default:\", this.normalizeDefault(columnMetadata), columnMetadata.default);\n // console.log(\"isPrimary:\", tableColumn.isPrimary, columnMetadata.isPrimary);\n // console.log(\"isNullable:\", tableColumn.isNullable, columnMetadata.isNullable);\n // console.log(\"isUnique:\", tableColumn.isUnique, this.normalizeIsUnique(columnMetadata));\n // console.log(\"isGenerated:\", tableColumn.isGenerated, columnMetadata.isGenerated);\n // console.log(\"==========================================\");\n\n return tableColumn.name !== columnMetadata.databaseName\n || tableColumn.type !== this.normalizeType(columnMetadata)\n || tableColumn.length !== columnMetadata.length\n || tableColumn.precision !== columnMetadata.precision\n || tableColumn.scale !== columnMetadata.scale\n // || tableColumn.comment !== columnMetadata.comment || // todo\n || this.normalizeDefault(columnMetadata) !== tableColumn.default\n || tableColumn.isPrimary !== columnMetadata.isPrimary\n || tableColumn.isNullable !== columnMetadata.isNullable\n || tableColumn.isUnique !== this.normalizeIsUnique(columnMetadata)\n || (columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated);\n });\n }\n\n /**\n * Returns true if driver supports RETURNING / OUTPUT statement.\n */\n isReturningSqlSupported(): boolean {\n return false;\n }\n\n /**\n * Returns true if driver supports uuid values generation on its own.\n */\n isUUIDGenerationSupported(): boolean {\n return false;\n }\n\n /**\n * Returns true if driver supports fulltext indices.\n */\n isFullTextColumnTypeSupported(): boolean {\n return false;\n }\n\n /**\n * Creates an escaped parameter.\n */\n createParameter(parameterName: string, index: number): string {\n // return \"$\" + (index + 1);\n return \"?\";\n // return \"$\" + parameterName;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates connection with the database.\n */\n protected createDatabaseConnection() {\n throw new TypeORMError(\"Do not use AbstractSqlite directly, it has to be used with one of the sqlite drivers\");\n }\n\n /**\n * If driver dependency is not given explicitly, then try to load it via \"require\".\n */\n protected loadDependencies(): void {\n // dependencies have to be loaded in the specific driver\n }\n\n}\n"],"sourceRoot":"../.."}
@@ -251,8 +251,10 @@ export declare abstract class AbstractSqliteQueryRunner extends BaseQueryRunner
251
251
  /**
252
252
  * Removes all tables from the currently connected database.
253
253
  */
254
- clearDatabase(): Promise<void>;
254
+ clearDatabase(database?: string): Promise<void>;
255
255
  protected loadViews(viewNames?: string[]): Promise<View[]>;
256
+ protected loadTableRecords(tablePath: string, tableOrIndex: "table" | "index"): Promise<any>;
257
+ protected loadPragmaRecords(tablePath: string, pragma: string): Promise<any>;
256
258
  /**
257
259
  * Loads all tables (with given names) from the database and creates a Table from them.
258
260
  */
@@ -288,4 +290,12 @@ export declare abstract class AbstractSqliteQueryRunner extends BaseQueryRunner
288
290
  */
289
291
  protected buildCreateColumnSql(column: TableColumn, skipPrimary?: boolean): string;
290
292
  protected recreateTable(newTable: Table, oldTable: Table, migrateData?: boolean): Promise<void>;
293
+ /**
294
+ * tablePath e.g. "myDB.myTable", "myTable"
295
+ */
296
+ protected splitTablePath(tablePath: string): [string | undefined, string];
297
+ /**
298
+ * Escapes given table or view path. Tolerates leading/trailing dots
299
+ */
300
+ protected escapePath(target: Table | View | string, disableEscape?: boolean): string;
291
301
  }
@@ -230,7 +230,7 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
230
230
  switch (_a.label) {
231
231
  case 0:
232
232
  tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;
233
- sql = "PRAGMA table_info(\"" + tableName + "\")";
233
+ sql = "PRAGMA table_info(" + this.escapePath(tableName) + ")";
234
234
  return [4 /*yield*/, this.query(sql)];
235
235
  case 1:
236
236
  columns = _a.sent();
@@ -440,8 +440,8 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
440
440
  oldTable = _a;
441
441
  newTable = oldTable.clone();
442
442
  newTable.name = newTableName;
443
- up = new Query("ALTER TABLE \"" + oldTable.name + "\" RENAME TO \"" + newTableName + "\"");
444
- down = new Query("ALTER TABLE \"" + newTableName + "\" RENAME TO \"" + oldTable.name + "\"");
443
+ up = new Query("ALTER TABLE " + this.escapePath(oldTable.name) + " RENAME TO " + this.escapePath(newTableName));
444
+ down = new Query("ALTER TABLE " + this.escapePath(newTableName) + " RENAME TO " + this.escapePath(oldTable.name));
445
445
  return [4 /*yield*/, this.executeQueries(up, down)];
446
446
  case 4:
447
447
  _b.sent();
@@ -1234,7 +1234,7 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1234
1234
  return __awaiter(this, void 0, void 0, function () {
1235
1235
  return __generator(this, function (_a) {
1236
1236
  switch (_a.label) {
1237
- case 0: return [4 /*yield*/, this.query("DELETE FROM \"" + tableName + "\"")];
1237
+ case 0: return [4 /*yield*/, this.query("DELETE FROM " + this.escapePath(tableName))];
1238
1238
  case 1:
1239
1239
  _a.sent();
1240
1240
  return [2 /*return*/];
@@ -1245,13 +1245,18 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1245
1245
  /**
1246
1246
  * Removes all tables from the currently connected database.
1247
1247
  */
1248
- AbstractSqliteQueryRunner.prototype.clearDatabase = function () {
1248
+ AbstractSqliteQueryRunner.prototype.clearDatabase = function (database) {
1249
1249
  return __awaiter(this, void 0, void 0, function () {
1250
- var selectViewDropsQuery, dropViewQueries, selectTableDropsQuery, dropTableQueries, error_1, rollbackError_1;
1250
+ var dbPath, selectViewDropsQuery, dropViewQueries, selectTableDropsQuery, dropTableQueries, error_1, rollbackError_1;
1251
1251
  var _this = this;
1252
1252
  return __generator(this, function (_a) {
1253
1253
  switch (_a.label) {
1254
- case 0: return [4 /*yield*/, this.query("PRAGMA foreign_keys = OFF;")];
1254
+ case 0:
1255
+ dbPath = undefined;
1256
+ if (database && this.driver.getAttachedDatabaseHandleByRelativePath(database)) {
1257
+ dbPath = this.driver.getAttachedDatabaseHandleByRelativePath(database);
1258
+ }
1259
+ return [4 /*yield*/, this.query("PRAGMA foreign_keys = OFF;")];
1255
1260
  case 1:
1256
1261
  _a.sent();
1257
1262
  return [4 /*yield*/, this.startTransaction()];
@@ -1260,14 +1265,14 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1260
1265
  _a.label = 3;
1261
1266
  case 3:
1262
1267
  _a.trys.push([3, 9, 14, 16]);
1263
- selectViewDropsQuery = "SELECT 'DROP VIEW \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'view'";
1268
+ selectViewDropsQuery = dbPath ? "SELECT 'DROP VIEW \"" + dbPath + "\".\"' || name || '\";' as query FROM \"" + dbPath + "\".\"sqlite_master\" WHERE \"type\" = 'view'" : "SELECT 'DROP VIEW \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'view'";
1264
1269
  return [4 /*yield*/, this.query(selectViewDropsQuery)];
1265
1270
  case 4:
1266
1271
  dropViewQueries = _a.sent();
1267
1272
  return [4 /*yield*/, Promise.all(dropViewQueries.map(function (q) { return _this.query(q["query"]); }))];
1268
1273
  case 5:
1269
1274
  _a.sent();
1270
- selectTableDropsQuery = "SELECT 'DROP TABLE \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'";
1275
+ selectTableDropsQuery = dbPath ? "SELECT 'DROP TABLE \"" + dbPath + "\".\"' || name || '\";' as query FROM \"" + dbPath + "\".\"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'" : "SELECT 'DROP TABLE \"' || name || '\";' as query FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" != 'sqlite_sequence'";
1271
1276
  return [4 /*yield*/, this.query(selectTableDropsQuery)];
1272
1277
  case 6:
1273
1278
  dropTableQueries = _a.sent();
@@ -1334,66 +1339,97 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1334
1339
  });
1335
1340
  });
1336
1341
  };
1342
+ AbstractSqliteQueryRunner.prototype.loadTableRecords = function (tablePath, tableOrIndex) {
1343
+ return __awaiter(this, void 0, void 0, function () {
1344
+ var database, _a, schema, tableName, res;
1345
+ return __generator(this, function (_b) {
1346
+ switch (_b.label) {
1347
+ case 0:
1348
+ database = undefined;
1349
+ _a = __read(this.splitTablePath(tablePath), 2), schema = _a[0], tableName = _a[1];
1350
+ if (schema && this.driver.getAttachedDatabasePathRelativeByHandle(schema)) {
1351
+ database = this.driver.getAttachedDatabasePathRelativeByHandle(schema);
1352
+ }
1353
+ return [4 /*yield*/, this.query("SELECT " + (database ? "'" + database + "'" : null) + " as database, " + (schema ? "'" + schema + "'" : null) + " as schema, * FROM " + (schema ? "\"" + schema + "\"." : "") + this.escapePath("sqlite_master") + " WHERE \"type\" = '" + tableOrIndex + "' AND \"" + (tableOrIndex === "table" ? "name" : "tbl_name") + "\" IN ('" + tableName + "')")];
1354
+ case 1:
1355
+ res = _b.sent();
1356
+ return [2 /*return*/, res];
1357
+ }
1358
+ });
1359
+ });
1360
+ };
1361
+ AbstractSqliteQueryRunner.prototype.loadPragmaRecords = function (tablePath, pragma) {
1362
+ return __awaiter(this, void 0, void 0, function () {
1363
+ var _a, tableName, res;
1364
+ return __generator(this, function (_b) {
1365
+ switch (_b.label) {
1366
+ case 0:
1367
+ _a = __read(this.splitTablePath(tablePath), 2), tableName = _a[1];
1368
+ return [4 /*yield*/, this.query("PRAGMA " + pragma + "(\"" + tableName + "\")")];
1369
+ case 1:
1370
+ res = _b.sent();
1371
+ return [2 /*return*/, res];
1372
+ }
1373
+ });
1374
+ });
1375
+ };
1337
1376
  /**
1338
1377
  * Loads all tables (with given names) from the database and creates a Table from them.
1339
1378
  */
1340
1379
  AbstractSqliteQueryRunner.prototype.loadTables = function (tableNames) {
1341
1380
  return __awaiter(this, void 0, void 0, function () {
1342
- var dbTables, tablesSql, _a, _b, _c, _d, tableNamesString_1, tablesSql, _e, _f, _g, _h, tableNamesString, dbIndicesDef;
1381
+ var dbTables, dbIndicesDef, tablesSql, _a, _b, _c, _d, tableNamesString;
1343
1382
  var _this = this;
1344
- return __generator(this, function (_j) {
1345
- switch (_j.label) {
1383
+ return __generator(this, function (_e) {
1384
+ switch (_e.label) {
1346
1385
  case 0:
1347
1386
  // if no tables given then no need to proceed
1348
1387
  if (tableNames && tableNames.length === 0) {
1349
1388
  return [2 /*return*/, []];
1350
1389
  }
1351
1390
  dbTables = [];
1352
- if (!!tableNames) return [3 /*break*/, 2];
1391
+ if (!!tableNames) return [3 /*break*/, 3];
1353
1392
  tablesSql = "SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'table'";
1354
1393
  _b = (_a = dbTables.push).apply;
1355
1394
  _c = [dbTables];
1356
1395
  _d = [[]];
1357
1396
  return [4 /*yield*/, this.query(tablesSql)];
1358
1397
  case 1:
1359
- _b.apply(_a, _c.concat([__spreadArray.apply(void 0, _d.concat([__read.apply(void 0, [_j.sent()]), false]))]));
1360
- return [3 /*break*/, 4];
1361
- case 2:
1362
- tableNamesString_1 = tableNames.map(function (tableName) { return "'" + tableName + "'"; }).join(", ");
1363
- tablesSql = "SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'table' AND \"name\" IN (" + tableNamesString_1 + ")";
1364
- _f = (_e = dbTables.push).apply;
1365
- _g = [dbTables];
1366
- _h = [[]];
1367
- return [4 /*yield*/, this.query(tablesSql)];
1368
- case 3:
1369
- _f.apply(_e, _g.concat([__spreadArray.apply(void 0, _h.concat([__read.apply(void 0, [_j.sent()]), false]))]));
1370
- _j.label = 4;
1371
- case 4:
1372
- // if tables were not found in the db, no need to proceed
1373
- if (dbTables.length === 0) {
1374
- return [2 /*return*/, []];
1375
- }
1398
+ _b.apply(_a, _c.concat([__spreadArray.apply(void 0, _d.concat([__read.apply(void 0, [_e.sent()]), false]))]));
1376
1399
  tableNamesString = dbTables.map(function (_a) {
1377
1400
  var name = _a.name;
1378
1401
  return "'" + name + "'";
1379
1402
  }).join(", ");
1380
1403
  return [4 /*yield*/, this.query("SELECT * FROM \"sqlite_master\" WHERE \"type\" = 'index' AND \"tbl_name\" IN (" + tableNamesString + ")")];
1404
+ case 2:
1405
+ dbIndicesDef = _e.sent();
1406
+ return [3 /*break*/, 6];
1407
+ case 3: return [4 /*yield*/, Promise.all(tableNames.map(function (tableName) { return _this.loadTableRecords(tableName, "table"); }))];
1408
+ case 4:
1409
+ dbTables = (_e.sent()).reduce(function (acc, res) { return (__spreadArray(__spreadArray([], __read(acc), false), __read(res), false)); }, []).filter(Boolean);
1410
+ return [4 /*yield*/, Promise.all((tableNames !== null && tableNames !== void 0 ? tableNames : []).map(function (tableName) { return _this.loadTableRecords(tableName, "index"); }))];
1381
1411
  case 5:
1382
- dbIndicesDef = _j.sent();
1412
+ dbIndicesDef = (_e.sent()).reduce(function (acc, res) { return (__spreadArray(__spreadArray([], __read(acc), false), __read(res), false)); }, []).filter(Boolean);
1413
+ _e.label = 6;
1414
+ case 6:
1415
+ // if tables were not found in the db, no need to proceed
1416
+ if (dbTables.length === 0) {
1417
+ return [2 /*return*/, []];
1418
+ }
1383
1419
  // create table schemas for loaded tables
1384
1420
  return [2 /*return*/, Promise.all(dbTables.map(function (dbTable) { return __awaiter(_this, void 0, void 0, function () {
1385
- var table, sql, _a, dbColumns, dbIndices, dbForeignKeys, autoIncrementColumnName, tableSql, autoIncrementIndex, comma, bracket, tableForeignKeyConstraints, uniqueRegexResult, uniqueMappings, uniqueRegex, tableUniquePromises, _b, result, regexp, indicesPromises, indices;
1421
+ var tablePath, table, sql, _a, dbColumns, dbIndices, dbForeignKeys, autoIncrementColumnName, tableSql, autoIncrementIndex, comma, bracket, tableForeignKeyConstraints, uniqueRegexResult, uniqueMappings, uniqueRegex, tableUniquePromises, _b, result, regexp, indicesPromises, indices;
1386
1422
  var _this = this;
1387
1423
  return __generator(this, function (_c) {
1388
1424
  switch (_c.label) {
1389
1425
  case 0:
1390
- table = new Table();
1391
- table.name = dbTable["name"];
1426
+ tablePath = dbTable['database'] && this.driver.getAttachedDatabaseHandleByRelativePath(dbTable['database']) ? this.driver.getAttachedDatabaseHandleByRelativePath(dbTable['database']) + "." + dbTable['name'] : dbTable['name'];
1427
+ table = new Table({ name: tablePath });
1392
1428
  sql = dbTable["sql"];
1393
1429
  return [4 /*yield*/, Promise.all([
1394
- this.query("PRAGMA table_info(\"" + dbTable["name"] + "\")"),
1395
- this.query("PRAGMA index_list(\"" + dbTable["name"] + "\")"),
1396
- this.query("PRAGMA foreign_key_list(\"" + dbTable["name"] + "\")"),
1430
+ this.loadPragmaRecords(tablePath, "table_info"),
1431
+ this.loadPragmaRecords(tablePath, "index_list"),
1432
+ this.loadPragmaRecords(tablePath, "foreign_key_list"),
1397
1433
  ])];
1398
1434
  case 1:
1399
1435
  _a = __read.apply(void 0, [_c.sent(), 3]), dbColumns = _a[0], dbIndices = _a[1], dbForeignKeys = _a[2];
@@ -1431,7 +1467,7 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1431
1467
  }
1432
1468
  if (tableColumn.type === "varchar") {
1433
1469
  // Check if this is an enum
1434
- var enumMatch = sql.match(new RegExp("\"(" + tableColumn.name + ")\" varchar CHECK\\s*\\(\\s*\\1\\s+IN\\s*\\(('[^']+'(?:\\s*,\\s*'[^']+')+)\\s*\\)\\s*\\)"));
1470
+ var enumMatch = sql.match(new RegExp("\"(" + tableColumn.name + ")\" varchar CHECK\\s*\\(\\s*\"\\1\"\\s+IN\\s*\\(('[^']+'(?:\\s*,\\s*'[^']+')+)\\s*\\)\\s*\\)"));
1435
1471
  if (enumMatch) {
1436
1472
  // This is an enum
1437
1473
  tableColumn.enum = enumMatch[2].substr(1, enumMatch[2].length - 2).split("','");
@@ -1537,7 +1573,7 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1537
1573
  .map(function (dbIndex) { return dbIndex["name"]; })
1538
1574
  .filter(function (value, index, self) { return self.indexOf(value) === index; }) // unqiue
1539
1575
  .map(function (dbIndexName) { return __awaiter(_this, void 0, void 0, function () {
1540
- var indexDef, condition, dbIndex, indexInfos, indexColumns, isUnique;
1576
+ var indexDef, condition, dbIndex, indexInfos, indexColumns, dbIndexPath, isUnique;
1541
1577
  return __generator(this, function (_a) {
1542
1578
  switch (_a.label) {
1543
1579
  case 0:
@@ -1550,10 +1586,11 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1550
1586
  indexColumns = indexInfos
1551
1587
  .sort(function (indexInfo1, indexInfo2) { return parseInt(indexInfo1["seqno"]) - parseInt(indexInfo2["seqno"]); })
1552
1588
  .map(function (indexInfo) { return indexInfo["name"]; });
1589
+ dbIndexPath = "" + (dbTable["database"] ? dbTable["database"] + "." : '') + dbIndex["name"];
1553
1590
  isUnique = dbIndex["unique"] === "1" || dbIndex["unique"] === 1;
1554
1591
  return [2 /*return*/, new TableIndex({
1555
1592
  table: table,
1556
- name: dbIndex["name"],
1593
+ name: dbIndexPath,
1557
1594
  columnNames: indexColumns,
1558
1595
  isUnique: isUnique,
1559
1596
  where: condition ? condition[1] : undefined
@@ -1584,7 +1621,8 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1584
1621
  if (skipPrimary && hasAutoIncrement)
1585
1622
  throw new TypeORMError("Sqlite does not support AUTOINCREMENT on composite primary key");
1586
1623
  var columnDefinitions = table.columns.map(function (column) { return _this.buildCreateColumnSql(column, skipPrimary); }).join(", ");
1587
- var sql = "CREATE TABLE \"" + table.name + "\" (" + columnDefinitions;
1624
+ var _a = __read(this.splitTablePath(table.name), 1), database = _a[0];
1625
+ var sql = "CREATE TABLE " + this.escapePath(table.name) + " (" + columnDefinitions;
1588
1626
  // need for `addColumn()` method, because it recreates table.
1589
1627
  table.columns
1590
1628
  .filter(function (column) { return column.isUnique; })
@@ -1612,12 +1650,20 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1612
1650
  sql += ", " + checksSql;
1613
1651
  }
1614
1652
  if (table.foreignKeys.length > 0 && createForeignKeys) {
1615
- var foreignKeysSql = table.foreignKeys.map(function (fk) {
1653
+ var foreignKeysSql = table.foreignKeys.filter(function (fk) {
1654
+ var _a = __read(_this.splitTablePath(fk.referencedTableName), 1), referencedDatabase = _a[0];
1655
+ if (referencedDatabase !== database) {
1656
+ return false;
1657
+ }
1658
+ return true;
1659
+ })
1660
+ .map(function (fk) {
1661
+ var _a = __read(_this.splitTablePath(fk.referencedTableName), 2), referencedTable = _a[1];
1616
1662
  var columnNames = fk.columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", ");
1617
1663
  if (!fk.name)
1618
1664
  fk.name = _this.connection.namingStrategy.foreignKeyName(table, fk.columnNames, _this.getTablePath(fk), fk.referencedColumnNames);
1619
1665
  var referencedColumnNames = fk.referencedColumnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", ");
1620
- var constraint = "CONSTRAINT \"" + fk.name + "\" FOREIGN KEY (" + columnNames + ") REFERENCES \"" + fk.referencedTableName + "\" (" + referencedColumnNames + ")";
1666
+ var constraint = "CONSTRAINT \"" + fk.name + "\" FOREIGN KEY (" + columnNames + ") REFERENCES \"" + referencedTable + "\" (" + referencedColumnNames + ")";
1621
1667
  if (fk.onDelete)
1622
1668
  constraint += " ON DELETE " + fk.onDelete;
1623
1669
  if (fk.onUpdate)
@@ -1642,7 +1688,7 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1642
1688
  */
1643
1689
  AbstractSqliteQueryRunner.prototype.dropTableSql = function (tableOrName, ifExist) {
1644
1690
  var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;
1645
- var query = ifExist ? "DROP TABLE IF EXISTS \"" + tableName + "\"" : "DROP TABLE \"" + tableName + "\"";
1691
+ var query = ifExist ? "DROP TABLE IF EXISTS " + this.escapePath(tableName) : "DROP TABLE " + this.escapePath(tableName);
1646
1692
  return new Query(query);
1647
1693
  };
1648
1694
  AbstractSqliteQueryRunner.prototype.createViewSql = function (view) {
@@ -1680,14 +1726,15 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1680
1726
  */
1681
1727
  AbstractSqliteQueryRunner.prototype.createIndexSql = function (table, index) {
1682
1728
  var columns = index.columnNames.map(function (columnName) { return "\"" + columnName + "\""; }).join(", ");
1683
- return new Query("CREATE " + (index.isUnique ? "UNIQUE " : "") + "INDEX \"" + index.name + "\" ON \"" + table.name + "\" (" + columns + ") " + (index.where ? "WHERE " + index.where : ""));
1729
+ var _a = __read(this.splitTablePath(table.name), 2), database = _a[0], tableName = _a[1];
1730
+ return new Query("CREATE " + (index.isUnique ? "UNIQUE " : "") + "INDEX " + (database ? "\"" + database + "\"." : "") + this.escapePath(index.name) + " ON \"" + tableName + "\" (" + columns + ") " + (index.where ? "WHERE " + index.where : ""));
1684
1731
  };
1685
1732
  /**
1686
1733
  * Builds drop index sql.
1687
1734
  */
1688
1735
  AbstractSqliteQueryRunner.prototype.dropIndexSql = function (indexOrName) {
1689
1736
  var indexName = indexOrName instanceof TableIndex ? indexOrName.name : indexOrName;
1690
- return new Query("DROP INDEX \"" + indexName + "\"");
1737
+ return new Query("DROP INDEX " + this.escapePath(indexName));
1691
1738
  };
1692
1739
  /**
1693
1740
  * Builds a query for create column.
@@ -1701,7 +1748,7 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1701
1748
  c += " " + this.connection.driver.createFullType(column);
1702
1749
  }
1703
1750
  if (column.enum)
1704
- c += " CHECK( " + column.name + " IN (" + column.enum.map(function (val) { return "'" + val + "'"; }).join(",") + ") )";
1751
+ c += " CHECK( \"" + column.name + "\" IN (" + column.enum.map(function (val) { return "'" + val + "'"; }).join(",") + ") )";
1705
1752
  if (column.isPrimary && !skipPrimary)
1706
1753
  c += " PRIMARY KEY";
1707
1754
  if (column.isGenerated === true && column.generationStrategy === "increment") // don't use skipPrimary here since updates can update already exist primary without auto inc.
@@ -1717,10 +1764,10 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1717
1764
  AbstractSqliteQueryRunner.prototype.recreateTable = function (newTable, oldTable, migrateData) {
1718
1765
  if (migrateData === void 0) { migrateData = true; }
1719
1766
  return __awaiter(this, void 0, void 0, function () {
1720
- var upQueries, downQueries, newColumnNames, oldColumnNames;
1767
+ var upQueries, downQueries, _a, databaseNew, tableNameNew, _b, tableNameOld, newColumnNames, oldColumnNames;
1721
1768
  var _this = this;
1722
- return __generator(this, function (_a) {
1723
- switch (_a.label) {
1769
+ return __generator(this, function (_c) {
1770
+ switch (_c.label) {
1724
1771
  case 0:
1725
1772
  upQueries = [];
1726
1773
  downQueries = [];
@@ -1729,8 +1776,9 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1729
1776
  upQueries.push(_this.dropIndexSql(index));
1730
1777
  downQueries.push(_this.createIndexSql(oldTable, index));
1731
1778
  });
1732
- // change table name into 'temporary_table'
1733
- newTable.name = "temporary_" + newTable.name;
1779
+ _a = __read(this.splitTablePath(newTable.name), 2), databaseNew = _a[0], tableNameNew = _a[1];
1780
+ _b = __read(this.splitTablePath(oldTable.name), 2), tableNameOld = _b[1];
1781
+ newTable.name = tableNameNew = (databaseNew ? databaseNew + "." : "") + "temporary_" + tableNameNew;
1734
1782
  // create new table
1735
1783
  upQueries.push(this.createTableSql(newTable, true));
1736
1784
  downQueries.push(this.dropTableSql(newTable));
@@ -1748,15 +1796,15 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1748
1796
  return newTable.columns.find(function (c) { return c.name === column.name; });
1749
1797
  }).map(function (column) { return "\"" + column.name + "\""; }).join(", ");
1750
1798
  }
1751
- upQueries.push(new Query("INSERT INTO \"" + newTable.name + "\"(" + newColumnNames + ") SELECT " + oldColumnNames + " FROM \"" + oldTable.name + "\""));
1752
- downQueries.push(new Query("INSERT INTO \"" + oldTable.name + "\"(" + oldColumnNames + ") SELECT " + newColumnNames + " FROM \"" + newTable.name + "\""));
1799
+ upQueries.push(new Query("INSERT INTO " + this.escapePath(newTable.name) + "(" + newColumnNames + ") SELECT " + oldColumnNames + " FROM " + this.escapePath(oldTable.name)));
1800
+ downQueries.push(new Query("INSERT INTO " + this.escapePath(oldTable.name) + "(" + oldColumnNames + ") SELECT " + newColumnNames + " FROM " + this.escapePath(newTable.name)));
1753
1801
  }
1754
1802
  // drop old table
1755
1803
  upQueries.push(this.dropTableSql(oldTable));
1756
1804
  downQueries.push(this.createTableSql(oldTable, true));
1757
1805
  // rename old table
1758
- upQueries.push(new Query("ALTER TABLE \"" + newTable.name + "\" RENAME TO \"" + oldTable.name + "\""));
1759
- downQueries.push(new Query("ALTER TABLE \"" + oldTable.name + "\" RENAME TO \"" + newTable.name + "\""));
1806
+ upQueries.push(new Query("ALTER TABLE " + this.escapePath(newTable.name) + " RENAME TO " + this.escapePath(tableNameOld)));
1807
+ downQueries.push(new Query("ALTER TABLE " + this.escapePath(oldTable.name) + " RENAME TO " + this.escapePath(tableNameNew)));
1760
1808
  newTable.name = oldTable.name;
1761
1809
  // recreate table indices
1762
1810
  newTable.indices.forEach(function (index) {
@@ -1768,13 +1816,26 @@ var AbstractSqliteQueryRunner = /** @class */ (function (_super) {
1768
1816
  });
1769
1817
  return [4 /*yield*/, this.executeQueries(upQueries, downQueries)];
1770
1818
  case 1:
1771
- _a.sent();
1819
+ _c.sent();
1772
1820
  this.replaceCachedTable(oldTable, newTable);
1773
1821
  return [2 /*return*/];
1774
1822
  }
1775
1823
  });
1776
1824
  });
1777
1825
  };
1826
+ /**
1827
+ * tablePath e.g. "myDB.myTable", "myTable"
1828
+ */
1829
+ AbstractSqliteQueryRunner.prototype.splitTablePath = function (tablePath) {
1830
+ return ((tablePath.indexOf(".") !== -1) ? tablePath.split(".") : [undefined, tablePath]);
1831
+ };
1832
+ /**
1833
+ * Escapes given table or view path. Tolerates leading/trailing dots
1834
+ */
1835
+ AbstractSqliteQueryRunner.prototype.escapePath = function (target, disableEscape) {
1836
+ var tableName = target instanceof Table || target instanceof View ? target.name : target;
1837
+ return tableName.replace(/^\.+|\.+$/g, "").split(".").map(function (i) { return disableEscape ? i : "\"" + i + "\""; }).join(".");
1838
+ };
1778
1839
  return AbstractSqliteQueryRunner;
1779
1840
  }(BaseQueryRunner));
1780
1841
  export { AbstractSqliteQueryRunner };