typeorm 0.2.28 → 0.2.29

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 (248) hide show
  1. package/README.md +7 -2
  2. package/browser/connection/ConnectionOptionsReader.js +27 -27
  3. package/browser/connection/ConnectionOptionsReader.js.map +1 -1
  4. package/browser/decorator/entity/ChildEntity.js +1 -1
  5. package/browser/decorator/entity/ChildEntity.js.map +1 -1
  6. package/browser/driver/DriverUtils.js +20 -12
  7. package/browser/driver/DriverUtils.js.map +1 -1
  8. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +53 -6
  9. package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  10. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +53 -6
  11. package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  12. package/browser/driver/cockroachdb/CockroachDriver.js +3 -3
  13. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  14. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  15. package/browser/driver/cockroachdb/CockroachQueryRunner.js +112 -42
  16. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  17. package/browser/driver/expo/ExpoQueryRunner.js +72 -14
  18. package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
  19. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  20. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  21. package/browser/driver/mongodb/MongoDriver.d.ts +7 -3
  22. package/browser/driver/mongodb/MongoDriver.js +15 -14
  23. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  24. package/browser/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  25. package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
  26. package/browser/driver/mysql/MysqlDriver.js +4 -4
  27. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  28. package/browser/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  29. package/browser/driver/mysql/MysqlQueryRunner.js +107 -38
  30. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  31. package/browser/driver/oracle/OracleQueryRunner.js +52 -6
  32. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  33. package/browser/driver/postgres/PostgresDriver.js +7 -7
  34. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  35. package/browser/driver/postgres/PostgresQueryRunner.d.ts +8 -0
  36. package/browser/driver/postgres/PostgresQueryRunner.js +107 -18
  37. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  38. package/browser/driver/react-native/ReactNativeDriver.js +1 -2
  39. package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
  40. package/browser/driver/sap/SapQueryRunner.js +56 -8
  41. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  42. package/browser/driver/sqlite/SqliteQueryRunner.js +4 -0
  43. package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  44. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -7
  45. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  46. package/browser/driver/sqlserver/SqlServerQueryRunner.js +133 -62
  47. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  48. package/browser/entity-manager/MongoEntityManager.js +14 -3
  49. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  50. package/browser/find-options/FindOneOptions.d.ts +4 -0
  51. package/browser/find-options/FindOneOptions.js.map +1 -1
  52. package/browser/find-options/FindOperator.d.ts +20 -1
  53. package/browser/find-options/FindOperator.js +27 -1
  54. package/browser/find-options/FindOperator.js.map +1 -1
  55. package/browser/find-options/FindOperatorType.d.ts +1 -1
  56. package/browser/find-options/FindOperatorType.js.map +1 -1
  57. package/browser/find-options/FindOptionsUtils.js +5 -1
  58. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  59. package/browser/find-options/operator/ILike.d.ts +6 -0
  60. package/browser/find-options/operator/ILike.js +10 -0
  61. package/browser/find-options/operator/ILike.js.map +1 -0
  62. package/browser/find-options/operator/Raw.d.ts +14 -2
  63. package/browser/find-options/operator/Raw.js +5 -6
  64. package/browser/find-options/operator/Raw.js.map +1 -1
  65. package/browser/index.d.ts +2 -0
  66. package/browser/index.js +1 -0
  67. package/browser/index.js.map +1 -1
  68. package/browser/logger/Logger.d.ts +1 -1
  69. package/browser/logger/Logger.js.map +1 -1
  70. package/browser/metadata/ColumnMetadata.js +14 -3
  71. package/browser/metadata/ColumnMetadata.js.map +1 -1
  72. package/browser/metadata/types/EventListenerTypes.d.ts +7 -7
  73. package/browser/metadata/types/EventListenerTypes.js.map +1 -1
  74. package/browser/metadata-builder/EntityMetadataBuilder.js +14 -8
  75. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  76. package/browser/metadata-builder/EntityMetadataValidator.js +8 -5
  77. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  78. package/browser/persistence/EntityPersistExecutor.js +1 -1
  79. package/browser/persistence/EntityPersistExecutor.js.map +1 -1
  80. package/browser/persistence/Subject.js +2 -1
  81. package/browser/persistence/Subject.js.map +1 -1
  82. package/browser/query-builder/DeleteQueryBuilder.js +2 -1
  83. package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
  84. package/browser/query-builder/InsertQueryBuilder.js +31 -8
  85. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  86. package/browser/query-builder/QueryBuilder.d.ts +7 -0
  87. package/browser/query-builder/QueryBuilder.js +125 -32
  88. package/browser/query-builder/QueryBuilder.js.map +1 -1
  89. package/browser/query-builder/QueryExpressionMap.d.ts +4 -0
  90. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  91. package/browser/query-builder/SelectQueryBuilder.d.ts +5 -0
  92. package/browser/query-builder/SelectQueryBuilder.js +73 -40
  93. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  94. package/browser/query-builder/UpdateQueryBuilder.js +2 -1
  95. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  96. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -3
  97. package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  98. package/browser/query-runner/QueryRunner.d.ts +1 -1
  99. package/browser/query-runner/QueryRunner.js.map +1 -1
  100. package/browser/repository/TreeRepository.js +2 -2
  101. package/browser/repository/TreeRepository.js.map +1 -1
  102. package/browser/subscriber/Broadcaster.d.ts +24 -0
  103. package/browser/subscriber/Broadcaster.js +120 -0
  104. package/browser/subscriber/Broadcaster.js.map +1 -1
  105. package/browser/subscriber/EntitySubscriberInterface.d.ts +27 -0
  106. package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
  107. package/browser/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  108. package/browser/subscriber/event/TransactionCommitEvent.js +3 -0
  109. package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -0
  110. package/browser/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  111. package/browser/subscriber/event/TransactionRollbackEvent.js +3 -0
  112. package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  113. package/browser/subscriber/event/TransactionStartEvent.d.ts +22 -0
  114. package/browser/subscriber/event/TransactionStartEvent.js +3 -0
  115. package/browser/subscriber/event/TransactionStartEvent.js.map +1 -0
  116. package/browser/util/DateUtils.js +1 -7
  117. package/browser/util/DateUtils.js.map +1 -1
  118. package/commands/EntityCreateCommand.js +5 -2
  119. package/commands/EntityCreateCommand.js.map +1 -1
  120. package/commands/InitCommand.js +1 -1
  121. package/commands/InitCommand.js.map +1 -1
  122. package/commands/MigrationCreateCommand.js +4 -1
  123. package/commands/MigrationCreateCommand.js.map +1 -1
  124. package/commands/MigrationGenerateCommand.js +26 -28
  125. package/commands/MigrationGenerateCommand.js.map +1 -1
  126. package/commands/QueryCommand.d.ts +2 -0
  127. package/commands/QueryCommand.js +12 -3
  128. package/commands/QueryCommand.js.map +1 -1
  129. package/commands/SubscriberCreateCommand.js +5 -2
  130. package/commands/SubscriberCreateCommand.js.map +1 -1
  131. package/connection/ConnectionOptionsReader.js +27 -27
  132. package/connection/ConnectionOptionsReader.js.map +1 -1
  133. package/decorator/entity/ChildEntity.js +1 -1
  134. package/decorator/entity/ChildEntity.js.map +1 -1
  135. package/driver/DriverUtils.js +19 -11
  136. package/driver/DriverUtils.js.map +1 -1
  137. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +53 -6
  138. package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
  139. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +53 -6
  140. package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
  141. package/driver/cockroachdb/CockroachDriver.js +3 -3
  142. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  143. package/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
  144. package/driver/cockroachdb/CockroachQueryRunner.js +112 -42
  145. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  146. package/driver/expo/ExpoQueryRunner.js +72 -14
  147. package/driver/expo/ExpoQueryRunner.js.map +1 -1
  148. package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
  149. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  150. package/driver/mongodb/MongoDriver.d.ts +7 -3
  151. package/driver/mongodb/MongoDriver.js +15 -14
  152. package/driver/mongodb/MongoDriver.js.map +1 -1
  153. package/driver/mongodb/MongoQueryRunner.d.ts +3 -3
  154. package/driver/mongodb/MongoQueryRunner.js.map +1 -1
  155. package/driver/mysql/MysqlDriver.js +4 -4
  156. package/driver/mysql/MysqlDriver.js.map +1 -1
  157. package/driver/mysql/MysqlQueryRunner.d.ts +4 -0
  158. package/driver/mysql/MysqlQueryRunner.js +107 -38
  159. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  160. package/driver/oracle/OracleQueryRunner.js +52 -6
  161. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  162. package/driver/postgres/PostgresDriver.js +7 -7
  163. package/driver/postgres/PostgresDriver.js.map +1 -1
  164. package/driver/postgres/PostgresQueryRunner.d.ts +8 -0
  165. package/driver/postgres/PostgresQueryRunner.js +107 -18
  166. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  167. package/driver/react-native/ReactNativeDriver.js +1 -2
  168. package/driver/react-native/ReactNativeDriver.js.map +1 -1
  169. package/driver/sap/SapQueryRunner.js +56 -8
  170. package/driver/sap/SapQueryRunner.js.map +1 -1
  171. package/driver/sqlite/SqliteQueryRunner.js +4 -0
  172. package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
  173. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -7
  174. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  175. package/driver/sqlserver/SqlServerQueryRunner.js +133 -62
  176. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  177. package/entity-manager/MongoEntityManager.js +14 -3
  178. package/entity-manager/MongoEntityManager.js.map +1 -1
  179. package/find-options/FindOneOptions.d.ts +4 -0
  180. package/find-options/FindOneOptions.js.map +1 -1
  181. package/find-options/FindOperator.d.ts +20 -1
  182. package/find-options/FindOperator.js +27 -1
  183. package/find-options/FindOperator.js.map +1 -1
  184. package/find-options/FindOperatorType.d.ts +1 -1
  185. package/find-options/FindOperatorType.js.map +1 -1
  186. package/find-options/FindOptionsUtils.js +5 -1
  187. package/find-options/FindOptionsUtils.js.map +1 -1
  188. package/find-options/operator/ILike.d.ts +6 -0
  189. package/find-options/operator/ILike.js +13 -0
  190. package/find-options/operator/ILike.js.map +1 -0
  191. package/find-options/operator/Raw.d.ts +14 -2
  192. package/find-options/operator/Raw.js +5 -6
  193. package/find-options/operator/Raw.js.map +1 -1
  194. package/index.d.ts +2 -0
  195. package/index.js +1 -0
  196. package/index.js.map +1 -1
  197. package/logger/Logger.d.ts +1 -1
  198. package/logger/Logger.js.map +1 -1
  199. package/metadata/ColumnMetadata.js +14 -3
  200. package/metadata/ColumnMetadata.js.map +1 -1
  201. package/metadata/types/EventListenerTypes.d.ts +7 -7
  202. package/metadata/types/EventListenerTypes.js.map +1 -1
  203. package/metadata-builder/EntityMetadataBuilder.js +14 -8
  204. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  205. package/metadata-builder/EntityMetadataValidator.js +8 -5
  206. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  207. package/package.json +3 -2
  208. package/persistence/EntityPersistExecutor.js +1 -1
  209. package/persistence/EntityPersistExecutor.js.map +1 -1
  210. package/persistence/Subject.js +2 -1
  211. package/persistence/Subject.js.map +1 -1
  212. package/query-builder/DeleteQueryBuilder.js +2 -1
  213. package/query-builder/DeleteQueryBuilder.js.map +1 -1
  214. package/query-builder/InsertQueryBuilder.js +31 -8
  215. package/query-builder/InsertQueryBuilder.js.map +1 -1
  216. package/query-builder/QueryBuilder.d.ts +7 -0
  217. package/query-builder/QueryBuilder.js +124 -31
  218. package/query-builder/QueryBuilder.js.map +1 -1
  219. package/query-builder/QueryExpressionMap.d.ts +4 -0
  220. package/query-builder/QueryExpressionMap.js.map +1 -1
  221. package/query-builder/SelectQueryBuilder.d.ts +5 -0
  222. package/query-builder/SelectQueryBuilder.js +73 -40
  223. package/query-builder/SelectQueryBuilder.js.map +1 -1
  224. package/query-builder/UpdateQueryBuilder.js +2 -1
  225. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  226. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -3
  227. package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
  228. package/query-runner/QueryRunner.d.ts +1 -1
  229. package/query-runner/QueryRunner.js.map +1 -1
  230. package/repository/TreeRepository.js +2 -2
  231. package/repository/TreeRepository.js.map +1 -1
  232. package/subscriber/Broadcaster.d.ts +24 -0
  233. package/subscriber/Broadcaster.js +120 -0
  234. package/subscriber/Broadcaster.js.map +1 -1
  235. package/subscriber/EntitySubscriberInterface.d.ts +27 -0
  236. package/subscriber/EntitySubscriberInterface.js.map +1 -1
  237. package/subscriber/event/TransactionCommitEvent.d.ts +22 -0
  238. package/subscriber/event/TransactionCommitEvent.js +4 -0
  239. package/subscriber/event/TransactionCommitEvent.js.map +1 -0
  240. package/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
  241. package/subscriber/event/TransactionRollbackEvent.js +4 -0
  242. package/subscriber/event/TransactionRollbackEvent.js.map +1 -0
  243. package/subscriber/event/TransactionStartEvent.d.ts +22 -0
  244. package/subscriber/event/TransactionStartEvent.js +4 -0
  245. package/subscriber/event/TransactionStartEvent.js.map +1 -0
  246. package/typeorm-model-shim.js +145 -128
  247. package/util/DateUtils.js +1 -7
  248. package/util/DateUtils.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/query-builder/QueryExpressionMap.ts"],"names":[],"mappings":"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","file":"QueryExpressionMap.js","sourcesContent":["import {Alias} from \"./Alias\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {JoinAttribute} from \"./JoinAttribute\";\nimport {RelationIdAttribute} from \"./relation-id/RelationIdAttribute\";\nimport {RelationCountAttribute} from \"./relation-count/RelationCountAttribute\";\nimport {Connection} from \"../connection/Connection\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {SelectQuery} from \"./SelectQuery\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {SelectQueryBuilderOption} from \"./SelectQueryBuilderOption\";\n\n/**\n * Contains all properties of the QueryBuilder that needs to be build a final query.\n */\nexport class QueryExpressionMap {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Indicates if QueryBuilder used to select entities and not a raw results.\n */\n queryEntity: boolean = false;\n\n /**\n * Main alias is a main selection object selected by QueryBuilder.\n */\n mainAlias?: Alias;\n\n /**\n * All aliases (including main alias) used in the query.\n */\n aliases: Alias[] = [];\n\n /**\n * Represents query type. QueryBuilder is able to build SELECT, UPDATE and DELETE queries.\n */\n queryType: \"select\"|\"update\"|\"delete\"|\"insert\"|\"relation\"|\"soft-delete\"|\"restore\" = \"select\";\n\n /**\n * Data needs to be SELECT-ed.\n */\n selects: SelectQuery[] = [];\n\n /**\n * Whether SELECT is DISTINCT.\n */\n selectDistinct: boolean = false;\n\n /**\n * SELECT DISTINCT ON query (postgres).\n */\n selectDistinctOn: string[] = [];\n\n /**\n * FROM-s to be selected.\n */\n // froms: { target: string, alias: string }[] = [];\n\n /**\n * If update query was used, it needs \"update set\" - properties which will be updated by this query.\n * If insert query was used, it needs \"insert set\" - values that needs to be inserted.\n */\n valuesSet?: ObjectLiteral|ObjectLiteral[];\n\n /**\n * Optional returning (or output) clause for insert, update or delete queries.\n */\n returning: string|string[];\n\n /**\n * Extra returning columns to be added to the returning statement if driver supports it.\n */\n extraReturningColumns: ColumnMetadata[] = [];\n\n /**\n * Optional on conflict statement used in insertion query in postgres.\n */\n onConflict: string = \"\";\n\n /**\n * Optional on ignore statement used in insertion query in databases.\n */\n onIgnore: string|boolean = false;\n\n /**\n * Optional on update statement used in insertion query in databases.\n */\n onUpdate: { columns?: string, conflict?: string, overwrite?: string };\n\n /**\n * JOIN queries.\n */\n joinAttributes: JoinAttribute[] = [];\n\n /**\n * RelationId queries.\n */\n relationIdAttributes: RelationIdAttribute[] = [];\n\n /**\n * Relation count queries.\n */\n relationCountAttributes: RelationCountAttribute[] = [];\n\n /**\n * WHERE queries.\n */\n wheres: { type: \"simple\"|\"and\"|\"or\", condition: string }[] = [];\n\n /**\n * HAVING queries.\n */\n havings: { type: \"simple\"|\"and\"|\"or\", condition: string }[] = [];\n\n /**\n * ORDER BY queries.\n */\n orderBys: OrderByCondition = {};\n\n /**\n * GROUP BY queries.\n */\n groupBys: string[] = [];\n\n /**\n * LIMIT query.\n */\n limit?: number;\n\n /**\n * OFFSET query.\n */\n offset?: number;\n\n /**\n * Number of rows to skip of result using pagination.\n */\n skip?: number;\n\n /**\n * Number of rows to take using pagination.\n */\n take?: number;\n\n /**\n * Locking mode.\n */\n lockMode?: \"optimistic\"|\"pessimistic_read\"|\"pessimistic_write\"|\"dirty_read\"|\"pessimistic_partial_write\"|\"pessimistic_write_or_fail\"|\"for_no_key_update\";\n\n /**\n * Current version of the entity, used for locking.\n */\n lockVersion?: number|Date;\n\n /**\n * Indicates if soft-deleted rows should be included in entity result.\n * By default the soft-deleted rows are not included.\n */\n withDeleted: boolean = false;\n\n /**\n * Parameters used to be escaped in final query.\n */\n parameters: ObjectLiteral = {};\n\n /**\n * Indicates if alias, table names and column names will be ecaped by driver, or not.\n *\n * todo: rename to isQuotingDisabled, also think if it should be named \"escaping\"\n */\n disableEscaping: boolean = true;\n\n /**\n * Indicates if virtual columns should be included in entity result.\n *\n * todo: what to do with it? is it properly used? what about persistence?\n */\n enableRelationIdValues: boolean = false;\n\n /**\n * Extra where condition appended to the end of original where conditions with AND keyword.\n * Original condition will be wrapped into brackets.\n */\n extraAppendedAndWhereCondition: string = \"\";\n\n /**\n * Indicates if query builder creates a subquery.\n */\n subQuery: boolean = false;\n\n /**\n * If QueryBuilder was created in a subquery mode then its parent QueryBuilder (who created subquery) will be stored here.\n */\n parentQueryBuilder: QueryBuilder<any>;\n\n /**\n * Indicates if property names are prefixed with alias names during property replacement.\n * By default this is enabled, however we need this because aliases are not supported in UPDATE and DELETE queries,\n * but user can use them in WHERE expressions.\n */\n aliasNamePrefixingEnabled: boolean = true;\n\n /**\n * Indicates if query result cache is enabled or not.\n */\n cache: boolean = false;\n\n /**\n * Time in milliseconds in which cache will expire.\n * If not set then global caching time will be used.\n */\n cacheDuration: number;\n\n /**\n * Cache id.\n * Used to identifier your cache queries.\n */\n cacheId: string;\n\n /**\n * Options that define QueryBuilder behaviour.\n */\n options: SelectQueryBuilderOption[] = [];\n\n /**\n * Property path of relation to work with.\n * Used in relational query builder.\n */\n relationPropertyPath: string;\n\n /**\n * Entity (target) which relations will be updated.\n */\n of: any|any[];\n\n /**\n * List of columns where data should be inserted.\n * Used in INSERT query.\n */\n insertColumns: string[] = [];\n\n /**\n * Used if user wants to update or delete a specific entities.\n */\n whereEntities: ObjectLiteral[] = [];\n\n /**\n * Indicates if entity must be updated after insertion / updation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n */\n updateEntity: boolean = true;\n\n /**\n * Indicates if listeners and subscribers must be called before and after query execution.\n */\n callListeners: boolean = true;\n\n /**\n * Indicates if query must be wrapped into transaction.\n */\n useTransaction: boolean = false;\n\n /**\n * Extra parameters.\n * Used in InsertQueryBuilder to avoid default parameters mechanizm and execute high performance insertions.\n */\n nativeParameters: ObjectLiteral = {};\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection) {\n }\n\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n\n /**\n * Get all ORDER BY queries - if order by is specified by user then it uses them,\n * otherwise it uses default entity order by if it was set.\n */\n get allOrderBys() {\n if (!Object.keys(this.orderBys).length && this.mainAlias!.hasMetadata && this.options.indexOf(\"disable-global-order\") === -1) {\n const entityOrderBy = this.mainAlias!.metadata.orderBy || {};\n return Object.keys(entityOrderBy).reduce((orderBy, key) => {\n orderBy[this.mainAlias!.name + \".\" + key] = entityOrderBy[key];\n return orderBy;\n }, {} as OrderByCondition);\n }\n\n return this.orderBys;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a main alias and adds it to the current expression map.\n */\n setMainAlias(alias: Alias): Alias {\n\n // if main alias is already set then remove it from the array\n // if (this.mainAlias)\n // this.aliases.splice(this.aliases.indexOf(this.mainAlias));\n\n // set new main alias\n this.mainAlias = alias;\n\n return alias;\n }\n\n /**\n * Creates a new alias and adds it to the current expression map.\n */\n createAlias(options: { type: \"from\"|\"select\"|\"join\"|\"other\", name?: string, target?: Function|string, tablePath?: string, subQuery?: string, metadata?: EntityMetadata }): Alias {\n\n let aliasName = options.name;\n if (!aliasName && options.tablePath)\n aliasName = options.tablePath;\n if (!aliasName && options.target instanceof Function)\n aliasName = options.target.name;\n if (!aliasName && typeof options.target === \"string\")\n aliasName = options.target;\n\n const alias = new Alias();\n alias.type = options.type;\n if (aliasName)\n alias.name = aliasName;\n if (options.metadata)\n alias.metadata = options.metadata;\n if (options.target && !alias.hasMetadata)\n alias.metadata = this.connection.getMetadata(options.target);\n if (options.tablePath)\n alias.tablePath = options.tablePath;\n if (options.subQuery)\n alias.subQuery = options.subQuery;\n\n this.aliases.push(alias);\n return alias;\n }\n\n /**\n * Finds alias with the given name.\n * If alias was not found it throw an exception.\n */\n findAliasByName(aliasName: string): Alias {\n const alias = this.aliases.find(alias => alias.name === aliasName);\n if (!alias)\n throw new Error(`\"${aliasName}\" alias was not found. Maybe you forgot to join it?`);\n\n return alias;\n }\n\n findColumnByAliasExpression(aliasExpression: string): ColumnMetadata|undefined {\n const [aliasName, propertyPath] = aliasExpression.split(\".\");\n const alias = this.findAliasByName(aliasName);\n return alias.metadata.findColumnWithPropertyName(propertyPath);\n }\n\n /**\n * Gets relation metadata of the relation this query builder works with.\n *\n * todo: add proper exceptions\n */\n get relationMetadata(): RelationMetadata {\n if (!this.mainAlias)\n throw new Error(`Entity to work with is not specified!`); // todo: better message\n\n const relationMetadata = this.mainAlias.metadata.findRelationWithPropertyPath(this.relationPropertyPath);\n if (!relationMetadata)\n throw new Error(`Relation ${this.relationPropertyPath} was not found in entity ${this.mainAlias.name}`); // todo: better message\n\n return relationMetadata;\n }\n\n /**\n * Copies all properties of the current QueryExpressionMap into a new one.\n * Useful when QueryBuilder needs to create a copy of itself.\n */\n clone(): QueryExpressionMap {\n const map = new QueryExpressionMap(this.connection);\n map.queryType = this.queryType;\n map.selects = this.selects.map(select => select);\n map.selectDistinct = this.selectDistinct;\n map.selectDistinctOn = this.selectDistinctOn;\n this.aliases.forEach(alias => map.aliases.push(new Alias(alias)));\n map.mainAlias = this.mainAlias;\n map.valuesSet = this.valuesSet;\n map.returning = this.returning;\n map.onConflict = this.onConflict;\n map.onIgnore = this.onIgnore;\n map.onUpdate = this.onUpdate;\n map.joinAttributes = this.joinAttributes.map(join => new JoinAttribute(this.connection, this, join));\n map.relationIdAttributes = this.relationIdAttributes.map(relationId => new RelationIdAttribute(this, relationId));\n map.relationCountAttributes = this.relationCountAttributes.map(relationCount => new RelationCountAttribute(this, relationCount));\n map.wheres = this.wheres.map(where => ({ ...where }));\n map.havings = this.havings.map(having => ({ ...having }));\n map.orderBys = Object.assign({}, this.orderBys);\n map.groupBys = this.groupBys.map(groupBy => groupBy);\n map.limit = this.limit;\n map.offset = this.offset;\n map.skip = this.skip;\n map.take = this.take;\n map.lockMode = this.lockMode;\n map.lockVersion = this.lockVersion;\n map.withDeleted = this.withDeleted;\n map.parameters = Object.assign({}, this.parameters);\n map.disableEscaping = this.disableEscaping;\n map.enableRelationIdValues = this.enableRelationIdValues;\n map.extraAppendedAndWhereCondition = this.extraAppendedAndWhereCondition;\n map.subQuery = this.subQuery;\n map.aliasNamePrefixingEnabled = this.aliasNamePrefixingEnabled;\n map.cache = this.cache;\n map.cacheId = this.cacheId;\n map.cacheDuration = this.cacheDuration;\n map.relationPropertyPath = this.relationPropertyPath;\n map.of = this.of;\n map.insertColumns = this.insertColumns;\n map.whereEntities = this.whereEntities;\n map.updateEntity = this.updateEntity;\n map.callListeners = this.callListeners;\n map.useTransaction = this.useTransaction;\n map.nativeParameters = Object.assign({}, this.nativeParameters);\n return map;\n }\n\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/query-builder/QueryExpressionMap.ts"],"names":[],"mappings":"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","file":"QueryExpressionMap.js","sourcesContent":["import {Alias} from \"./Alias\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {JoinAttribute} from \"./JoinAttribute\";\nimport {RelationIdAttribute} from \"./relation-id/RelationIdAttribute\";\nimport {RelationCountAttribute} from \"./relation-count/RelationCountAttribute\";\nimport {Connection} from \"../connection/Connection\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {SelectQuery} from \"./SelectQuery\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\nimport {RelationMetadata} from \"../metadata/RelationMetadata\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {SelectQueryBuilderOption} from \"./SelectQueryBuilderOption\";\n\n/**\n * Contains all properties of the QueryBuilder that needs to be build a final query.\n */\nexport class QueryExpressionMap {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Indicates if QueryBuilder used to select entities and not a raw results.\n */\n queryEntity: boolean = false;\n\n /**\n * Main alias is a main selection object selected by QueryBuilder.\n */\n mainAlias?: Alias;\n\n /**\n * All aliases (including main alias) used in the query.\n */\n aliases: Alias[] = [];\n\n /**\n * Represents query type. QueryBuilder is able to build SELECT, UPDATE and DELETE queries.\n */\n queryType: \"select\"|\"update\"|\"delete\"|\"insert\"|\"relation\"|\"soft-delete\"|\"restore\" = \"select\";\n\n /**\n * Data needs to be SELECT-ed.\n */\n selects: SelectQuery[] = [];\n\n /**\n * Whether SELECT is DISTINCT.\n */\n selectDistinct: boolean = false;\n\n /**\n * SELECT DISTINCT ON query (postgres).\n */\n selectDistinctOn: string[] = [];\n\n /**\n * FROM-s to be selected.\n */\n // froms: { target: string, alias: string }[] = [];\n\n /**\n * If update query was used, it needs \"update set\" - properties which will be updated by this query.\n * If insert query was used, it needs \"insert set\" - values that needs to be inserted.\n */\n valuesSet?: ObjectLiteral|ObjectLiteral[];\n\n /**\n * Optional returning (or output) clause for insert, update or delete queries.\n */\n returning: string|string[];\n\n /**\n * Extra returning columns to be added to the returning statement if driver supports it.\n */\n extraReturningColumns: ColumnMetadata[] = [];\n\n /**\n * Optional on conflict statement used in insertion query in postgres.\n */\n onConflict: string = \"\";\n\n /**\n * Optional on ignore statement used in insertion query in databases.\n */\n onIgnore: string|boolean = false;\n\n /**\n * Optional on update statement used in insertion query in databases.\n */\n onUpdate: { columns?: string, conflict?: string, overwrite?: string };\n\n /**\n * JOIN queries.\n */\n joinAttributes: JoinAttribute[] = [];\n\n /**\n * RelationId queries.\n */\n relationIdAttributes: RelationIdAttribute[] = [];\n\n /**\n * Relation count queries.\n */\n relationCountAttributes: RelationCountAttribute[] = [];\n\n /**\n * WHERE queries.\n */\n wheres: { type: \"simple\"|\"and\"|\"or\", condition: string }[] = [];\n\n /**\n * HAVING queries.\n */\n havings: { type: \"simple\"|\"and\"|\"or\", condition: string }[] = [];\n\n /**\n * ORDER BY queries.\n */\n orderBys: OrderByCondition = {};\n\n /**\n * GROUP BY queries.\n */\n groupBys: string[] = [];\n\n /**\n * LIMIT query.\n */\n limit?: number;\n\n /**\n * OFFSET query.\n */\n offset?: number;\n\n /**\n * Number of rows to skip of result using pagination.\n */\n skip?: number;\n\n /**\n * Number of rows to take using pagination.\n */\n take?: number;\n\n /**\n * Locking mode.\n */\n lockMode?: \"optimistic\"|\"pessimistic_read\"|\"pessimistic_write\"|\"dirty_read\"|\"pessimistic_partial_write\"|\"pessimistic_write_or_fail\"|\"for_no_key_update\";\n\n /**\n * Current version of the entity, used for locking.\n */\n lockVersion?: number|Date;\n\n /**\n * Indicates if soft-deleted rows should be included in entity result.\n * By default the soft-deleted rows are not included.\n */\n withDeleted: boolean = false;\n\n /**\n * Parameters used to be escaped in final query.\n */\n parameters: ObjectLiteral = {};\n\n /**\n * Indicates if alias, table names and column names will be ecaped by driver, or not.\n *\n * todo: rename to isQuotingDisabled, also think if it should be named \"escaping\"\n */\n disableEscaping: boolean = true;\n\n /**\n * Indicates if virtual columns should be included in entity result.\n *\n * todo: what to do with it? is it properly used? what about persistence?\n */\n enableRelationIdValues: boolean = false;\n\n /**\n * Extra where condition appended to the end of original where conditions with AND keyword.\n * Original condition will be wrapped into brackets.\n */\n extraAppendedAndWhereCondition: string = \"\";\n\n /**\n * Indicates if query builder creates a subquery.\n */\n subQuery: boolean = false;\n\n /**\n * If QueryBuilder was created in a subquery mode then its parent QueryBuilder (who created subquery) will be stored here.\n */\n parentQueryBuilder: QueryBuilder<any>;\n\n /**\n * Indicates if property names are prefixed with alias names during property replacement.\n * By default this is enabled, however we need this because aliases are not supported in UPDATE and DELETE queries,\n * but user can use them in WHERE expressions.\n */\n aliasNamePrefixingEnabled: boolean = true;\n\n /**\n * Indicates if query result cache is enabled or not.\n */\n cache: boolean = false;\n\n /**\n * Time in milliseconds in which cache will expire.\n * If not set then global caching time will be used.\n */\n cacheDuration: number;\n\n /**\n * Cache id.\n * Used to identifier your cache queries.\n */\n cacheId: string;\n\n /**\n * Options that define QueryBuilder behaviour.\n */\n options: SelectQueryBuilderOption[] = [];\n\n /**\n * Property path of relation to work with.\n * Used in relational query builder.\n */\n relationPropertyPath: string;\n\n /**\n * Entity (target) which relations will be updated.\n */\n of: any|any[];\n\n /**\n * List of columns where data should be inserted.\n * Used in INSERT query.\n */\n insertColumns: string[] = [];\n\n /**\n * Used if user wants to update or delete a specific entities.\n */\n whereEntities: ObjectLiteral[] = [];\n\n /**\n * Indicates if entity must be updated after insertion / updation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n */\n updateEntity: boolean = true;\n\n /**\n * Indicates if listeners and subscribers must be called before and after query execution.\n */\n callListeners: boolean = true;\n\n /**\n * Indicates if query must be wrapped into transaction.\n */\n useTransaction: boolean = false;\n\n /**\n * Extra parameters.\n * Used in InsertQueryBuilder to avoid default parameters mechanizm and execute high performance insertions.\n */\n nativeParameters: ObjectLiteral = {};\n\n /**\n * Query Comment to include extra information for debugging or other purposes.\n */\n comment?: string;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection) {\n }\n\n // -------------------------------------------------------------------------\n // Accessors\n // -------------------------------------------------------------------------\n\n /**\n * Get all ORDER BY queries - if order by is specified by user then it uses them,\n * otherwise it uses default entity order by if it was set.\n */\n get allOrderBys() {\n if (!Object.keys(this.orderBys).length && this.mainAlias!.hasMetadata && this.options.indexOf(\"disable-global-order\") === -1) {\n const entityOrderBy = this.mainAlias!.metadata.orderBy || {};\n return Object.keys(entityOrderBy).reduce((orderBy, key) => {\n orderBy[this.mainAlias!.name + \".\" + key] = entityOrderBy[key];\n return orderBy;\n }, {} as OrderByCondition);\n }\n\n return this.orderBys;\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates a main alias and adds it to the current expression map.\n */\n setMainAlias(alias: Alias): Alias {\n\n // if main alias is already set then remove it from the array\n // if (this.mainAlias)\n // this.aliases.splice(this.aliases.indexOf(this.mainAlias));\n\n // set new main alias\n this.mainAlias = alias;\n\n return alias;\n }\n\n /**\n * Creates a new alias and adds it to the current expression map.\n */\n createAlias(options: { type: \"from\"|\"select\"|\"join\"|\"other\", name?: string, target?: Function|string, tablePath?: string, subQuery?: string, metadata?: EntityMetadata }): Alias {\n\n let aliasName = options.name;\n if (!aliasName && options.tablePath)\n aliasName = options.tablePath;\n if (!aliasName && options.target instanceof Function)\n aliasName = options.target.name;\n if (!aliasName && typeof options.target === \"string\")\n aliasName = options.target;\n\n const alias = new Alias();\n alias.type = options.type;\n if (aliasName)\n alias.name = aliasName;\n if (options.metadata)\n alias.metadata = options.metadata;\n if (options.target && !alias.hasMetadata)\n alias.metadata = this.connection.getMetadata(options.target);\n if (options.tablePath)\n alias.tablePath = options.tablePath;\n if (options.subQuery)\n alias.subQuery = options.subQuery;\n\n this.aliases.push(alias);\n return alias;\n }\n\n /**\n * Finds alias with the given name.\n * If alias was not found it throw an exception.\n */\n findAliasByName(aliasName: string): Alias {\n const alias = this.aliases.find(alias => alias.name === aliasName);\n if (!alias)\n throw new Error(`\"${aliasName}\" alias was not found. Maybe you forgot to join it?`);\n\n return alias;\n }\n\n findColumnByAliasExpression(aliasExpression: string): ColumnMetadata|undefined {\n const [aliasName, propertyPath] = aliasExpression.split(\".\");\n const alias = this.findAliasByName(aliasName);\n return alias.metadata.findColumnWithPropertyName(propertyPath);\n }\n\n /**\n * Gets relation metadata of the relation this query builder works with.\n *\n * todo: add proper exceptions\n */\n get relationMetadata(): RelationMetadata {\n if (!this.mainAlias)\n throw new Error(`Entity to work with is not specified!`); // todo: better message\n\n const relationMetadata = this.mainAlias.metadata.findRelationWithPropertyPath(this.relationPropertyPath);\n if (!relationMetadata)\n throw new Error(`Relation ${this.relationPropertyPath} was not found in entity ${this.mainAlias.name}`); // todo: better message\n\n return relationMetadata;\n }\n\n /**\n * Copies all properties of the current QueryExpressionMap into a new one.\n * Useful when QueryBuilder needs to create a copy of itself.\n */\n clone(): QueryExpressionMap {\n const map = new QueryExpressionMap(this.connection);\n map.queryType = this.queryType;\n map.selects = this.selects.map(select => select);\n map.selectDistinct = this.selectDistinct;\n map.selectDistinctOn = this.selectDistinctOn;\n this.aliases.forEach(alias => map.aliases.push(new Alias(alias)));\n map.mainAlias = this.mainAlias;\n map.valuesSet = this.valuesSet;\n map.returning = this.returning;\n map.onConflict = this.onConflict;\n map.onIgnore = this.onIgnore;\n map.onUpdate = this.onUpdate;\n map.joinAttributes = this.joinAttributes.map(join => new JoinAttribute(this.connection, this, join));\n map.relationIdAttributes = this.relationIdAttributes.map(relationId => new RelationIdAttribute(this, relationId));\n map.relationCountAttributes = this.relationCountAttributes.map(relationCount => new RelationCountAttribute(this, relationCount));\n map.wheres = this.wheres.map(where => ({ ...where }));\n map.havings = this.havings.map(having => ({ ...having }));\n map.orderBys = Object.assign({}, this.orderBys);\n map.groupBys = this.groupBys.map(groupBy => groupBy);\n map.limit = this.limit;\n map.offset = this.offset;\n map.skip = this.skip;\n map.take = this.take;\n map.lockMode = this.lockMode;\n map.lockVersion = this.lockVersion;\n map.withDeleted = this.withDeleted;\n map.parameters = Object.assign({}, this.parameters);\n map.disableEscaping = this.disableEscaping;\n map.enableRelationIdValues = this.enableRelationIdValues;\n map.extraAppendedAndWhereCondition = this.extraAppendedAndWhereCondition;\n map.subQuery = this.subQuery;\n map.aliasNamePrefixingEnabled = this.aliasNamePrefixingEnabled;\n map.cache = this.cache;\n map.cacheId = this.cacheId;\n map.cacheDuration = this.cacheDuration;\n map.relationPropertyPath = this.relationPropertyPath;\n map.of = this.of;\n map.insertColumns = this.insertColumns;\n map.whereEntities = this.whereEntities;\n map.updateEntity = this.updateEntity;\n map.callListeners = this.callListeners;\n map.useTransaction = this.useTransaction;\n map.nativeParameters = Object.assign({}, this.nativeParameters);\n return map;\n }\n\n}\n"],"sourceRoot":".."}
