typeorm 0.3.10-dev.f24b262 → 0.3.11-dev.5253c8f

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 (229) hide show
  1. package/README.md +3 -1
  2. package/browser/data-source/BaseDataSourceOptions.d.ts +4 -0
  3. package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
  4. package/browser/decorator/columns/VirtualColumn.d.ts +10 -0
  5. package/browser/decorator/columns/VirtualColumn.js +46 -0
  6. package/browser/decorator/columns/VirtualColumn.js.map +1 -0
  7. package/browser/decorator/options/RelationOptions.d.ts +5 -2
  8. package/browser/decorator/options/RelationOptions.js.map +1 -1
  9. package/browser/decorator/options/VirtualColumnOptions.d.ts +27 -0
  10. package/browser/decorator/options/VirtualColumnOptions.js +3 -0
  11. package/browser/decorator/options/VirtualColumnOptions.js.map +1 -0
  12. package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts +1 -0
  13. package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  14. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +4 -0
  15. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  16. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +1 -1
  17. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +5 -3
  18. package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  19. package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.d.ts +1 -0
  20. package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
  21. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +1 -0
  22. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  23. package/browser/driver/capacitor/CapacitorConnectionOptions.d.ts +1 -0
  24. package/browser/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
  25. package/browser/driver/cockroachdb/CockroachDriver.js +1 -0
  26. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  27. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +1 -1
  28. package/browser/driver/cockroachdb/CockroachQueryRunner.js +5 -3
  29. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  30. package/browser/driver/cordova/CordovaConnectionOptions.d.ts +1 -0
  31. package/browser/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  32. package/browser/driver/expo/ExpoConnectionOptions.d.ts +1 -0
  33. package/browser/driver/expo/ExpoConnectionOptions.js.map +1 -1
  34. package/browser/driver/mongodb/MongoConnectionOptions.d.ts +0 -4
  35. package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  36. package/browser/driver/mysql/MysqlDriver.js +9 -1
  37. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  38. package/browser/driver/mysql/MysqlQueryRunner.d.ts +1 -1
  39. package/browser/driver/mysql/MysqlQueryRunner.js +5 -3
  40. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  41. package/browser/driver/nativescript/NativescriptConnectionOptions.d.ts +1 -0
  42. package/browser/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
  43. package/browser/driver/oracle/OracleDriver.js +6 -0
  44. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  45. package/browser/driver/oracle/OracleQueryRunner.d.ts +1 -1
  46. package/browser/driver/oracle/OracleQueryRunner.js +5 -3
  47. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  48. package/browser/driver/postgres/PostgresDriver.js +5 -0
  49. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  50. package/browser/driver/postgres/PostgresQueryRunner.d.ts +1 -1
  51. package/browser/driver/postgres/PostgresQueryRunner.js +5 -3
  52. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  53. package/browser/driver/react-native/ReactNativeConnectionOptions.d.ts +1 -0
  54. package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  55. package/browser/driver/sap/SapConnectionOptions.d.ts +1 -0
  56. package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
  57. package/browser/driver/sap/SapDriver.js +4 -0
  58. package/browser/driver/sap/SapDriver.js.map +1 -1
  59. package/browser/driver/sap/SapQueryRunner.d.ts +1 -1
  60. package/browser/driver/sap/SapQueryRunner.js +5 -3
  61. package/browser/driver/sap/SapQueryRunner.js.map +1 -1
  62. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +1 -0
  63. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  64. package/browser/driver/spanner/SpannerDriver.js +4 -0
  65. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  66. package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +1 -0
  67. package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  68. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -0
  69. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  70. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +1 -1
  71. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +5 -3
  72. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  73. package/browser/driver/sqljs/SqljsConnectionOptions.d.ts +1 -0
  74. package/browser/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  75. package/browser/driver/sqljs/SqljsDriver.d.ts +1 -0
  76. package/browser/driver/sqljs/SqljsDriver.js +3 -1
  77. package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
  78. package/browser/driver/sqljs/SqljsQueryRunner.js +3 -1
  79. package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  80. package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +1 -0
  81. package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  82. package/browser/driver/sqlserver/SqlServerDriver.js +4 -0
  83. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  84. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
  85. package/browser/driver/sqlserver/SqlServerQueryRunner.js +5 -3
  86. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  87. package/browser/entity-schema/EntitySchemaRelationOptions.d.ts +4 -2
  88. package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  89. package/browser/index.d.ts +1 -0
  90. package/browser/index.js +1 -0
  91. package/browser/index.js.map +1 -1
  92. package/browser/metadata/ColumnMetadata.d.ts +12 -0
  93. package/browser/metadata/ColumnMetadata.js +13 -0
  94. package/browser/metadata/ColumnMetadata.js.map +1 -1
  95. package/browser/metadata/RelationMetadata.d.ts +4 -2
  96. package/browser/metadata/RelationMetadata.js.map +1 -1
  97. package/browser/metadata-args/types/ColumnMode.d.ts +1 -1
  98. package/browser/metadata-args/types/ColumnMode.js.map +1 -1
  99. package/browser/metadata-builder/EntityMetadataValidator.js +9 -5
  100. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  101. package/browser/migration/MigrationExecutor.js +13 -3
  102. package/browser/migration/MigrationExecutor.js.map +1 -1
  103. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +30 -27
  104. package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  105. package/browser/query-builder/SelectQueryBuilder.js +23 -4
  106. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  107. package/browser/query-runner/QueryRunner.d.ts +1 -1
  108. package/browser/query-runner/QueryRunner.js.map +1 -1
  109. package/browser/schema-builder/RdbmsSchemaBuilder.js +11 -5
  110. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  111. package/browser/schema-builder/table/Table.js +1 -1
  112. package/browser/schema-builder/table/Table.js.map +1 -1
  113. package/browser/util/DateUtils.js +2 -1
  114. package/browser/util/DateUtils.js.map +1 -1
  115. package/data-source/BaseDataSourceOptions.d.ts +4 -0
  116. package/data-source/BaseDataSourceOptions.js.map +1 -1
  117. package/decorator/columns/VirtualColumn.d.ts +10 -0
  118. package/decorator/columns/VirtualColumn.js +50 -0
  119. package/decorator/columns/VirtualColumn.js.map +1 -0
  120. package/decorator/options/RelationOptions.d.ts +5 -2
  121. package/decorator/options/RelationOptions.js.map +1 -1
  122. package/decorator/options/VirtualColumnOptions.d.ts +27 -0
  123. package/decorator/options/VirtualColumnOptions.js +4 -0
  124. package/decorator/options/VirtualColumnOptions.js.map +1 -0
  125. package/driver/aurora-mysql/AuroraMysqlConnectionOptions.d.ts +1 -0
  126. package/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
  127. package/driver/aurora-mysql/AuroraMysqlDriver.js +4 -0
  128. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  129. package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +1 -1
  130. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +5 -3
  131. package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
  132. package/driver/aurora-postgres/AuroraPostgresConnectionOptions.d.ts +1 -0
  133. package/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
  134. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +1 -0
  135. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  136. package/driver/capacitor/CapacitorConnectionOptions.d.ts +1 -0
  137. package/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
  138. package/driver/cockroachdb/CockroachDriver.js +1 -0
  139. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  140. package/driver/cockroachdb/CockroachQueryRunner.d.ts +1 -1
  141. package/driver/cockroachdb/CockroachQueryRunner.js +5 -3
  142. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  143. package/driver/cordova/CordovaConnectionOptions.d.ts +1 -0
  144. package/driver/cordova/CordovaConnectionOptions.js.map +1 -1
  145. package/driver/expo/ExpoConnectionOptions.d.ts +1 -0
  146. package/driver/expo/ExpoConnectionOptions.js.map +1 -1
  147. package/driver/mongodb/MongoConnectionOptions.d.ts +0 -4
  148. package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
  149. package/driver/mysql/MysqlDriver.js +9 -1
  150. package/driver/mysql/MysqlDriver.js.map +1 -1
  151. package/driver/mysql/MysqlQueryRunner.d.ts +1 -1
  152. package/driver/mysql/MysqlQueryRunner.js +5 -3
  153. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  154. package/driver/nativescript/NativescriptConnectionOptions.d.ts +1 -0
  155. package/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
  156. package/driver/oracle/OracleDriver.js +6 -0
  157. package/driver/oracle/OracleDriver.js.map +1 -1
  158. package/driver/oracle/OracleQueryRunner.d.ts +1 -1
  159. package/driver/oracle/OracleQueryRunner.js +5 -3
  160. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  161. package/driver/postgres/PostgresDriver.js +5 -0
  162. package/driver/postgres/PostgresDriver.js.map +1 -1
  163. package/driver/postgres/PostgresQueryRunner.d.ts +1 -1
  164. package/driver/postgres/PostgresQueryRunner.js +5 -3
  165. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  166. package/driver/react-native/ReactNativeConnectionOptions.d.ts +1 -0
  167. package/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
  168. package/driver/sap/SapConnectionOptions.d.ts +1 -0
  169. package/driver/sap/SapConnectionOptions.js.map +1 -1
  170. package/driver/sap/SapDriver.js +4 -0
  171. package/driver/sap/SapDriver.js.map +1 -1
  172. package/driver/sap/SapQueryRunner.d.ts +1 -1
  173. package/driver/sap/SapQueryRunner.js +5 -3
  174. package/driver/sap/SapQueryRunner.js.map +1 -1
  175. package/driver/spanner/SpannerConnectionOptions.d.ts +1 -0
  176. package/driver/spanner/SpannerConnectionOptions.js.map +1 -1
  177. package/driver/spanner/SpannerDriver.js +4 -0
  178. package/driver/spanner/SpannerDriver.js.map +1 -1
  179. package/driver/sqlite/SqliteConnectionOptions.d.ts +1 -0
  180. package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
  181. package/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -0
  182. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  183. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +1 -1
  184. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +5 -3
  185. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  186. package/driver/sqljs/SqljsConnectionOptions.d.ts +1 -0
  187. package/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
  188. package/driver/sqljs/SqljsDriver.d.ts +1 -0
  189. package/driver/sqljs/SqljsDriver.js +3 -1
  190. package/driver/sqljs/SqljsDriver.js.map +1 -1
  191. package/driver/sqljs/SqljsQueryRunner.js +3 -1
  192. package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
  193. package/driver/sqlserver/SqlServerConnectionOptions.d.ts +1 -0
  194. package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
  195. package/driver/sqlserver/SqlServerDriver.js +4 -0
  196. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  197. package/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -1
  198. package/driver/sqlserver/SqlServerQueryRunner.js +5 -3
  199. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  200. package/entity-schema/EntitySchemaRelationOptions.d.ts +4 -2
  201. package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
  202. package/index.d.ts +1 -0
  203. package/index.js +1 -0
  204. package/index.js.map +1 -1
  205. package/index.mjs +2 -0
  206. package/metadata/ColumnMetadata.d.ts +12 -0
  207. package/metadata/ColumnMetadata.js +13 -0
  208. package/metadata/ColumnMetadata.js.map +1 -1
  209. package/metadata/RelationMetadata.d.ts +4 -2
  210. package/metadata/RelationMetadata.js.map +1 -1
  211. package/metadata-args/types/ColumnMode.d.ts +1 -1
  212. package/metadata-args/types/ColumnMode.js.map +1 -1
  213. package/metadata-builder/EntityMetadataValidator.js +9 -5
  214. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  215. package/migration/MigrationExecutor.js +13 -3
  216. package/migration/MigrationExecutor.js.map +1 -1
  217. package/package.json +1 -1
  218. package/persistence/subject-builder/OneToManySubjectBuilder.js +30 -27
  219. package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
  220. package/query-builder/SelectQueryBuilder.js +23 -4
  221. package/query-builder/SelectQueryBuilder.js.map +1 -1
  222. package/query-runner/QueryRunner.d.ts +1 -1
  223. package/query-runner/QueryRunner.js.map +1 -1
  224. package/schema-builder/RdbmsSchemaBuilder.js +11 -5
  225. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  226. package/schema-builder/table/Table.js +1 -1
  227. package/schema-builder/table/Table.js.map +1 -1
  228. package/util/DateUtils.js +2 -1
  229. package/util/DateUtils.js.map +1 -1
package/README.md CHANGED
@@ -1289,7 +1289,7 @@ There are a few repositories which you can clone and start with:
1289
1289
 
1290
1290
  There are several extensions that simplify working with TypeORM and integrating it with other modules:
1291
1291
 
1292
- - [TypeORM + GraphQL framework](http://vesper-framework.com)
1292
+ - [TypeORM + GraphQL framework](https://github.com/vesper-framework/vesper)
1293
1293
  - [TypeORM integration](https://github.com/typeorm/typeorm-typedi-extensions) with [TypeDI](https://github.com/pleerock/typedi)
1294
1294
  - [TypeORM integration](https://github.com/typeorm/typeorm-routing-controllers-extensions) with [routing-controllers](https://github.com/pleerock/routing-controllers)
1295
1295
  - Models generation from existing database - [typeorm-model-generator](https://github.com/Kononnable/typeorm-model-generator)
@@ -1298,6 +1298,8 @@ There are several extensions that simplify working with TypeORM and integrating
1298
1298
  - another ER Diagram generator - [erdia](https://www.npmjs.com/package/erdia/)
1299
1299
  - Create, drop & seed database - [typeorm-extension](https://github.com/tada5hi/typeorm-extension)
1300
1300
  - Automatically update `data-source.ts` after generating migrations/entities - [typeorm-codebase-sync](https://www.npmjs.com/package/typeorm-codebase-sync)
1301
+ - Easy manipulation of `relations` objects - [typeorm-relations](https://npmjs.com/package/typeorm-relations)
1302
+ - Automatically generate `relations` based on a GraphQL query - [typeorm-relations-graphql](https://npmjs.com/package/typeorm-relations-graphql)
1301
1303
 
1302
1304
  ## Contributing
1303
1305
 
@@ -68,6 +68,10 @@ export interface BaseDataSourceOptions {
68
68
  * Maximum number of milliseconds query should be executed before logger log a warning.
69
69
  */
70
70
  readonly maxQueryExecutionTime?: number;
71
+ /**
72
+ * Maximum number of clients the pool should contain.
73
+ */
74
+ readonly poolSize?: number;
71
75
  /**
72
76
  * Indicates if database schema should be auto created on every application launch.
73
77
  * Be careful with this option and don't use this in production - otherwise you can lose production data.
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/data-source/BaseDataSourceOptions.ts"],"names":[],"mappings":"","file":"BaseDataSourceOptions.js","sourcesContent":["import { EntitySchema } from \"../entity-schema/EntitySchema\"\nimport { LoggerOptions } from \"../logger/LoggerOptions\"\nimport { NamingStrategyInterface } from \"../naming-strategy/NamingStrategyInterface\"\nimport { DatabaseType } from \"../driver/types/DatabaseType\"\nimport { Logger } from \"../logger/Logger\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { QueryResultCache } from \"../cache/QueryResultCache\"\nimport { MixedList } from \"../common/MixedList\"\n\n/**\n * BaseDataSourceOptions is set of DataSourceOptions shared by all database types.\n */\nexport interface BaseDataSourceOptions {\n /**\n * Database type. This value is required.\n */\n readonly type: DatabaseType\n\n /**\n * Connection name. If connection name is not given then it will be called \"default\".\n * Different connections must have different names.\n *\n * @deprecated\n */\n readonly name?: string\n\n /**\n * Entities to be loaded for this connection.\n * Accepts both entity classes and directories where from entities need to be loaded.\n * Directories support glob patterns.\n */\n readonly entities?: MixedList<Function | string | EntitySchema>\n\n /**\n * Subscribers to be loaded for this connection.\n * Accepts both subscriber classes and directories where from subscribers need to be loaded.\n * Directories support glob patterns.\n */\n readonly subscribers?: MixedList<Function | string>\n\n /**\n * Migrations to be loaded for this connection.\n * Accepts both migration classes and glob patterns representing migration files.\n */\n readonly migrations?: MixedList<Function | string>\n\n /**\n * Migrations table name, in case of different name from \"migrations\".\n * Accepts single string name.\n */\n readonly migrationsTableName?: string\n\n /**\n * Transaction mode for migrations to run in\n */\n readonly migrationsTransactionMode?: \"all\" | \"none\" | \"each\"\n\n /**\n * Typeorm metadata table name, in case of different name from \"typeorm_metadata\".\n * Accepts single string name.\n */\n readonly metadataTableName?: string\n\n /**\n * Naming strategy to be used to name tables and columns in the database.\n */\n readonly namingStrategy?: NamingStrategyInterface\n\n /**\n * Logging options.\n */\n readonly logging?: LoggerOptions\n\n /**\n * Logger instance used to log queries and events in the ORM.\n */\n readonly logger?:\n | \"advanced-console\"\n | \"simple-console\"\n | \"file\"\n | \"debug\"\n | Logger\n\n /**\n * Maximum number of milliseconds query should be executed before logger log a warning.\n */\n readonly maxQueryExecutionTime?: number\n\n /**\n * Indicates if database schema should be auto created on every application launch.\n * Be careful with this option and don't use this in production - otherwise you can lose production data.\n * This option is useful during debug and development.\n * Alternative to it, you can use CLI and run schema:sync command.\n *\n * Note that for MongoDB database it does not create schema, because MongoDB is schemaless.\n * Instead, it syncs just by creating indices.\n */\n readonly synchronize?: boolean\n\n /**\n * Indicates if migrations should be auto run on every application launch.\n * Alternative to it, you can use CLI and run migrations:run command.\n */\n readonly migrationsRun?: boolean\n\n /**\n * Drops the schema each time connection is being established.\n * Be careful with this option and don't use this in production - otherwise you'll lose all production data.\n * This option is useful during debug and development.\n */\n readonly dropSchema?: boolean\n\n /**\n * Prefix to use on all tables (collections) of this connection in the database.\n */\n readonly entityPrefix?: string\n\n /**\n * When creating new Entity instances, skip all constructors when true.\n */\n readonly entitySkipConstructor?: boolean\n\n /**\n * Extra connection options to be passed to the underlying driver.\n *\n * todo: deprecate this and move all database-specific types into hts own connection options object.\n */\n readonly extra?: any\n\n /**\n * Specifies how relations must be loaded - using \"joins\" or separate queries.\n * If you are loading too much data with nested joins it's better to load relations\n * using separate queries.\n *\n * Default strategy is \"join\", but this default can be changed here.\n * Also, strategy can be set per-query in FindOptions and QueryBuilder.\n */\n readonly relationLoadStrategy?: \"join\" | \"query\"\n\n /**\n * Optionally applied \"typename\" to the model.\n * If set, then each hydrated model will have this property with the target model / entity name inside.\n *\n * (works like a discriminator property).\n */\n readonly typename?: string\n\n /**\n * Holds reference to the baseDirectory where configuration file are expected.\n *\n * @internal\n */\n baseDirectory?: string\n\n /**\n * Allows to setup cache options.\n */\n readonly cache?:\n | boolean\n | {\n /**\n * Type of caching.\n *\n * - \"database\" means cached values will be stored in the separate table in database. This is default value.\n * - \"redis\" means cached values will be stored inside redis. You must provide redis connection options.\n */\n readonly type?:\n | \"database\"\n | \"redis\"\n | \"ioredis\"\n | \"ioredis/cluster\" // todo: add mongodb and other cache providers as well in the future\n\n /**\n * Factory function for custom cache providers that implement QueryResultCache.\n */\n readonly provider?: (connection: DataSource) => QueryResultCache\n\n /**\n * Configurable table name for \"database\" type cache.\n * Default value is \"query-result-cache\"\n */\n readonly tableName?: string\n\n /**\n * Used to provide redis connection options.\n */\n readonly options?: any\n\n /**\n * If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.\n */\n readonly alwaysEnabled?: boolean\n\n /**\n * Time in milliseconds in which cache will expire.\n * This can be setup per-query.\n * Default value is 1000 which is equivalent to 1 second.\n */\n readonly duration?: number\n\n /**\n * Used to specify if cache errors should be ignored, and pass through the call to the Database.\n */\n readonly ignoreErrors?: boolean\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../browser/src/data-source/BaseDataSourceOptions.ts"],"names":[],"mappings":"","file":"BaseDataSourceOptions.js","sourcesContent":["import { EntitySchema } from \"../entity-schema/EntitySchema\"\nimport { LoggerOptions } from \"../logger/LoggerOptions\"\nimport { NamingStrategyInterface } from \"../naming-strategy/NamingStrategyInterface\"\nimport { DatabaseType } from \"../driver/types/DatabaseType\"\nimport { Logger } from \"../logger/Logger\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { QueryResultCache } from \"../cache/QueryResultCache\"\nimport { MixedList } from \"../common/MixedList\"\n\n/**\n * BaseDataSourceOptions is set of DataSourceOptions shared by all database types.\n */\nexport interface BaseDataSourceOptions {\n /**\n * Database type. This value is required.\n */\n readonly type: DatabaseType\n\n /**\n * Connection name. If connection name is not given then it will be called \"default\".\n * Different connections must have different names.\n *\n * @deprecated\n */\n readonly name?: string\n\n /**\n * Entities to be loaded for this connection.\n * Accepts both entity classes and directories where from entities need to be loaded.\n * Directories support glob patterns.\n */\n readonly entities?: MixedList<Function | string | EntitySchema>\n\n /**\n * Subscribers to be loaded for this connection.\n * Accepts both subscriber classes and directories where from subscribers need to be loaded.\n * Directories support glob patterns.\n */\n readonly subscribers?: MixedList<Function | string>\n\n /**\n * Migrations to be loaded for this connection.\n * Accepts both migration classes and glob patterns representing migration files.\n */\n readonly migrations?: MixedList<Function | string>\n\n /**\n * Migrations table name, in case of different name from \"migrations\".\n * Accepts single string name.\n */\n readonly migrationsTableName?: string\n\n /**\n * Transaction mode for migrations to run in\n */\n readonly migrationsTransactionMode?: \"all\" | \"none\" | \"each\"\n\n /**\n * Typeorm metadata table name, in case of different name from \"typeorm_metadata\".\n * Accepts single string name.\n */\n readonly metadataTableName?: string\n\n /**\n * Naming strategy to be used to name tables and columns in the database.\n */\n readonly namingStrategy?: NamingStrategyInterface\n\n /**\n * Logging options.\n */\n readonly logging?: LoggerOptions\n\n /**\n * Logger instance used to log queries and events in the ORM.\n */\n readonly logger?:\n | \"advanced-console\"\n | \"simple-console\"\n | \"file\"\n | \"debug\"\n | Logger\n\n /**\n * Maximum number of milliseconds query should be executed before logger log a warning.\n */\n readonly maxQueryExecutionTime?: number\n\n /**\n * Maximum number of clients the pool should contain.\n */\n readonly poolSize?: number\n\n /**\n * Indicates if database schema should be auto created on every application launch.\n * Be careful with this option and don't use this in production - otherwise you can lose production data.\n * This option is useful during debug and development.\n * Alternative to it, you can use CLI and run schema:sync command.\n *\n * Note that for MongoDB database it does not create schema, because MongoDB is schemaless.\n * Instead, it syncs just by creating indices.\n */\n readonly synchronize?: boolean\n\n /**\n * Indicates if migrations should be auto run on every application launch.\n * Alternative to it, you can use CLI and run migrations:run command.\n */\n readonly migrationsRun?: boolean\n\n /**\n * Drops the schema each time connection is being established.\n * Be careful with this option and don't use this in production - otherwise you'll lose all production data.\n * This option is useful during debug and development.\n */\n readonly dropSchema?: boolean\n\n /**\n * Prefix to use on all tables (collections) of this connection in the database.\n */\n readonly entityPrefix?: string\n\n /**\n * When creating new Entity instances, skip all constructors when true.\n */\n readonly entitySkipConstructor?: boolean\n\n /**\n * Extra connection options to be passed to the underlying driver.\n *\n * todo: deprecate this and move all database-specific types into hts own connection options object.\n */\n readonly extra?: any\n\n /**\n * Specifies how relations must be loaded - using \"joins\" or separate queries.\n * If you are loading too much data with nested joins it's better to load relations\n * using separate queries.\n *\n * Default strategy is \"join\", but this default can be changed here.\n * Also, strategy can be set per-query in FindOptions and QueryBuilder.\n */\n readonly relationLoadStrategy?: \"join\" | \"query\"\n\n /**\n * Optionally applied \"typename\" to the model.\n * If set, then each hydrated model will have this property with the target model / entity name inside.\n *\n * (works like a discriminator property).\n */\n readonly typename?: string\n\n /**\n * Holds reference to the baseDirectory where configuration file are expected.\n *\n * @internal\n */\n baseDirectory?: string\n\n /**\n * Allows to setup cache options.\n */\n readonly cache?:\n | boolean\n | {\n /**\n * Type of caching.\n *\n * - \"database\" means cached values will be stored in the separate table in database. This is default value.\n * - \"redis\" means cached values will be stored inside redis. You must provide redis connection options.\n */\n readonly type?:\n | \"database\"\n | \"redis\"\n | \"ioredis\"\n | \"ioredis/cluster\" // todo: add mongodb and other cache providers as well in the future\n\n /**\n * Factory function for custom cache providers that implement QueryResultCache.\n */\n readonly provider?: (connection: DataSource) => QueryResultCache\n\n /**\n * Configurable table name for \"database\" type cache.\n * Default value is \"query-result-cache\"\n */\n readonly tableName?: string\n\n /**\n * Used to provide redis connection options.\n */\n readonly options?: any\n\n /**\n * If set to true then queries (using find methods and QueryBuilder's methods) will always be cached.\n */\n readonly alwaysEnabled?: boolean\n\n /**\n * Time in milliseconds in which cache will expire.\n * This can be setup per-query.\n * Default value is 1000 which is equivalent to 1 second.\n */\n readonly duration?: number\n\n /**\n * Used to specify if cache errors should be ignored, and pass through the call to the Database.\n */\n readonly ignoreErrors?: boolean\n }\n}\n"],"sourceRoot":".."}
@@ -0,0 +1,10 @@
1
+ import { ColumnType } from "../../driver/types/ColumnTypes";
2
+ import { VirtualColumnOptions } from "../options/VirtualColumnOptions";
3
+ /**
4
+ * VirtualColumn decorator is used to mark a specific class property as a Virtual column.
5
+ */
6
+ export declare function VirtualColumn(options: VirtualColumnOptions): PropertyDecorator;
7
+ /**
8
+ * VirtualColumn decorator is used to mark a specific class property as a Virtual column.
9
+ */
10
+ export declare function VirtualColumn(typeOrOptions: ColumnType, options: VirtualColumnOptions): PropertyDecorator;
@@ -0,0 +1,46 @@
1
+ import { ColumnTypeUndefinedError } from "../../error";
2
+ import { getMetadataArgsStorage } from "../../globals";
3
+ /**
4
+ * VirtualColumn decorator is used to mark a specific class property as a Virtual column.
5
+ */
6
+ export function VirtualColumn(typeOrOptions, options) {
7
+ return function (object, propertyName) {
8
+ // normalize parameters
9
+ let type;
10
+ if (typeof typeOrOptions === "string") {
11
+ type = typeOrOptions;
12
+ }
13
+ else {
14
+ options = typeOrOptions;
15
+ type = options.type;
16
+ }
17
+ if (!(options === null || options === void 0 ? void 0 : options.query)) {
18
+ throw new Error("Column options must be defined for calculated columns.");
19
+ }
20
+ // if type is not given explicitly then try to guess it
21
+ const reflectMetadataType = Reflect && Reflect.getMetadata
22
+ ? Reflect.getMetadata("design:type", object, propertyName)
23
+ : undefined;
24
+ if (!type && reflectMetadataType)
25
+ // if type is not given explicitly then try to guess it
26
+ type = reflectMetadataType;
27
+ // check if there is no type in column options then set type from first function argument, or guessed one
28
+ if (type)
29
+ options.type = type;
30
+ // specify HSTORE type if column is HSTORE
31
+ if (options.type === "hstore" && !options.hstoreType)
32
+ options.hstoreType =
33
+ reflectMetadataType === Object ? "object" : "string";
34
+ // if we still don't have a type then we need to give error to user that type is required
35
+ if (!options.type)
36
+ throw new ColumnTypeUndefinedError(object, propertyName);
37
+ getMetadataArgsStorage().columns.push({
38
+ target: object.constructor,
39
+ propertyName: propertyName,
40
+ mode: "virtual-property",
41
+ options: options || {},
42
+ });
43
+ };
44
+ }
45
+
46
+ //# sourceMappingURL=VirtualColumn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../browser/src/decorator/columns/VirtualColumn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAgBtD;;GAEG;AACH,MAAM,UAAU,aAAa,CACzB,aAAiD,EACjD,OAA8B;IAE9B,OAAO,UAAU,MAAc,EAAE,YAAoB;QACjD,uBAAuB;QACvB,IAAI,IAA4B,CAAA;QAChC,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YACnC,IAAI,GAAe,aAAa,CAAA;SACnC;aAAM;YACH,OAAO,GAAyB,aAAa,CAAA;YAC7C,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;SACtB;QAED,IAAI,CAAC,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,CAAA,EAAE;YACjB,MAAM,IAAI,KAAK,CACX,wDAAwD,CAC3D,CAAA;SACJ;QAED,uDAAuD;QACvD,MAAM,mBAAmB,GACrB,OAAO,IAAK,OAAe,CAAC,WAAW;YACnC,CAAC,CAAE,OAAe,CAAC,WAAW,CACxB,aAAa,EACb,MAAM,EACN,YAAY,CACf;YACH,CAAC,CAAC,SAAS,CAAA;QACnB,IAAI,CAAC,IAAI,IAAI,mBAAmB;YAC5B,uDAAuD;YACvD,IAAI,GAAG,mBAAmB,CAAA;QAE9B,yGAAyG;QACzG,IAAI,IAAI;YAAE,OAAO,CAAC,IAAI,GAAG,IAAI,CAAA;QAE7B,0CAA0C;QAC1C,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,UAAU;YAChD,OAAO,CAAC,UAAU;gBACd,mBAAmB,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAA;QAE5D,yFAAyF;QACzF,IAAI,CAAC,OAAO,CAAC,IAAI;YACb,MAAM,IAAI,wBAAwB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAE5D,sBAAsB,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;YAClC,MAAM,EAAE,MAAM,CAAC,WAAW;YAC1B,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,OAAO,IAAI,EAAE;SACH,CAAC,CAAA;IAC5B,CAAC,CAAA;AACL,CAAC","file":"VirtualColumn.js","sourcesContent":["import { ColumnType } from \"../../driver/types/ColumnTypes\"\nimport { ColumnTypeUndefinedError } from \"../../error\"\nimport { getMetadataArgsStorage } from \"../../globals\"\nimport { ColumnMetadataArgs } from \"../../metadata-args/ColumnMetadataArgs\"\nimport { VirtualColumnOptions } from \"../options/VirtualColumnOptions\"\n/**\n * VirtualColumn decorator is used to mark a specific class property as a Virtual column.\n */\nexport function VirtualColumn(options: VirtualColumnOptions): PropertyDecorator\n\n/**\n * VirtualColumn decorator is used to mark a specific class property as a Virtual column.\n */\nexport function VirtualColumn(\n typeOrOptions: ColumnType,\n options: VirtualColumnOptions,\n): PropertyDecorator\n\n/**\n * VirtualColumn decorator is used to mark a specific class property as a Virtual column.\n */\nexport function VirtualColumn(\n typeOrOptions?: ColumnType | VirtualColumnOptions,\n options?: VirtualColumnOptions,\n): PropertyDecorator {\n return function (object: Object, propertyName: string) {\n // normalize parameters\n let type: ColumnType | undefined\n if (typeof typeOrOptions === \"string\") {\n type = <ColumnType>typeOrOptions\n } else {\n options = <VirtualColumnOptions>typeOrOptions\n type = options.type\n }\n\n if (!options?.query) {\n throw new Error(\n \"Column options must be defined for calculated columns.\",\n )\n }\n\n // if type is not given explicitly then try to guess it\n const reflectMetadataType =\n Reflect && (Reflect as any).getMetadata\n ? (Reflect as any).getMetadata(\n \"design:type\",\n object,\n propertyName,\n )\n : undefined\n if (!type && reflectMetadataType)\n // if type is not given explicitly then try to guess it\n type = reflectMetadataType\n\n // check if there is no type in column options then set type from first function argument, or guessed one\n if (type) options.type = type\n\n // specify HSTORE type if column is HSTORE\n if (options.type === \"hstore\" && !options.hstoreType)\n options.hstoreType =\n reflectMetadataType === Object ? \"object\" : \"string\"\n\n // if we still don't have a type then we need to give error to user that type is required\n if (!options.type)\n throw new ColumnTypeUndefinedError(object, propertyName)\n\n getMetadataArgsStorage().columns.push({\n target: object.constructor,\n propertyName: propertyName,\n mode: \"virtual-property\",\n options: options || {},\n } as ColumnMetadataArgs)\n }\n}\n"],"sourceRoot":"../.."}
@@ -55,7 +55,10 @@ export interface RelationOptions {
55
55
  */
56
56
  persistence?: boolean;
57
57
  /**
58
- * When a child row is removed from its parent, determines if the child row should be orphaned (default) or deleted.
58
+ * When a parent is saved (with cascading but) without a child row that still exists in database, this will control what shall happen to them.
59
+ * delete will remove these rows from database.
60
+ * nullify will remove the relation key.
61
+ * disable will keep the relation intact. Removal of related item is only possible through its own repo.
59
62
  */
60
- orphanedRowAction?: "nullify" | "delete" | "soft-delete";
63
+ orphanedRowAction?: "nullify" | "delete" | "soft-delete" | "disable";
61
64
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/decorator/options/RelationOptions.ts"],"names":[],"mappings":"","file":"RelationOptions.js","sourcesContent":["import { DeferrableType } from \"../../metadata/types/DeferrableType\"\nimport { OnDeleteType } from \"../../metadata/types/OnDeleteType\"\nimport { OnUpdateType } from \"../../metadata/types/OnUpdateType\"\n\n/**\n * Describes all relation's options.\n */\nexport interface RelationOptions {\n /**\n * Sets cascades options for the given relation.\n * If set to true then it means that related object can be allowed to be inserted or updated in the database.\n * You can separately restrict cascades to insertion or updation using following syntax:\n *\n * cascade: [\"insert\", \"update\", \"remove\", \"soft-remove\", \"recover\"] // include or exclude one of them\n */\n cascade?:\n | boolean\n | (\"insert\" | \"update\" | \"remove\" | \"soft-remove\" | \"recover\")[]\n\n /**\n * Indicates if relation column value can be nullable or not.\n */\n nullable?: boolean\n\n /**\n * Database cascade action on delete.\n */\n onDelete?: OnDeleteType\n\n /**\n * Database cascade action on update.\n */\n onUpdate?: OnUpdateType\n\n /**\n * Indicate if foreign key constraints can be deferred.\n */\n deferrable?: DeferrableType\n\n /**\n * Indicates whether foreign key constraints will be created for join columns.\n * Can be used only for many-to-one and owner one-to-one relations.\n * Defaults to true.\n */\n createForeignKeyConstraints?: boolean\n\n /**\n * Set this relation to be lazy. Note: lazy relations are promises. When you call them they return promise\n * which resolve relation result then. If your property's type is Promise then this relation is set to lazy automatically.\n */\n lazy?: boolean\n\n /**\n * Set this relation to be eager.\n * Eager relations are always loaded automatically when relation's owner entity is loaded using find* methods.\n * Only using QueryBuilder prevents loading eager relations.\n * Eager flag cannot be set from both sides of relation - you can eager load only one side of the relationship.\n */\n eager?: boolean\n\n /**\n * Indicates if persistence is enabled for the relation.\n * By default its enabled, but if you want to avoid any changes in the relation to be reflected in the database you can disable it.\n * If its disabled you can only change a relation from inverse side of a relation or using relation query builder functionality.\n * This is useful for performance optimization since its disabling avoid multiple extra queries during entity save.\n */\n persistence?: boolean\n\n /**\n * When a child row is removed from its parent, determines if the child row should be orphaned (default) or deleted.\n */\n orphanedRowAction?: \"nullify\" | \"delete\" | \"soft-delete\"\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/decorator/options/RelationOptions.ts"],"names":[],"mappings":"","file":"RelationOptions.js","sourcesContent":["import { DeferrableType } from \"../../metadata/types/DeferrableType\"\nimport { OnDeleteType } from \"../../metadata/types/OnDeleteType\"\nimport { OnUpdateType } from \"../../metadata/types/OnUpdateType\"\n\n/**\n * Describes all relation's options.\n */\nexport interface RelationOptions {\n /**\n * Sets cascades options for the given relation.\n * If set to true then it means that related object can be allowed to be inserted or updated in the database.\n * You can separately restrict cascades to insertion or updation using following syntax:\n *\n * cascade: [\"insert\", \"update\", \"remove\", \"soft-remove\", \"recover\"] // include or exclude one of them\n */\n cascade?:\n | boolean\n | (\"insert\" | \"update\" | \"remove\" | \"soft-remove\" | \"recover\")[]\n\n /**\n * Indicates if relation column value can be nullable or not.\n */\n nullable?: boolean\n\n /**\n * Database cascade action on delete.\n */\n onDelete?: OnDeleteType\n\n /**\n * Database cascade action on update.\n */\n onUpdate?: OnUpdateType\n\n /**\n * Indicate if foreign key constraints can be deferred.\n */\n deferrable?: DeferrableType\n\n /**\n * Indicates whether foreign key constraints will be created for join columns.\n * Can be used only for many-to-one and owner one-to-one relations.\n * Defaults to true.\n */\n createForeignKeyConstraints?: boolean\n\n /**\n * Set this relation to be lazy. Note: lazy relations are promises. When you call them they return promise\n * which resolve relation result then. If your property's type is Promise then this relation is set to lazy automatically.\n */\n lazy?: boolean\n\n /**\n * Set this relation to be eager.\n * Eager relations are always loaded automatically when relation's owner entity is loaded using find* methods.\n * Only using QueryBuilder prevents loading eager relations.\n * Eager flag cannot be set from both sides of relation - you can eager load only one side of the relationship.\n */\n eager?: boolean\n\n /**\n * Indicates if persistence is enabled for the relation.\n * By default its enabled, but if you want to avoid any changes in the relation to be reflected in the database you can disable it.\n * If its disabled you can only change a relation from inverse side of a relation or using relation query builder functionality.\n * This is useful for performance optimization since its disabling avoid multiple extra queries during entity save.\n */\n persistence?: boolean\n\n /**\n * When a parent is saved (with cascading but) without a child row that still exists in database, this will control what shall happen to them.\n * delete will remove these rows from database.\n * nullify will remove the relation key.\n * disable will keep the relation intact. Removal of related item is only possible through its own repo.\n */\n orphanedRowAction?: \"nullify\" | \"delete\" | \"soft-delete\" | \"disable\"\n}\n"],"sourceRoot":"../.."}
@@ -0,0 +1,27 @@
1
+ import { ColumnType } from "../../driver/types/ColumnTypes";
2
+ import { ValueTransformer } from "./ValueTransformer";
3
+ /**
4
+ * Describes all calculated column's options.
5
+ */
6
+ export interface VirtualColumnOptions {
7
+ /**
8
+ * Column type. Must be one of the value from the ColumnTypes class.
9
+ */
10
+ type?: ColumnType;
11
+ /**
12
+ * Return type of HSTORE column.
13
+ * Returns value as string or as object.
14
+ */
15
+ hstoreType?: "object" | "string";
16
+ /**
17
+ * Query to be used to populate the column data. This query is used when generating the relational db script.
18
+ * The query function is called with the current entities alias either defined by the Entity Decorator or automatically
19
+ * @See https://typeorm.io/decorator-reference#virtualcolumn for more details.
20
+ */
21
+ query: (alias: string) => string;
22
+ /**
23
+ * Specifies a value transformer(s) that is to be used to unmarshal
24
+ * this column when reading from the database.
25
+ */
26
+ transformer?: ValueTransformer | ValueTransformer[];
27
+ }
@@ -0,0 +1,3 @@
1
+ export {};
2
+
3
+ //# sourceMappingURL=VirtualColumnOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../browser/src/decorator/options/VirtualColumnOptions.ts"],"names":[],"mappings":"","file":"VirtualColumnOptions.js","sourcesContent":["import { ColumnType } from \"../../driver/types/ColumnTypes\"\nimport { ValueTransformer } from \"./ValueTransformer\"\n\n/**\n * Describes all calculated column's options.\n */\nexport interface VirtualColumnOptions {\n /**\n * Column type. Must be one of the value from the ColumnTypes class.\n */\n type?: ColumnType\n\n /**\n * Return type of HSTORE column.\n * Returns value as string or as object.\n */\n hstoreType?: \"object\" | \"string\"\n\n /**\n * Query to be used to populate the column data. This query is used when generating the relational db script.\n * The query function is called with the current entities alias either defined by the Entity Decorator or automatically\n * @See https://typeorm.io/decorator-reference#virtualcolumn for more details.\n */\n query: (alias: string) => string\n\n /**\n * Specifies a value transformer(s) that is to be used to unmarshal\n * this column when reading from the database.\n */\n transformer?: ValueTransformer | ValueTransformer[]\n}\n"],"sourceRoot":"../.."}
@@ -31,4 +31,5 @@ export interface AuroraMysqlConnectionOptions extends BaseDataSourceOptions, Aur
31
31
  * (Default: true)
32
32
  */
33
33
  readonly legacySpatialSupport?: boolean;
34
+ readonly poolSize?: never;
34
35
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/driver/aurora-mysql/AuroraMysqlConnectionOptions.ts"],"names":[],"mappings":"","file":"AuroraMysqlConnectionOptions.js","sourcesContent":["import { AuroraMysqlConnectionCredentialsOptions } from \"./AuroraMysqlConnectionCredentialsOptions\"\nimport { BaseDataSourceOptions } from \"../../data-source/BaseDataSourceOptions\"\n\n/**\n * MySQL specific connection options.\n *\n * @see https://github.com/mysqljs/mysql#connection-options\n */\nexport interface AuroraMysqlConnectionOptions\n extends BaseDataSourceOptions,\n AuroraMysqlConnectionCredentialsOptions {\n /**\n * Database type.\n */\n readonly type: \"aurora-mysql\"\n\n readonly region: string\n\n readonly secretArn: string\n\n readonly resourceArn: string\n\n readonly database: string\n\n /**\n * The driver object\n * This defaults to require(\"typeorm-aurora-data-api-driver\")\n */\n readonly driver?: any\n\n readonly serviceConfigOptions?: { [key: string]: any } // pass optional AWS.ConfigurationOptions here\n\n readonly formatOptions?: { [key: string]: any; castParameters: boolean }\n\n /**\n * Use spatial functions like GeomFromText and AsText which are removed in MySQL 8.\n * (Default: true)\n */\n readonly legacySpatialSupport?: boolean\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/driver/aurora-mysql/AuroraMysqlConnectionOptions.ts"],"names":[],"mappings":"","file":"AuroraMysqlConnectionOptions.js","sourcesContent":["import { AuroraMysqlConnectionCredentialsOptions } from \"./AuroraMysqlConnectionCredentialsOptions\"\nimport { BaseDataSourceOptions } from \"../../data-source/BaseDataSourceOptions\"\n\n/**\n * MySQL specific connection options.\n *\n * @see https://github.com/mysqljs/mysql#connection-options\n */\nexport interface AuroraMysqlConnectionOptions\n extends BaseDataSourceOptions,\n AuroraMysqlConnectionCredentialsOptions {\n /**\n * Database type.\n */\n readonly type: \"aurora-mysql\"\n\n readonly region: string\n\n readonly secretArn: string\n\n readonly resourceArn: string\n\n readonly database: string\n\n /**\n * The driver object\n * This defaults to require(\"typeorm-aurora-data-api-driver\")\n */\n readonly driver?: any\n\n readonly serviceConfigOptions?: { [key: string]: any } // pass optional AWS.ConfigurationOptions here\n\n readonly formatOptions?: { [key: string]: any; castParameters: boolean }\n\n /**\n * Use spatial functions like GeomFromText and AsText which are removed in MySQL 8.\n * (Default: true)\n */\n readonly legacySpatialSupport?: boolean\n\n readonly poolSize?: never\n}\n"],"sourceRoot":"../.."}
@@ -468,6 +468,10 @@ export class AuroraMysqlDriver {
468
468
  // convert to number if that exists in possible enum options
469
469
  value = parseInt(value);
470
470
  }
471
+ else if (columnMetadata.type === Number) {
472
+ // convert to number if number
473
+ value = !isNaN(+value) ? parseInt(value) : value;
474
+ }
471
475
  if (columnMetadata.transformer)
472
476
  value = ApplyValueTransformers.transformFrom(columnMetadata.transformer, value);
473
477
  return value;
@@ -1 +1 @@
1
- {"version":3,"sources":["../browser/src/driver/aurora-mysql/AuroraMysqlDriver.ts"],"names":[],"mappings":"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","file":"AuroraMysqlDriver.js","sourcesContent":["import { Driver } from \"../Driver\"\nimport { DriverUtils } from \"../DriverUtils\"\nimport { CteCapabilities } from \"../types/CteCapabilities\"\nimport { AuroraMysqlQueryRunner } from \"./AuroraMysqlQueryRunner\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { ColumnMetadata } from \"../../metadata/ColumnMetadata\"\nimport { DateUtils } from \"../../util/DateUtils\"\nimport { PlatformTools } from \"../../platform/PlatformTools\"\nimport { DataSource } from \"../../data-source\"\nimport { RdbmsSchemaBuilder } from \"../../schema-builder/RdbmsSchemaBuilder\"\nimport { AuroraMysqlConnectionOptions } from \"./AuroraMysqlConnectionOptions\"\nimport { MappedColumnTypes } from \"../types/MappedColumnTypes\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { DataTypeDefaults } from \"../types/DataTypeDefaults\"\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\nimport { AuroraMysqlConnectionCredentialsOptions } from \"./AuroraMysqlConnectionCredentialsOptions\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport { ApplyValueTransformers } from \"../../util/ApplyValueTransformers\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\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\"\nimport { InstanceChecker } from \"../../util/InstanceChecker\"\n\n/**\n * Organizes communication with MySQL DBMS.\n */\nexport class AuroraMysqlDriver implements Driver {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n connection: DataSource\n\n /**\n * Aurora Data API underlying library.\n */\n DataApiDriver: any\n\n client: any\n\n /**\n * Connection pool.\n * Used in non-replication mode.\n */\n pool: any\n\n /**\n * Pool cluster used in replication mode.\n */\n poolCluster: any\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: AuroraMysqlConnectionOptions\n\n /**\n * Database name used to perform all write queries.\n */\n database?: string\n\n /**\n * Schema name used to perform all write queries.\n */\n schema?: string\n\n /**\n * Indicates if replication is enabled.\n */\n isReplicated: boolean = false\n\n /**\n * Indicates if tree tables are supported by this driver.\n */\n treeSupport = true\n\n /**\n * Represent transaction support by this driver\n */\n transactionSupport = \"nested\" as const\n\n /**\n * Gets list of supported column data types by a driver.\n *\n * @see https://www.tutorialspoint.com/mysql/mysql-data-types.htm\n * @see https://dev.mysql.com/doc/refman/8.0/en/data-types.html\n */\n supportedDataTypes: ColumnType[] = [\n // numeric types\n \"bit\",\n \"int\",\n \"integer\", // synonym for int\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"bigint\",\n \"float\",\n \"double\",\n \"double precision\", // synonym for double\n \"real\", // synonym for double\n \"decimal\",\n \"dec\", // synonym for decimal\n \"numeric\", // synonym for decimal\n \"fixed\", // synonym for decimal\n \"bool\", // synonym for tinyint\n \"boolean\", // synonym for tinyint\n // date and time types\n \"date\",\n \"datetime\",\n \"timestamp\",\n \"time\",\n \"year\",\n // string types\n \"char\",\n \"nchar\", // synonym for national char\n \"national char\",\n \"varchar\",\n \"nvarchar\", // synonym for national varchar\n \"national varchar\",\n \"blob\",\n \"text\",\n \"tinyblob\",\n \"tinytext\",\n \"mediumblob\",\n \"mediumtext\",\n \"longblob\",\n \"longtext\",\n \"enum\",\n \"set\",\n \"binary\",\n \"varbinary\",\n // json data type\n \"json\",\n // spatial data types\n \"geometry\",\n \"point\",\n \"linestring\",\n \"polygon\",\n \"multipoint\",\n \"multilinestring\",\n \"multipolygon\",\n \"geometrycollection\",\n ]\n\n /**\n * Returns type of upsert supported by driver if any\n */\n readonly supportedUpsertType = \"on-duplicate-key-update\"\n\n /**\n * Gets list of spatial column data types.\n */\n spatialTypes: ColumnType[] = [\n \"geometry\",\n \"point\",\n \"linestring\",\n \"polygon\",\n \"multipoint\",\n \"multilinestring\",\n \"multipolygon\",\n \"geometrycollection\",\n ]\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withLengthColumnTypes: ColumnType[] = [\n \"char\",\n \"varchar\",\n \"nvarchar\",\n \"binary\",\n \"varbinary\",\n ]\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withWidthColumnTypes: ColumnType[] = [\n \"bit\",\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"int\",\n \"integer\",\n \"bigint\",\n ]\n\n /**\n * Gets list of column data types that support precision by a driver.\n */\n withPrecisionColumnTypes: ColumnType[] = [\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\",\n \"time\",\n \"datetime\",\n \"timestamp\",\n ]\n\n /**\n * Gets list of column data types that supports scale by a driver.\n */\n withScaleColumnTypes: ColumnType[] = [\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\",\n ]\n\n /**\n * Gets list of column data types that supports UNSIGNED and ZEROFILL attributes.\n */\n unsignedAndZerofillTypes: ColumnType[] = [\n \"int\",\n \"integer\",\n \"smallint\",\n \"tinyint\",\n \"mediumint\",\n \"bigint\",\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\",\n ]\n\n /**\n * ORM has special columns and we need to know what database column types should be for those columns.\n * Column types are driver dependant.\n */\n mappedDataTypes: MappedColumnTypes = {\n createDate: \"datetime\",\n createDatePrecision: 6,\n createDateDefault: \"CURRENT_TIMESTAMP(6)\",\n updateDate: \"datetime\",\n updateDatePrecision: 6,\n updateDateDefault: \"CURRENT_TIMESTAMP(6)\",\n deleteDate: \"datetime\",\n deleteDatePrecision: 6,\n deleteDateNullable: true,\n version: \"int\",\n treeLevel: \"int\",\n migrationId: \"int\",\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 varchar: { length: 255 },\n nvarchar: { length: 255 },\n \"national varchar\": { length: 255 },\n char: { length: 1 },\n binary: { length: 1 },\n varbinary: { length: 255 },\n decimal: { precision: 10, scale: 0 },\n dec: { precision: 10, scale: 0 },\n numeric: { precision: 10, scale: 0 },\n fixed: { precision: 10, scale: 0 },\n float: { precision: 12 },\n double: { precision: 22 },\n time: { precision: 0 },\n datetime: { precision: 0 },\n timestamp: { precision: 0 },\n bit: { width: 1 },\n int: { width: 11 },\n integer: { width: 11 },\n tinyint: { width: 4 },\n smallint: { width: 6 },\n mediumint: { width: 9 },\n bigint: { width: 20 },\n }\n\n /**\n * Max length allowed by MySQL for aliases.\n * @see https://dev.mysql.com/doc/refman/5.5/en/identifiers.html\n */\n maxAliasLength = 63\n\n cteCapabilities: CteCapabilities = {\n enabled: false,\n }\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: DataSource) {\n this.connection = connection\n this.options = connection.options as AuroraMysqlConnectionOptions\n\n // load mysql package\n this.loadDependencies()\n\n this.client = new this.DataApiDriver(\n this.options.region,\n this.options.secretArn,\n this.options.resourceArn,\n this.options.database,\n (query: string, parameters?: any[]) =>\n this.connection.logger.logQuery(query, parameters),\n this.options.serviceConfigOptions,\n this.options.formatOptions,\n )\n\n this.database = DriverUtils.buildDriverOptions(this.options).database\n\n // validate options to make sure everything is set\n // todo: revisit validation with replication in mind\n // if (!(this.options.host || (this.options.extra && this.options.extra.socketPath)) && !this.options.socketPath)\n // throw new DriverOptionNotSetError(\"socketPath and host\");\n // if (!this.options.username)\n // throw new DriverOptionNotSetError(\"username\");\n // if (!this.options.database)\n // throw new DriverOptionNotSetError(\"database\");\n // todo: check what is going on when connection is setup without database and how to connect to a database then?\n // todo: provide options to auto-create a database if it does not exist yet\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n */\n async connect(): Promise<void> {\n if (!this.database) {\n const queryRunner = await this.createQueryRunner(\"master\")\n\n this.database = await queryRunner.getCurrentDatabase()\n\n await queryRunner.release()\n }\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 the database.\n */\n async disconnect(): Promise<void> {}\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 * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode) {\n return new AuroraMysqlQueryRunner(\n this,\n new this.DataApiDriver(\n this.options.region,\n this.options.secretArn,\n this.options.resourceArn,\n this.options.database,\n (query: string, parameters?: any[]) =>\n this.connection.logger.logQuery(query, parameters),\n this.options.serviceConfigOptions,\n this.options.formatOptions,\n ),\n )\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(\n sql: string,\n parameters: ObjectLiteral,\n nativeParameters: ObjectLiteral,\n ): [string, any[]] {\n const escapedParameters: any[] = Object.keys(nativeParameters).map(\n (key) => nativeParameters[key],\n )\n if (!parameters || !Object.keys(parameters).length)\n return [sql, escapedParameters]\n\n sql = sql.replace(\n /:(\\.\\.\\.)?([A-Za-z0-9_.]+)/g,\n (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\n .map((v: any) => {\n escapedParameters.push(v)\n return this.createParameter(\n key,\n escapedParameters.length - 1,\n )\n })\n .join(\", \")\n }\n\n if (typeof value === \"function\") {\n return value()\n }\n\n escapedParameters.push(value)\n return this.createParameter(key, escapedParameters.length - 1)\n },\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 buildTableName(\n tableName: string,\n schema?: string,\n database?: string,\n ): string {\n let tablePath = [tableName]\n\n if (database) {\n tablePath.unshift(database)\n }\n\n return tablePath.join(\".\")\n }\n\n /**\n * Parse a target table name or other types and return a normalized table definition.\n */\n parseTableName(\n target: EntityMetadata | Table | View | TableForeignKey | string,\n ): { database?: string; schema?: string; tableName: string } {\n const driverDatabase = this.database\n const driverSchema = undefined\n\n if (InstanceChecker.isTable(target) || InstanceChecker.isView(target)) {\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 (InstanceChecker.isTableForeignKey(target)) {\n const parsed = this.parseTableName(target.referencedTableName)\n\n return {\n database:\n target.referencedDatabase ||\n parsed.database ||\n driverDatabase,\n schema:\n target.referencedSchema || parsed.schema || driverSchema,\n tableName: parsed.tableName,\n }\n }\n\n if (InstanceChecker.isEntityMetadata(target)) {\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 const parts = target.split(\".\")\n\n return {\n database:\n (parts.length > 1 ? parts[0] : undefined) || driverDatabase,\n schema: driverSchema,\n tableName: parts.length > 1 ? parts[1] : parts[0],\n }\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(\n columnMetadata.transformer,\n value,\n )\n\n if (\n !this.options.formatOptions ||\n this.options.formatOptions.castParameters !== false\n ) {\n return this.client.preparePersistentValue(value, columnMetadata)\n }\n\n if (value === null || value === undefined) return value\n\n if (columnMetadata.type === Boolean) {\n return value === true ? 1 : 0\n } else if (columnMetadata.type === \"date\") {\n return DateUtils.mixedDateToDateString(value)\n } else if (columnMetadata.type === \"time\") {\n return DateUtils.mixedDateToTimeString(value)\n } else if (columnMetadata.type === \"json\") {\n return JSON.stringify(value)\n } else if (\n columnMetadata.type === \"timestamp\" ||\n columnMetadata.type === \"datetime\" ||\n columnMetadata.type === Date\n ) {\n return DateUtils.mixedDateToDate(value)\n } else if (\n columnMetadata.type === \"simple-array\" ||\n columnMetadata.type === \"set\"\n ) {\n return DateUtils.simpleArrayToString(value)\n } else if (columnMetadata.type === \"simple-json\") {\n return DateUtils.simpleJsonToString(value)\n } else if (\n columnMetadata.type === \"enum\" ||\n columnMetadata.type === \"simple-enum\"\n ) {\n return \"\" + value\n }\n\n return value\n }\n\n /**\n * Prepares given value to a value to be persisted, 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\n ? ApplyValueTransformers.transformFrom(\n columnMetadata.transformer,\n value,\n )\n : value\n\n if (\n !this.options.formatOptions ||\n this.options.formatOptions.castParameters !== false\n ) {\n return this.client.prepareHydratedValue(value, columnMetadata)\n }\n\n if (\n columnMetadata.type === Boolean ||\n columnMetadata.type === \"bool\" ||\n columnMetadata.type === \"boolean\"\n ) {\n value = value ? true : false\n } else if (\n columnMetadata.type === \"datetime\" ||\n columnMetadata.type === Date\n ) {\n value = DateUtils.normalizeHydratedDate(value)\n } else if (columnMetadata.type === \"date\") {\n value = DateUtils.mixedDateToDateString(value)\n } else if (columnMetadata.type === \"json\") {\n value = typeof value === \"string\" ? JSON.parse(value) : value\n } else if (columnMetadata.type === \"time\") {\n value = DateUtils.mixedTimeToString(value)\n } else if (\n columnMetadata.type === \"simple-array\" ||\n columnMetadata.type === \"set\"\n ) {\n value = DateUtils.stringToSimpleArray(value)\n } else if (columnMetadata.type === \"simple-json\") {\n value = DateUtils.stringToSimpleJson(value)\n } else if (\n (columnMetadata.type === \"enum\" ||\n columnMetadata.type === \"simple-enum\") &&\n columnMetadata.enum &&\n !isNaN(value) &&\n columnMetadata.enum.indexOf(parseInt(value)) >= 0\n ) {\n // convert to number if that exists in possible enum options\n value = parseInt(value)\n }\n\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(\n columnMetadata.transformer,\n value,\n )\n\n return value\n }\n\n /**\n * Creates a database type from a given column metadata.\n */\n normalizeType(column: {\n type: ColumnType\n length?: number | string\n precision?: number | null\n scale?: number\n }): string {\n if (column.type === Number || column.type === \"integer\") {\n return \"int\"\n } else if (column.type === String) {\n return \"varchar\"\n } else if (column.type === Date) {\n return \"datetime\"\n } else if ((column.type as any) === Buffer) {\n return \"blob\"\n } else if (column.type === Boolean) {\n return \"tinyint\"\n } else if (column.type === \"uuid\") {\n return \"varchar\"\n } else if (\n column.type === \"simple-array\" ||\n column.type === \"simple-json\"\n ) {\n return \"text\"\n } else if (column.type === \"simple-enum\") {\n return \"enum\"\n } else if (\n column.type === \"double precision\" ||\n column.type === \"real\"\n ) {\n return \"double\"\n } else if (\n column.type === \"dec\" ||\n column.type === \"numeric\" ||\n column.type === \"fixed\"\n ) {\n return \"decimal\"\n } else if (column.type === \"bool\" || column.type === \"boolean\") {\n return \"tinyint\"\n } else if (\n column.type === \"nvarchar\" ||\n column.type === \"national varchar\"\n ) {\n return \"varchar\"\n } else if (column.type === \"nchar\" || column.type === \"national char\") {\n return \"char\"\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 (defaultValue === null) {\n return undefined\n }\n\n if (\n (columnMetadata.type === \"enum\" ||\n columnMetadata.type === \"simple-enum\") &&\n defaultValue !== undefined\n ) {\n return `'${defaultValue}'`\n }\n\n if (columnMetadata.type === \"set\" && defaultValue !== undefined) {\n return `'${DateUtils.simpleArrayToString(defaultValue)}'`\n }\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 === 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.indices.some(\n (idx) =>\n idx.isUnique &&\n idx.columns.length === 1 &&\n idx.columns[0] === column,\n )\n }\n\n /**\n * Returns default column lengths, which is required on column creation.\n */\n getColumnLength(column: ColumnMetadata | TableColumn): string {\n if (column.length) return column.length.toString()\n\n /**\n * fix https://github.com/typeorm/typeorm/issues/1139\n */\n if (column.generationStrategy === \"uuid\") return \"36\"\n\n switch (column.type) {\n case String:\n case \"varchar\":\n case \"nvarchar\":\n case \"national varchar\":\n return \"255\"\n case \"varbinary\":\n return \"255\"\n default:\n return \"\"\n }\n }\n\n /**\n * Creates column type definition including length, precision and scale\n */\n createFullType(column: TableColumn): string {\n let type = column.type\n\n // used 'getColumnLength()' method, because MySQL requires column length for `varchar`, `nvarchar` and `varbinary` data types\n if (this.getColumnLength(column)) {\n type += `(${this.getColumnLength(column)})`\n } else if (column.width) {\n type += `(${column.width})`\n } else if (\n column.precision !== null &&\n column.precision !== undefined &&\n column.scale !== null &&\n column.scale !== undefined\n ) {\n type += `(${column.precision},${column.scale})`\n } else if (\n column.precision !== null &&\n column.precision !== undefined\n ) {\n type += `(${column.precision})`\n }\n\n if (column.isArray) 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 new Promise<any>((ok, fail) => {\n if (this.poolCluster) {\n this.poolCluster.getConnection(\n \"MASTER\",\n (err: any, dbConnection: any) => {\n err\n ? fail(err)\n : ok(this.prepareDbConnection(dbConnection))\n },\n )\n } else if (this.pool) {\n this.pool.getConnection((err: any, dbConnection: any) => {\n err ? fail(err) : ok(this.prepareDbConnection(dbConnection))\n })\n } else {\n fail(\n new TypeORMError(\n `Connection is not established with mysql database`,\n ),\n )\n }\n })\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 if (!this.poolCluster) return this.obtainMasterConnection()\n\n return new Promise<any>((ok, fail) => {\n this.poolCluster.getConnection(\n \"SLAVE*\",\n (err: any, dbConnection: any) => {\n err ? fail(err) : ok(this.prepareDbConnection(dbConnection))\n },\n )\n })\n }\n\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n createGeneratedMap(\n metadata: EntityMetadata,\n insertResult: any,\n entityIndex: number,\n ) {\n const generatedMap = metadata.generatedColumns.reduce(\n (map, generatedColumn) => {\n let value: any\n if (\n generatedColumn.generationStrategy === \"increment\" &&\n insertResult.insertId\n ) {\n // NOTE: When multiple rows is inserted by a single INSERT statement,\n // `insertId` is the value generated for the first inserted row only.\n value = insertResult.insertId + entityIndex\n // } else if (generatedColumn.generationStrategy === \"uuid\") {\n // console.log(\"getting db value:\", generatedColumn.databaseName);\n // value = generatedColumn.getEntityValue(uuidMap);\n }\n\n return OrmUtils.mergeDeep(\n map,\n generatedColumn.createValueMap(value),\n )\n },\n {} as ObjectLiteral,\n )\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(\n tableColumns: TableColumn[],\n columnMetadatas: ColumnMetadata[],\n ): ColumnMetadata[] {\n return columnMetadatas.filter((columnMetadata) => {\n const tableColumn = tableColumns.find(\n (c) => c.name === columnMetadata.databaseName,\n )\n if (!tableColumn) 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(\"width:\", tableColumn.width, columnMetadata.width);\n // console.log(\"precision:\", tableColumn.precision, columnMetadata.precision);\n // console.log(\"scale:\", tableColumn.scale, columnMetadata.scale);\n // console.log(\"zerofill:\", tableColumn.zerofill, columnMetadata.zerofill);\n // console.log(\"unsigned:\", tableColumn.unsigned, columnMetadata.unsigned);\n // console.log(\"asExpression:\", tableColumn.asExpression, columnMetadata.asExpression);\n // console.log(\"generatedType:\", tableColumn.generatedType, columnMetadata.generatedType);\n // console.log(\"comment:\", tableColumn.comment, this.escapeComment(columnMetadata.comment));\n // console.log(\"default:\", tableColumn.default, columnMetadata.default);\n // console.log(\"enum:\", tableColumn.enum, columnMetadata.enum);\n // console.log(\"default changed:\", !this.compareDefaultValues(this.normalizeDefault(columnMetadata), tableColumn.default));\n // console.log(\"onUpdate:\", tableColumn.onUpdate, columnMetadata.onUpdate);\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((columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated));\n // console.log(\"==========================================\");\n\n let columnMetadataLength = columnMetadata.length\n if (\n !columnMetadataLength &&\n columnMetadata.generationStrategy === \"uuid\"\n ) {\n // fixing #3374\n columnMetadataLength = this.getColumnLength(columnMetadata)\n }\n\n return (\n tableColumn.name !== columnMetadata.databaseName ||\n tableColumn.type !== this.normalizeType(columnMetadata) ||\n tableColumn.length !== columnMetadataLength ||\n tableColumn.width !== columnMetadata.width ||\n tableColumn.precision !== columnMetadata.precision ||\n tableColumn.scale !== columnMetadata.scale ||\n tableColumn.zerofill !== columnMetadata.zerofill ||\n tableColumn.unsigned !== columnMetadata.unsigned ||\n tableColumn.asExpression !== columnMetadata.asExpression ||\n tableColumn.generatedType !== columnMetadata.generatedType ||\n tableColumn.comment !==\n this.escapeComment(columnMetadata.comment) ||\n !this.compareDefaultValues(\n this.normalizeDefault(columnMetadata),\n tableColumn.default,\n ) ||\n (tableColumn.enum &&\n columnMetadata.enum &&\n !OrmUtils.isArraysEqual(\n tableColumn.enum,\n columnMetadata.enum.map((val) => val + \"\"),\n )) ||\n tableColumn.onUpdate !== columnMetadata.onUpdate ||\n tableColumn.isPrimary !== columnMetadata.isPrimary ||\n tableColumn.isNullable !== columnMetadata.isNullable ||\n tableColumn.isUnique !==\n this.normalizeIsUnique(columnMetadata) ||\n (columnMetadata.generationStrategy !== \"uuid\" &&\n tableColumn.isGenerated !== columnMetadata.isGenerated)\n )\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 true\n }\n\n /**\n * Creates an escaped parameter.\n */\n createParameter(parameterName: string, index: number): string {\n return \"?\"\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads all driver dependencies.\n */\n protected loadDependencies(): void {\n const DataApiDriver =\n this.options.driver ||\n PlatformTools.load(\"typeorm-aurora-data-api-driver\")\n this.DataApiDriver = DataApiDriver\n\n // Driver uses rollup for publishing, which has issues when using typeorm in combination with webpack\n // See https://github.com/webpack/webpack/issues/4742#issuecomment-295556787\n this.DataApiDriver = this.DataApiDriver.default || this.DataApiDriver\n }\n\n /**\n * Creates a new connection pool for a given database credentials.\n */\n protected createConnectionOptions(\n options: AuroraMysqlConnectionOptions,\n credentials: AuroraMysqlConnectionCredentialsOptions,\n ): Promise<any> {\n credentials = Object.assign(\n {},\n credentials,\n DriverUtils.buildDriverOptions(credentials),\n ) // todo: do it better way\n\n // build connection options for the driver\n return Object.assign(\n {},\n {\n resourceArn: options.resourceArn,\n secretArn: options.secretArn,\n database: options.database,\n region: options.region,\n type: options.type,\n },\n {\n host: credentials.host,\n user: credentials.username,\n password: credentials.password,\n database: credentials.database,\n port: credentials.port,\n ssl: options.ssl,\n },\n\n options.extra || {},\n )\n }\n\n /**\n * Creates a new connection pool for a given database credentials.\n */\n protected async createPool(connectionOptions: any): Promise<any> {\n return {}\n }\n\n /**\n * Attaches all required base handlers to a database connection, such as the unhandled error handler.\n */\n private prepareDbConnection(connection: any): any {\n const { logger } = this.connection\n /**\n * Attaching an error handler to connection errors is essential, as, otherwise, errors raised will go unhandled and\n * cause the hosting app to crash.\n */\n if (connection.listeners(\"error\").length === 0) {\n connection.on(\"error\", (error: any) =>\n logger.log(\n \"warn\",\n `MySQL connection raised an error. ${error}`,\n ),\n )\n }\n return connection\n }\n\n /**\n * Checks if \"DEFAULT\" values in the column metadata and in the database are equal.\n */\n protected compareDefaultValues(\n columnMetadataValue: string | undefined,\n databaseValue: string | undefined,\n ): boolean {\n if (\n typeof columnMetadataValue === \"string\" &&\n typeof databaseValue === \"string\"\n ) {\n // we need to cut out \"'\" because in mysql we can understand returned value is a string or a function\n // as result compare cannot understand if default is really changed or not\n columnMetadataValue = columnMetadataValue.replace(/^'+|'+$/g, \"\")\n databaseValue = databaseValue.replace(/^'+|'+$/g, \"\")\n }\n\n return columnMetadataValue === databaseValue\n }\n\n /**\n * Escapes a given comment.\n */\n protected escapeComment(comment?: string) {\n if (!comment) return comment\n\n comment = comment.replace(/\\u0000/g, \"\") // Null bytes aren't allowed in comments\n\n return comment\n }\n}\n"],"sourceRoot":"../.."}
1
+ {"version":3,"sources":["../browser/src/driver/aurora-mysql/AuroraMysqlDriver.ts"],"names":[],"mappings":"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","file":"AuroraMysqlDriver.js","sourcesContent":["import { Driver } from \"../Driver\"\nimport { DriverUtils } from \"../DriverUtils\"\nimport { CteCapabilities } from \"../types/CteCapabilities\"\nimport { AuroraMysqlQueryRunner } from \"./AuroraMysqlQueryRunner\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { ColumnMetadata } from \"../../metadata/ColumnMetadata\"\nimport { DateUtils } from \"../../util/DateUtils\"\nimport { PlatformTools } from \"../../platform/PlatformTools\"\nimport { DataSource } from \"../../data-source\"\nimport { RdbmsSchemaBuilder } from \"../../schema-builder/RdbmsSchemaBuilder\"\nimport { AuroraMysqlConnectionOptions } from \"./AuroraMysqlConnectionOptions\"\nimport { MappedColumnTypes } from \"../types/MappedColumnTypes\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { DataTypeDefaults } from \"../types/DataTypeDefaults\"\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\nimport { AuroraMysqlConnectionCredentialsOptions } from \"./AuroraMysqlConnectionCredentialsOptions\"\nimport { EntityMetadata } from \"../../metadata/EntityMetadata\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport { ApplyValueTransformers } from \"../../util/ApplyValueTransformers\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\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\"\nimport { InstanceChecker } from \"../../util/InstanceChecker\"\n\n/**\n * Organizes communication with MySQL DBMS.\n */\nexport class AuroraMysqlDriver implements Driver {\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n connection: DataSource\n\n /**\n * Aurora Data API underlying library.\n */\n DataApiDriver: any\n\n client: any\n\n /**\n * Connection pool.\n * Used in non-replication mode.\n */\n pool: any\n\n /**\n * Pool cluster used in replication mode.\n */\n poolCluster: any\n\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Connection options.\n */\n options: AuroraMysqlConnectionOptions\n\n /**\n * Database name used to perform all write queries.\n */\n database?: string\n\n /**\n * Schema name used to perform all write queries.\n */\n schema?: string\n\n /**\n * Indicates if replication is enabled.\n */\n isReplicated: boolean = false\n\n /**\n * Indicates if tree tables are supported by this driver.\n */\n treeSupport = true\n\n /**\n * Represent transaction support by this driver\n */\n transactionSupport = \"nested\" as const\n\n /**\n * Gets list of supported column data types by a driver.\n *\n * @see https://www.tutorialspoint.com/mysql/mysql-data-types.htm\n * @see https://dev.mysql.com/doc/refman/8.0/en/data-types.html\n */\n supportedDataTypes: ColumnType[] = [\n // numeric types\n \"bit\",\n \"int\",\n \"integer\", // synonym for int\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"bigint\",\n \"float\",\n \"double\",\n \"double precision\", // synonym for double\n \"real\", // synonym for double\n \"decimal\",\n \"dec\", // synonym for decimal\n \"numeric\", // synonym for decimal\n \"fixed\", // synonym for decimal\n \"bool\", // synonym for tinyint\n \"boolean\", // synonym for tinyint\n // date and time types\n \"date\",\n \"datetime\",\n \"timestamp\",\n \"time\",\n \"year\",\n // string types\n \"char\",\n \"nchar\", // synonym for national char\n \"national char\",\n \"varchar\",\n \"nvarchar\", // synonym for national varchar\n \"national varchar\",\n \"blob\",\n \"text\",\n \"tinyblob\",\n \"tinytext\",\n \"mediumblob\",\n \"mediumtext\",\n \"longblob\",\n \"longtext\",\n \"enum\",\n \"set\",\n \"binary\",\n \"varbinary\",\n // json data type\n \"json\",\n // spatial data types\n \"geometry\",\n \"point\",\n \"linestring\",\n \"polygon\",\n \"multipoint\",\n \"multilinestring\",\n \"multipolygon\",\n \"geometrycollection\",\n ]\n\n /**\n * Returns type of upsert supported by driver if any\n */\n readonly supportedUpsertType = \"on-duplicate-key-update\"\n\n /**\n * Gets list of spatial column data types.\n */\n spatialTypes: ColumnType[] = [\n \"geometry\",\n \"point\",\n \"linestring\",\n \"polygon\",\n \"multipoint\",\n \"multilinestring\",\n \"multipolygon\",\n \"geometrycollection\",\n ]\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withLengthColumnTypes: ColumnType[] = [\n \"char\",\n \"varchar\",\n \"nvarchar\",\n \"binary\",\n \"varbinary\",\n ]\n\n /**\n * Gets list of column data types that support length by a driver.\n */\n withWidthColumnTypes: ColumnType[] = [\n \"bit\",\n \"tinyint\",\n \"smallint\",\n \"mediumint\",\n \"int\",\n \"integer\",\n \"bigint\",\n ]\n\n /**\n * Gets list of column data types that support precision by a driver.\n */\n withPrecisionColumnTypes: ColumnType[] = [\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\",\n \"time\",\n \"datetime\",\n \"timestamp\",\n ]\n\n /**\n * Gets list of column data types that supports scale by a driver.\n */\n withScaleColumnTypes: ColumnType[] = [\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\",\n ]\n\n /**\n * Gets list of column data types that supports UNSIGNED and ZEROFILL attributes.\n */\n unsignedAndZerofillTypes: ColumnType[] = [\n \"int\",\n \"integer\",\n \"smallint\",\n \"tinyint\",\n \"mediumint\",\n \"bigint\",\n \"decimal\",\n \"dec\",\n \"numeric\",\n \"fixed\",\n \"float\",\n \"double\",\n \"double precision\",\n \"real\",\n ]\n\n /**\n * ORM has special columns and we need to know what database column types should be for those columns.\n * Column types are driver dependant.\n */\n mappedDataTypes: MappedColumnTypes = {\n createDate: \"datetime\",\n createDatePrecision: 6,\n createDateDefault: \"CURRENT_TIMESTAMP(6)\",\n updateDate: \"datetime\",\n updateDatePrecision: 6,\n updateDateDefault: \"CURRENT_TIMESTAMP(6)\",\n deleteDate: \"datetime\",\n deleteDatePrecision: 6,\n deleteDateNullable: true,\n version: \"int\",\n treeLevel: \"int\",\n migrationId: \"int\",\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 varchar: { length: 255 },\n nvarchar: { length: 255 },\n \"national varchar\": { length: 255 },\n char: { length: 1 },\n binary: { length: 1 },\n varbinary: { length: 255 },\n decimal: { precision: 10, scale: 0 },\n dec: { precision: 10, scale: 0 },\n numeric: { precision: 10, scale: 0 },\n fixed: { precision: 10, scale: 0 },\n float: { precision: 12 },\n double: { precision: 22 },\n time: { precision: 0 },\n datetime: { precision: 0 },\n timestamp: { precision: 0 },\n bit: { width: 1 },\n int: { width: 11 },\n integer: { width: 11 },\n tinyint: { width: 4 },\n smallint: { width: 6 },\n mediumint: { width: 9 },\n bigint: { width: 20 },\n }\n\n /**\n * Max length allowed by MySQL for aliases.\n * @see https://dev.mysql.com/doc/refman/5.5/en/identifiers.html\n */\n maxAliasLength = 63\n\n cteCapabilities: CteCapabilities = {\n enabled: false,\n }\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connection: DataSource) {\n this.connection = connection\n this.options = connection.options as AuroraMysqlConnectionOptions\n\n // load mysql package\n this.loadDependencies()\n\n this.client = new this.DataApiDriver(\n this.options.region,\n this.options.secretArn,\n this.options.resourceArn,\n this.options.database,\n (query: string, parameters?: any[]) =>\n this.connection.logger.logQuery(query, parameters),\n this.options.serviceConfigOptions,\n this.options.formatOptions,\n )\n\n this.database = DriverUtils.buildDriverOptions(this.options).database\n\n // validate options to make sure everything is set\n // todo: revisit validation with replication in mind\n // if (!(this.options.host || (this.options.extra && this.options.extra.socketPath)) && !this.options.socketPath)\n // throw new DriverOptionNotSetError(\"socketPath and host\");\n // if (!this.options.username)\n // throw new DriverOptionNotSetError(\"username\");\n // if (!this.options.database)\n // throw new DriverOptionNotSetError(\"database\");\n // todo: check what is going on when connection is setup without database and how to connect to a database then?\n // todo: provide options to auto-create a database if it does not exist yet\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs connection to the database.\n */\n async connect(): Promise<void> {\n if (!this.database) {\n const queryRunner = await this.createQueryRunner(\"master\")\n\n this.database = await queryRunner.getCurrentDatabase()\n\n await queryRunner.release()\n }\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 the database.\n */\n async disconnect(): Promise<void> {}\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 * Creates a query runner used to execute database queries.\n */\n createQueryRunner(mode: ReplicationMode) {\n return new AuroraMysqlQueryRunner(\n this,\n new this.DataApiDriver(\n this.options.region,\n this.options.secretArn,\n this.options.resourceArn,\n this.options.database,\n (query: string, parameters?: any[]) =>\n this.connection.logger.logQuery(query, parameters),\n this.options.serviceConfigOptions,\n this.options.formatOptions,\n ),\n )\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(\n sql: string,\n parameters: ObjectLiteral,\n nativeParameters: ObjectLiteral,\n ): [string, any[]] {\n const escapedParameters: any[] = Object.keys(nativeParameters).map(\n (key) => nativeParameters[key],\n )\n if (!parameters || !Object.keys(parameters).length)\n return [sql, escapedParameters]\n\n sql = sql.replace(\n /:(\\.\\.\\.)?([A-Za-z0-9_.]+)/g,\n (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\n .map((v: any) => {\n escapedParameters.push(v)\n return this.createParameter(\n key,\n escapedParameters.length - 1,\n )\n })\n .join(\", \")\n }\n\n if (typeof value === \"function\") {\n return value()\n }\n\n escapedParameters.push(value)\n return this.createParameter(key, escapedParameters.length - 1)\n },\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 buildTableName(\n tableName: string,\n schema?: string,\n database?: string,\n ): string {\n let tablePath = [tableName]\n\n if (database) {\n tablePath.unshift(database)\n }\n\n return tablePath.join(\".\")\n }\n\n /**\n * Parse a target table name or other types and return a normalized table definition.\n */\n parseTableName(\n target: EntityMetadata | Table | View | TableForeignKey | string,\n ): { database?: string; schema?: string; tableName: string } {\n const driverDatabase = this.database\n const driverSchema = undefined\n\n if (InstanceChecker.isTable(target) || InstanceChecker.isView(target)) {\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 (InstanceChecker.isTableForeignKey(target)) {\n const parsed = this.parseTableName(target.referencedTableName)\n\n return {\n database:\n target.referencedDatabase ||\n parsed.database ||\n driverDatabase,\n schema:\n target.referencedSchema || parsed.schema || driverSchema,\n tableName: parsed.tableName,\n }\n }\n\n if (InstanceChecker.isEntityMetadata(target)) {\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 const parts = target.split(\".\")\n\n return {\n database:\n (parts.length > 1 ? parts[0] : undefined) || driverDatabase,\n schema: driverSchema,\n tableName: parts.length > 1 ? parts[1] : parts[0],\n }\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(\n columnMetadata.transformer,\n value,\n )\n\n if (\n !this.options.formatOptions ||\n this.options.formatOptions.castParameters !== false\n ) {\n return this.client.preparePersistentValue(value, columnMetadata)\n }\n\n if (value === null || value === undefined) return value\n\n if (columnMetadata.type === Boolean) {\n return value === true ? 1 : 0\n } else if (columnMetadata.type === \"date\") {\n return DateUtils.mixedDateToDateString(value)\n } else if (columnMetadata.type === \"time\") {\n return DateUtils.mixedDateToTimeString(value)\n } else if (columnMetadata.type === \"json\") {\n return JSON.stringify(value)\n } else if (\n columnMetadata.type === \"timestamp\" ||\n columnMetadata.type === \"datetime\" ||\n columnMetadata.type === Date\n ) {\n return DateUtils.mixedDateToDate(value)\n } else if (\n columnMetadata.type === \"simple-array\" ||\n columnMetadata.type === \"set\"\n ) {\n return DateUtils.simpleArrayToString(value)\n } else if (columnMetadata.type === \"simple-json\") {\n return DateUtils.simpleJsonToString(value)\n } else if (\n columnMetadata.type === \"enum\" ||\n columnMetadata.type === \"simple-enum\"\n ) {\n return \"\" + value\n }\n\n return value\n }\n\n /**\n * Prepares given value to a value to be persisted, 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\n ? ApplyValueTransformers.transformFrom(\n columnMetadata.transformer,\n value,\n )\n : value\n\n if (\n !this.options.formatOptions ||\n this.options.formatOptions.castParameters !== false\n ) {\n return this.client.prepareHydratedValue(value, columnMetadata)\n }\n\n if (\n columnMetadata.type === Boolean ||\n columnMetadata.type === \"bool\" ||\n columnMetadata.type === \"boolean\"\n ) {\n value = value ? true : false\n } else if (\n columnMetadata.type === \"datetime\" ||\n columnMetadata.type === Date\n ) {\n value = DateUtils.normalizeHydratedDate(value)\n } else if (columnMetadata.type === \"date\") {\n value = DateUtils.mixedDateToDateString(value)\n } else if (columnMetadata.type === \"json\") {\n value = typeof value === \"string\" ? JSON.parse(value) : value\n } else if (columnMetadata.type === \"time\") {\n value = DateUtils.mixedTimeToString(value)\n } else if (\n columnMetadata.type === \"simple-array\" ||\n columnMetadata.type === \"set\"\n ) {\n value = DateUtils.stringToSimpleArray(value)\n } else if (columnMetadata.type === \"simple-json\") {\n value = DateUtils.stringToSimpleJson(value)\n } else if (\n (columnMetadata.type === \"enum\" ||\n columnMetadata.type === \"simple-enum\") &&\n columnMetadata.enum &&\n !isNaN(value) &&\n columnMetadata.enum.indexOf(parseInt(value)) >= 0\n ) {\n // convert to number if that exists in possible enum options\n value = parseInt(value)\n } else if (columnMetadata.type === Number) {\n // convert to number if number\n value = !isNaN(+value) ? parseInt(value) : value\n }\n\n if (columnMetadata.transformer)\n value = ApplyValueTransformers.transformFrom(\n columnMetadata.transformer,\n value,\n )\n\n return value\n }\n\n /**\n * Creates a database type from a given column metadata.\n */\n normalizeType(column: {\n type: ColumnType\n length?: number | string\n precision?: number | null\n scale?: number\n }): string {\n if (column.type === Number || column.type === \"integer\") {\n return \"int\"\n } else if (column.type === String) {\n return \"varchar\"\n } else if (column.type === Date) {\n return \"datetime\"\n } else if ((column.type as any) === Buffer) {\n return \"blob\"\n } else if (column.type === Boolean) {\n return \"tinyint\"\n } else if (column.type === \"uuid\") {\n return \"varchar\"\n } else if (\n column.type === \"simple-array\" ||\n column.type === \"simple-json\"\n ) {\n return \"text\"\n } else if (column.type === \"simple-enum\") {\n return \"enum\"\n } else if (\n column.type === \"double precision\" ||\n column.type === \"real\"\n ) {\n return \"double\"\n } else if (\n column.type === \"dec\" ||\n column.type === \"numeric\" ||\n column.type === \"fixed\"\n ) {\n return \"decimal\"\n } else if (column.type === \"bool\" || column.type === \"boolean\") {\n return \"tinyint\"\n } else if (\n column.type === \"nvarchar\" ||\n column.type === \"national varchar\"\n ) {\n return \"varchar\"\n } else if (column.type === \"nchar\" || column.type === \"national char\") {\n return \"char\"\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 (defaultValue === null) {\n return undefined\n }\n\n if (\n (columnMetadata.type === \"enum\" ||\n columnMetadata.type === \"simple-enum\") &&\n defaultValue !== undefined\n ) {\n return `'${defaultValue}'`\n }\n\n if (columnMetadata.type === \"set\" && defaultValue !== undefined) {\n return `'${DateUtils.simpleArrayToString(defaultValue)}'`\n }\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 === 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.indices.some(\n (idx) =>\n idx.isUnique &&\n idx.columns.length === 1 &&\n idx.columns[0] === column,\n )\n }\n\n /**\n * Returns default column lengths, which is required on column creation.\n */\n getColumnLength(column: ColumnMetadata | TableColumn): string {\n if (column.length) return column.length.toString()\n\n /**\n * fix https://github.com/typeorm/typeorm/issues/1139\n */\n if (column.generationStrategy === \"uuid\") return \"36\"\n\n switch (column.type) {\n case String:\n case \"varchar\":\n case \"nvarchar\":\n case \"national varchar\":\n return \"255\"\n case \"varbinary\":\n return \"255\"\n default:\n return \"\"\n }\n }\n\n /**\n * Creates column type definition including length, precision and scale\n */\n createFullType(column: TableColumn): string {\n let type = column.type\n\n // used 'getColumnLength()' method, because MySQL requires column length for `varchar`, `nvarchar` and `varbinary` data types\n if (this.getColumnLength(column)) {\n type += `(${this.getColumnLength(column)})`\n } else if (column.width) {\n type += `(${column.width})`\n } else if (\n column.precision !== null &&\n column.precision !== undefined &&\n column.scale !== null &&\n column.scale !== undefined\n ) {\n type += `(${column.precision},${column.scale})`\n } else if (\n column.precision !== null &&\n column.precision !== undefined\n ) {\n type += `(${column.precision})`\n }\n\n if (column.isArray) 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 new Promise<any>((ok, fail) => {\n if (this.poolCluster) {\n this.poolCluster.getConnection(\n \"MASTER\",\n (err: any, dbConnection: any) => {\n err\n ? fail(err)\n : ok(this.prepareDbConnection(dbConnection))\n },\n )\n } else if (this.pool) {\n this.pool.getConnection((err: any, dbConnection: any) => {\n err ? fail(err) : ok(this.prepareDbConnection(dbConnection))\n })\n } else {\n fail(\n new TypeORMError(\n `Connection is not established with mysql database`,\n ),\n )\n }\n })\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 if (!this.poolCluster) return this.obtainMasterConnection()\n\n return new Promise<any>((ok, fail) => {\n this.poolCluster.getConnection(\n \"SLAVE*\",\n (err: any, dbConnection: any) => {\n err ? fail(err) : ok(this.prepareDbConnection(dbConnection))\n },\n )\n })\n }\n\n /**\n * Creates generated map of values generated or returned by database after INSERT query.\n */\n createGeneratedMap(\n metadata: EntityMetadata,\n insertResult: any,\n entityIndex: number,\n ) {\n const generatedMap = metadata.generatedColumns.reduce(\n (map, generatedColumn) => {\n let value: any\n if (\n generatedColumn.generationStrategy === \"increment\" &&\n insertResult.insertId\n ) {\n // NOTE: When multiple rows is inserted by a single INSERT statement,\n // `insertId` is the value generated for the first inserted row only.\n value = insertResult.insertId + entityIndex\n // } else if (generatedColumn.generationStrategy === \"uuid\") {\n // console.log(\"getting db value:\", generatedColumn.databaseName);\n // value = generatedColumn.getEntityValue(uuidMap);\n }\n\n return OrmUtils.mergeDeep(\n map,\n generatedColumn.createValueMap(value),\n )\n },\n {} as ObjectLiteral,\n )\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(\n tableColumns: TableColumn[],\n columnMetadatas: ColumnMetadata[],\n ): ColumnMetadata[] {\n return columnMetadatas.filter((columnMetadata) => {\n const tableColumn = tableColumns.find(\n (c) => c.name === columnMetadata.databaseName,\n )\n if (!tableColumn) 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(\"width:\", tableColumn.width, columnMetadata.width);\n // console.log(\"precision:\", tableColumn.precision, columnMetadata.precision);\n // console.log(\"scale:\", tableColumn.scale, columnMetadata.scale);\n // console.log(\"zerofill:\", tableColumn.zerofill, columnMetadata.zerofill);\n // console.log(\"unsigned:\", tableColumn.unsigned, columnMetadata.unsigned);\n // console.log(\"asExpression:\", tableColumn.asExpression, columnMetadata.asExpression);\n // console.log(\"generatedType:\", tableColumn.generatedType, columnMetadata.generatedType);\n // console.log(\"comment:\", tableColumn.comment, this.escapeComment(columnMetadata.comment));\n // console.log(\"default:\", tableColumn.default, columnMetadata.default);\n // console.log(\"enum:\", tableColumn.enum, columnMetadata.enum);\n // console.log(\"default changed:\", !this.compareDefaultValues(this.normalizeDefault(columnMetadata), tableColumn.default));\n // console.log(\"onUpdate:\", tableColumn.onUpdate, columnMetadata.onUpdate);\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((columnMetadata.generationStrategy !== \"uuid\" && tableColumn.isGenerated !== columnMetadata.isGenerated));\n // console.log(\"==========================================\");\n\n let columnMetadataLength = columnMetadata.length\n if (\n !columnMetadataLength &&\n columnMetadata.generationStrategy === \"uuid\"\n ) {\n // fixing #3374\n columnMetadataLength = this.getColumnLength(columnMetadata)\n }\n\n return (\n tableColumn.name !== columnMetadata.databaseName ||\n tableColumn.type !== this.normalizeType(columnMetadata) ||\n tableColumn.length !== columnMetadataLength ||\n tableColumn.width !== columnMetadata.width ||\n tableColumn.precision !== columnMetadata.precision ||\n tableColumn.scale !== columnMetadata.scale ||\n tableColumn.zerofill !== columnMetadata.zerofill ||\n tableColumn.unsigned !== columnMetadata.unsigned ||\n tableColumn.asExpression !== columnMetadata.asExpression ||\n tableColumn.generatedType !== columnMetadata.generatedType ||\n tableColumn.comment !==\n this.escapeComment(columnMetadata.comment) ||\n !this.compareDefaultValues(\n this.normalizeDefault(columnMetadata),\n tableColumn.default,\n ) ||\n (tableColumn.enum &&\n columnMetadata.enum &&\n !OrmUtils.isArraysEqual(\n tableColumn.enum,\n columnMetadata.enum.map((val) => val + \"\"),\n )) ||\n tableColumn.onUpdate !== columnMetadata.onUpdate ||\n tableColumn.isPrimary !== columnMetadata.isPrimary ||\n tableColumn.isNullable !== columnMetadata.isNullable ||\n tableColumn.isUnique !==\n this.normalizeIsUnique(columnMetadata) ||\n (columnMetadata.generationStrategy !== \"uuid\" &&\n tableColumn.isGenerated !== columnMetadata.isGenerated)\n )\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 true\n }\n\n /**\n * Creates an escaped parameter.\n */\n createParameter(parameterName: string, index: number): string {\n return \"?\"\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads all driver dependencies.\n */\n protected loadDependencies(): void {\n const DataApiDriver =\n this.options.driver ||\n PlatformTools.load(\"typeorm-aurora-data-api-driver\")\n this.DataApiDriver = DataApiDriver\n\n // Driver uses rollup for publishing, which has issues when using typeorm in combination with webpack\n // See https://github.com/webpack/webpack/issues/4742#issuecomment-295556787\n this.DataApiDriver = this.DataApiDriver.default || this.DataApiDriver\n }\n\n /**\n * Creates a new connection pool for a given database credentials.\n */\n protected createConnectionOptions(\n options: AuroraMysqlConnectionOptions,\n credentials: AuroraMysqlConnectionCredentialsOptions,\n ): Promise<any> {\n credentials = Object.assign(\n {},\n credentials,\n DriverUtils.buildDriverOptions(credentials),\n ) // todo: do it better way\n\n // build connection options for the driver\n return Object.assign(\n {},\n {\n resourceArn: options.resourceArn,\n secretArn: options.secretArn,\n database: options.database,\n region: options.region,\n type: options.type,\n },\n {\n host: credentials.host,\n user: credentials.username,\n password: credentials.password,\n database: credentials.database,\n port: credentials.port,\n ssl: options.ssl,\n },\n\n options.extra || {},\n )\n }\n\n /**\n * Creates a new connection pool for a given database credentials.\n */\n protected async createPool(connectionOptions: any): Promise<any> {\n return {}\n }\n\n /**\n * Attaches all required base handlers to a database connection, such as the unhandled error handler.\n */\n private prepareDbConnection(connection: any): any {\n const { logger } = this.connection\n /**\n * Attaching an error handler to connection errors is essential, as, otherwise, errors raised will go unhandled and\n * cause the hosting app to crash.\n */\n if (connection.listeners(\"error\").length === 0) {\n connection.on(\"error\", (error: any) =>\n logger.log(\n \"warn\",\n `MySQL connection raised an error. ${error}`,\n ),\n )\n }\n return connection\n }\n\n /**\n * Checks if \"DEFAULT\" values in the column metadata and in the database are equal.\n */\n protected compareDefaultValues(\n columnMetadataValue: string | undefined,\n databaseValue: string | undefined,\n ): boolean {\n if (\n typeof columnMetadataValue === \"string\" &&\n typeof databaseValue === \"string\"\n ) {\n // we need to cut out \"'\" because in mysql we can understand returned value is a string or a function\n // as result compare cannot understand if default is really changed or not\n columnMetadataValue = columnMetadataValue.replace(/^'+|'+$/g, \"\")\n databaseValue = databaseValue.replace(/^'+|'+$/g, \"\")\n }\n\n return columnMetadataValue === databaseValue\n }\n\n /**\n * Escapes a given comment.\n */\n protected escapeComment(comment?: string) {\n if (!comment) return comment\n\n comment = comment.replace(/\\u0000/g, \"\") // Null bytes aren't allowed in comments\n\n return comment\n }\n}\n"],"sourceRoot":"../.."}
@@ -119,7 +119,7 @@ export declare class AuroraMysqlQueryRunner extends BaseQueryRunner implements Q
119
119
  /**
120
120
  * Creates a new view.
121
121
  */
122
- createView(view: View): Promise<void>;
122
+ createView(view: View, syncWithMetadata?: boolean): Promise<void>;
123
123
  /**
124
124
  * Drops the view.
125
125
  */
@@ -290,13 +290,15 @@ export class AuroraMysqlQueryRunner extends BaseQueryRunner {
290
290
  /**
291
291
  * Creates a new view.
292
292
  */
293
- async createView(view) {
293
+ async createView(view, syncWithMetadata = false) {
294
294
  const upQueries = [];
295
295
  const downQueries = [];
296
296
  upQueries.push(this.createViewSql(view));
297
- upQueries.push(await this.insertViewDefinitionSql(view));
297
+ if (syncWithMetadata)
298
+ upQueries.push(await this.insertViewDefinitionSql(view));
298
299
  downQueries.push(this.dropViewSql(view));
299
- downQueries.push(await this.deleteViewDefinitionSql(view));
300
+ if (syncWithMetadata)
301
+ downQueries.push(await this.deleteViewDefinitionSql(view));
300
302
  await this.executeQueries(upQueries, downQueries);
301
303
  }
302
304
  /**