@@ -513,6 +513,10 @@ export declare class SelectQueryBuilder<Entity> extends QueryBuilder<Entity> imp
513
513
  * Gets single entity returned by execution of generated query builder sql.
514
514
  */
515
515
  getOne(): Promise<Entity | undefined>;
516
+ /**
517
+ * Gets the first entity returned by execution of generated query builder sql or rejects the returned promise on error.
518
+ */
519
+ getOneOrFail(): Promise<Entity>;
516
520
  /**
517
521
  * Gets entities returned by execution of generated query builder sql.
518
522
  */
@@ -583,6 +587,7 @@ export declare class SelectQueryBuilder<Entity> extends QueryBuilder<Entity> imp
583
587
  protected createHavingExpression(): string;
584
588
  protected buildEscapedEntityColumnSelects(aliasName: string, metadata: EntityMetadata): SelectQuery[];
585
589
  protected findEntityColumnSelects(aliasName: string, metadata: EntityMetadata): SelectQuery[];
590
+ private computeCountExpression;
586
591
  protected executeCountQuery(queryRunner: QueryRunner): Promise<number>;
587
592
  /**
588
593
  * Executes sql generated by query builder and returns object with raw results and entities created from them.
@@ -27,6 +27,7 @@ var ObjectUtils_1 = require("../util/ObjectUtils");
27
27
  var DriverUtils_1 = require("../driver/DriverUtils");
28
28
  var AuroraDataApiDriver_1 = require("../driver/aurora-data-api/AuroraDataApiDriver");
29
29
  var CockroachDriver_1 = require("../driver/cockroachdb/CockroachDriver");
30
+ var EntityNotFoundError_1 = require("../error/EntityNotFoundError");
30
31
  /**
31
32
  * Allows to build complex sql queries in a fashion way and execute those queries.
32
33
  */
@@ -42,7 +43,8 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
42
43
  * Gets generated sql query without parameters being replaced.
43
44
  */
44
45
  SelectQueryBuilder.prototype.getQuery = function () {
45
- var sql = this.createSelectExpression();
46
+ var sql = this.createComment();
47
+ sql += this.createSelectExpression();
46
48
  sql += this.createJoinExpression();
47
49
  sql += this.createWhereExpression();
48
50
  sql += this.createGroupByExpression();
@@ -678,6 +680,25 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
678
680
  });
679
681
  });
680
682
  };
683
+ /**
684
+ * Gets the first entity returned by execution of generated query builder sql or rejects the returned promise on error.
685
+ */
686
+ SelectQueryBuilder.prototype.getOneOrFail = function () {
687
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
688
+ var entity;
689
+ return tslib_1.__generator(this, function (_a) {
690
+ switch (_a.label) {
691
+ case 0: return [4 /*yield*/, this.getOne()];
692
+ case 1:
693
+ entity = _a.sent();
694
+ if (!entity) {
695
+ throw new EntityNotFoundError_1.EntityNotFoundError(this.expressionMap.mainAlias.target, this);
696
+ }
697
+ return [2 /*return*/, entity];
698
+ }
699
+ });
700
+ });
701
+ };
681
702
  /**
682
703
  * Gets entities returned by execution of generated query builder sql.
683
704
  */
@@ -1326,49 +1347,61 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1326
1347
  return metadata.columns.some(function (column) { return select.selection === aliasName + "." + column.propertyPath; });
1327
1348
  });
1328
1349
  };
1350
+ SelectQueryBuilder.prototype.computeCountExpression = function () {
1351
+ var _this = this;
1352
+ var mainAlias = this.expressionMap.mainAlias.name; // todo: will this work with "fromTableName"?
1353
+ var metadata = this.expressionMap.mainAlias.metadata;
1354
+ var primaryColumns = metadata.primaryColumns;
1355
+ var distinctAlias = this.escape(mainAlias);
1356
+ // If we aren't doing anything that will create a join, we can use a simpler `COUNT` instead
1357
+ // so we prevent poor query patterns in the most likely cases
1358
+ if (this.expressionMap.joinAttributes.length === 0 &&
1359
+ this.expressionMap.relationIdAttributes.length === 0 &&
1360
+ this.expressionMap.relationCountAttributes.length === 0) {
1361
+ return "COUNT(1)";
1362
+ }
1363
+ // For everything else, we'll need to do some hackery to get the correct count values.
1364
+ if (this.connection.driver instanceof CockroachDriver_1.CockroachDriver || this.connection.driver instanceof PostgresDriver_1.PostgresDriver) {
1365
+ // Postgres and CockroachDB can pass multiple parameters to the `DISTINCT` function
1366
+ // https://www.postgresql.org/docs/9.5/sql-select.html#SQL-DISTINCT
1367
+ return "COUNT(DISTINCT(" +
1368
+ primaryColumns.map(function (c) { return distinctAlias + "." + _this.escape(c.databaseName); }).join(", ") +
1369
+ "))";
1370
+ }
1371
+ if (this.connection.driver instanceof MysqlDriver_1.MysqlDriver) {
1372
+ // MySQL & MariaDB can pass multiple parameters to the `DISTINCT` language construct
1373
+ // https://mariadb.com/kb/en/count-distinct/
1374
+ return "COUNT(DISTINCT " +
1375
+ primaryColumns.map(function (c) { return distinctAlias + "." + _this.escape(c.databaseName); }).join(", ") +
1376
+ ")";
1377
+ }
1378
+ if (this.connection.driver instanceof SqlServerDriver_1.SqlServerDriver) {
1379
+ // SQL Server has gotta be different from everyone else. They don't support
1380
+ // distinct counting multiple columns & they don't have the same operator
1381
+ // characteristic for concatenating, so we gotta use the `CONCAT` function.
1382
+ // However, If it's exactly 1 column we can omit the `CONCAT` for better performance.
1383
+ var columnsExpression = primaryColumns.map(function (primaryColumn) { return distinctAlias + "." + _this.escape(primaryColumn.databaseName); }).join(", '|;|', ");
1384
+ if (primaryColumns.length === 1) {
1385
+ return "COUNT(DISTINCT(" + columnsExpression + "))";
1386
+ }
1387
+ return "COUNT(DISTINCT(CONCAT(" + columnsExpression + ")))";
1388
+ }
1389
+ // If all else fails, fall back to a `COUNT` and `DISTINCT` across all the primary columns concatenated.
1390
+ // Per the SQL spec, this is the canonical string concatenation mechanism which is most
1391
+ // likely to work across servers implementing the SQL standard.
1392
+ // Please note, if there is only one primary column that the concatenation does not occur in this
1393
+ // query and the query is a standard `COUNT DISTINCT` in that case.
1394
+ return "COUNT(DISTINCT(" +
1395
+ primaryColumns.map(function (c) { return distinctAlias + "." + _this.escape(c.databaseName); }).join(" || '|;|' || ") +
1396
+ "))";
1397
+ };
1329
1398
  SelectQueryBuilder.prototype.executeCountQuery = function (queryRunner) {
1330
1399
  return tslib_1.__awaiter(this, void 0, void 0, function () {
1331
- var mainAlias, metadata, distinctAlias, countSql, results;
1332
- var _this = this;
1400
+ var countSql, results;
1333
1401
  return tslib_1.__generator(this, function (_a) {
1334
1402
  switch (_a.label) {
1335
1403
  case 0:
1336
- mainAlias = this.expressionMap.mainAlias.name;
1337
- metadata = this.expressionMap.mainAlias.metadata;
1338
- distinctAlias = this.escape(mainAlias);
1339
- countSql = "";
1340
- if (metadata.hasMultiplePrimaryKeys) {
1341
- if (this.connection.driver instanceof AbstractSqliteDriver_1.AbstractSqliteDriver) {
1342
- countSql = "COUNT(DISTINCT(" + metadata.primaryColumns.map(function (primaryColumn, index) {
1343
- var propertyName = _this.escape(primaryColumn.databaseName);
1344
- return distinctAlias + "." + propertyName;
1345
- }).join(" || ") + ")) as \"cnt\"";
1346
- }
1347
- else if (this.connection.driver instanceof CockroachDriver_1.CockroachDriver) {
1348
- countSql = "COUNT(DISTINCT(CONCAT(" + metadata.primaryColumns.map(function (primaryColumn, index) {
1349
- var propertyName = _this.escape(primaryColumn.databaseName);
1350
- return distinctAlias + "." + propertyName + "::text";
1351
- }).join(", ") + "))) as \"cnt\"";
1352
- }
1353
- else if (this.connection.driver instanceof OracleDriver_1.OracleDriver) {
1354
- countSql = "COUNT(DISTINCT(" + metadata.primaryColumns.map(function (primaryColumn, index) {
1355
- var propertyName = _this.escape(primaryColumn.databaseName);
1356
- return distinctAlias + "." + propertyName;
1357
- }).join(" || ") + ")) as \"cnt\"";
1358
- }
1359
- else {
1360
- countSql = "COUNT(DISTINCT(CONCAT(" + metadata.primaryColumns.map(function (primaryColumn, index) {
1361
- var propertyName = _this.escape(primaryColumn.databaseName);
1362
- return distinctAlias + "." + propertyName;
1363
- }).join(", ") + "))) as \"cnt\"";
1364
- }
1365
- }
1366
- else {
1367
- countSql = "COUNT(DISTINCT(" + metadata.primaryColumns.map(function (primaryColumn, index) {
1368
- var propertyName = _this.escape(primaryColumn.databaseName);
1369
- return distinctAlias + "." + propertyName;
1370
- }).join(", ") + ")) as \"cnt\"";
1371
- }
1404
+ countSql = this.computeCountExpression();
1372
1405
  return [4 /*yield*/, this.clone()
1373
1406
  .orderBy()
1374
1407
  .groupBy()
@@ -1376,7 +1409,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
1376
1409
  .limit(undefined)
1377
1410
  .skip(undefined)
1378
1411
  .take(undefined)
1379
- .select(countSql)
1412
+ .select(countSql, "cnt")
1380
1413
  .setOption("disable-global-order")
1381
1414
  .loadRawResults(queryRunner)];
1382
1415
  case 1: