typeorm 0.3.12-dev.ef64bfc → 0.3.12

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 (256) hide show
  1. package/browser/cli-ts-node-commonjs.js +0 -0
  2. package/browser/cli-ts-node-esm.js +0 -0
  3. package/browser/common/DeepPartial.d.ts +1 -1
  4. package/browser/common/EntityTarget.d.ts +1 -1
  5. package/browser/common/MixedList.d.ts +1 -1
  6. package/browser/common/NonNever.d.ts +1 -1
  7. package/browser/common/ObjectType.d.ts +1 -1
  8. package/browser/common/PickKeysByType.d.ts +6 -0
  9. package/browser/common/PickKeysByType.js +3 -0
  10. package/browser/common/PickKeysByType.js.map +1 -0
  11. package/browser/common/RelationType.d.ts +1 -1
  12. package/browser/connection/BaseConnectionOptions.d.ts +1 -1
  13. package/browser/connection/ConnectionOptions.d.ts +1 -1
  14. package/browser/container.d.ts +1 -1
  15. package/browser/data-source/DataSourceOptions.d.ts +1 -1
  16. package/browser/decorator/columns/PrimaryColumn.d.ts +1 -1
  17. package/browser/driver/Driver.d.ts +1 -1
  18. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +6 -0
  19. package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  20. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +3 -1
  21. package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  22. package/browser/driver/mongodb/MongoDriver.d.ts +1 -1
  23. package/browser/driver/mongodb/MongoDriver.js.map +1 -1
  24. package/browser/driver/mongodb/typings.d.ts +6 -6
  25. package/browser/driver/oracle/OracleDriver.d.ts +1 -1
  26. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  27. package/browser/driver/postgres/PostgresQueryRunner.js +1 -1
  28. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  29. package/browser/driver/sap/SapDriver.d.ts +1 -1
  30. package/browser/driver/sap/SapDriver.js.map +1 -1
  31. package/browser/driver/spanner/SpannerDriver.d.ts +1 -1
  32. package/browser/driver/spanner/SpannerDriver.js.map +1 -1
  33. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +1 -1
  34. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +12 -0
  35. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  36. package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +1 -1
  37. package/browser/driver/sqlserver/SqlServerDriver.d.ts +1 -1
  38. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  39. package/browser/driver/types/ColumnTypes.d.ts +7 -7
  40. package/browser/driver/types/DatabaseType.d.ts +1 -1
  41. package/browser/driver/types/GeoJsonTypes.d.ts +12 -12
  42. package/browser/driver/types/IsolationLevel.d.ts +1 -1
  43. package/browser/driver/types/ReplicationMode.d.ts +1 -1
  44. package/browser/driver/types/UpsertType.d.ts +1 -1
  45. package/browser/entity-manager/EntityManager.d.ts +18 -0
  46. package/browser/entity-manager/EntityManager.js +32 -0
  47. package/browser/entity-manager/EntityManager.js.map +1 -1
  48. package/browser/entity-manager/MongoEntityManager.js +4 -4
  49. package/browser/entity-manager/MongoEntityManager.js.map +1 -1
  50. package/browser/find-options/FindOperator.d.ts +1 -1
  51. package/browser/find-options/FindOperatorType.d.ts +1 -1
  52. package/browser/find-options/FindOperatorType.js.map +1 -1
  53. package/browser/find-options/FindOptionsOrder.d.ts +3 -3
  54. package/browser/find-options/FindOptionsRelations.d.ts +3 -3
  55. package/browser/find-options/FindOptionsSelect.d.ts +3 -3
  56. package/browser/find-options/FindOptionsWhere.d.ts +6 -2
  57. package/browser/find-options/FindOptionsWhere.js.map +1 -1
  58. package/browser/find-options/OrderByCondition.d.ts +1 -1
  59. package/browser/find-options/mongodb/MongoFindOneOptions.d.ts +1 -1
  60. package/browser/find-options/operator/JsonContains.d.ts +6 -0
  61. package/browser/find-options/operator/JsonContains.js +10 -0
  62. package/browser/find-options/operator/JsonContains.js.map +1 -0
  63. package/browser/index.d.ts +3 -0
  64. package/browser/index.js +3 -0
  65. package/browser/index.js.map +1 -1
  66. package/browser/logger/AbstractLogger.d.ts +49 -0
  67. package/browser/logger/AbstractLogger.js +230 -0
  68. package/browser/logger/AbstractLogger.js.map +1 -0
  69. package/browser/logger/AdvancedConsoleLogger.d.ts +5 -33
  70. package/browser/logger/AdvancedConsoleLogger.js +41 -106
  71. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  72. package/browser/logger/DebugLogger.d.ts +9 -29
  73. package/browser/logger/DebugLogger.js +56 -74
  74. package/browser/logger/DebugLogger.js.map +1 -1
  75. package/browser/logger/FileLogger.d.ts +6 -32
  76. package/browser/logger/FileLogger.js +50 -97
  77. package/browser/logger/FileLogger.js.map +1 -1
  78. package/browser/logger/Logger.d.ts +31 -0
  79. package/browser/logger/Logger.js.map +1 -1
  80. package/browser/logger/LoggerOptions.d.ts +3 -2
  81. package/browser/logger/LoggerOptions.js.map +1 -1
  82. package/browser/logger/SimpleConsoleLogger.d.ts +5 -33
  83. package/browser/logger/SimpleConsoleLogger.js +43 -106
  84. package/browser/logger/SimpleConsoleLogger.js.map +1 -1
  85. package/browser/metadata/types/DeferrableType.d.ts +1 -1
  86. package/browser/metadata/types/EventListenerTypes.d.ts +1 -1
  87. package/browser/metadata/types/OnDeleteType.d.ts +1 -1
  88. package/browser/metadata/types/OnUpdateType.d.ts +1 -1
  89. package/browser/metadata/types/PropertyTypeInFunction.d.ts +1 -1
  90. package/browser/metadata/types/RelationTypeInFunction.d.ts +1 -1
  91. package/browser/metadata/types/RelationTypes.d.ts +1 -1
  92. package/browser/metadata/types/TableTypes.d.ts +1 -1
  93. package/browser/metadata/types/TreeTypes.d.ts +1 -1
  94. package/browser/metadata-args/types/ColumnMode.d.ts +1 -1
  95. package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -1
  96. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  97. package/browser/migration/MigrationExecutor.js +1 -1
  98. package/browser/migration/MigrationExecutor.js.map +1 -1
  99. package/browser/naming-strategy/LegacyOracleNamingStrategy.d.ts +21 -0
  100. package/browser/naming-strategy/LegacyOracleNamingStrategy.js +46 -0
  101. package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -0
  102. package/browser/persistence/SubjectTopoligicalSorter.js +2 -6
  103. package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
  104. package/browser/platform/BrowserPlatformTools.js +2 -2
  105. package/browser/platform/BrowserPlatformTools.js.map +1 -1
  106. package/browser/platform/PlatformTools.d.ts +2 -0
  107. package/browser/platform/PlatformTools.js +6 -0
  108. package/browser/platform/PlatformTools.js.map +1 -1
  109. package/browser/query-builder/InsertOrUpdateOptions.d.ts +1 -1
  110. package/browser/query-builder/QueryBuilder.js +2 -0
  111. package/browser/query-builder/QueryBuilder.js.map +1 -1
  112. package/browser/query-builder/QueryPartialEntity.d.ts +3 -3
  113. package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
  114. package/browser/query-builder/SelectQueryBuilder.js +8 -4
  115. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  116. package/browser/query-builder/SelectQueryBuilderOption.d.ts +1 -1
  117. package/browser/query-builder/WhereClause.d.ts +3 -3
  118. package/browser/query-builder/WhereClause.js.map +1 -1
  119. package/browser/repository/BaseEntity.d.ts +25 -0
  120. package/browser/repository/BaseEntity.js +24 -0
  121. package/browser/repository/BaseEntity.js.map +1 -1
  122. package/browser/repository/EntityId.d.ts +1 -1
  123. package/browser/repository/Repository.d.ts +17 -0
  124. package/browser/repository/Repository.js +32 -8
  125. package/browser/repository/Repository.js.map +1 -1
  126. package/browser/util/VersionUtils.d.ts +1 -1
  127. package/cli-ts-node-commonjs.js +0 -0
  128. package/cli-ts-node-esm.js +0 -0
  129. package/cli.js +0 -0
  130. package/commands/CommandUtils.d.ts +1 -1
  131. package/commands/MigrationCreateCommand.d.ts +1 -1
  132. package/commands/MigrationGenerateCommand.d.ts +1 -1
  133. package/common/DeepPartial.d.ts +1 -1
  134. package/common/EntityTarget.d.ts +1 -1
  135. package/common/MixedList.d.ts +1 -1
  136. package/common/NonNever.d.ts +1 -1
  137. package/common/ObjectType.d.ts +1 -1
  138. package/common/PickKeysByType.d.ts +6 -0
  139. package/common/PickKeysByType.js +4 -0
  140. package/common/PickKeysByType.js.map +1 -0
  141. package/common/RelationType.d.ts +1 -1
  142. package/connection/BaseConnectionOptions.d.ts +1 -1
  143. package/connection/ConnectionOptions.d.ts +1 -1
  144. package/container.d.ts +1 -1
  145. package/data-source/DataSourceOptions.d.ts +1 -1
  146. package/decorator/columns/PrimaryColumn.d.ts +1 -1
  147. package/driver/Driver.d.ts +1 -1
  148. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +6 -0
  149. package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
  150. package/driver/better-sqlite3/BetterSqlite3Driver.js +3 -1
  151. package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
  152. package/driver/mongodb/MongoDriver.d.ts +1 -1
  153. package/driver/mongodb/MongoDriver.js.map +1 -1
  154. package/driver/mongodb/typings.d.ts +6 -6
  155. package/driver/oracle/OracleDriver.d.ts +1 -1
  156. package/driver/oracle/OracleDriver.js.map +1 -1
  157. package/driver/postgres/PostgresQueryRunner.js +1 -1
  158. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  159. package/driver/sap/SapDriver.d.ts +1 -1
  160. package/driver/sap/SapDriver.js.map +1 -1
  161. package/driver/spanner/SpannerDriver.d.ts +1 -1
  162. package/driver/spanner/SpannerDriver.js.map +1 -1
  163. package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +1 -1
  164. package/driver/sqlite-abstract/AbstractSqliteDriver.js +12 -0
  165. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  166. package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +1 -1
  167. package/driver/sqlserver/SqlServerDriver.d.ts +1 -1
  168. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  169. package/driver/types/ColumnTypes.d.ts +7 -7
  170. package/driver/types/DatabaseType.d.ts +1 -1
  171. package/driver/types/GeoJsonTypes.d.ts +12 -12
  172. package/driver/types/IsolationLevel.d.ts +1 -1
  173. package/driver/types/ReplicationMode.d.ts +1 -1
  174. package/driver/types/UpsertType.d.ts +1 -1
  175. package/entity-manager/EntityManager.d.ts +18 -0
  176. package/entity-manager/EntityManager.js +32 -0
  177. package/entity-manager/EntityManager.js.map +1 -1
  178. package/entity-manager/MongoEntityManager.js +4 -4
  179. package/entity-manager/MongoEntityManager.js.map +1 -1
  180. package/find-options/FindOperator.d.ts +1 -1
  181. package/find-options/FindOperatorType.d.ts +1 -1
  182. package/find-options/FindOperatorType.js.map +1 -1
  183. package/find-options/FindOptionsOrder.d.ts +3 -3
  184. package/find-options/FindOptionsRelations.d.ts +3 -3
  185. package/find-options/FindOptionsSelect.d.ts +3 -3
  186. package/find-options/FindOptionsWhere.d.ts +6 -2
  187. package/find-options/FindOptionsWhere.js.map +1 -1
  188. package/find-options/OrderByCondition.d.ts +1 -1
  189. package/find-options/mongodb/MongoFindOneOptions.d.ts +1 -1
  190. package/find-options/operator/JsonContains.d.ts +6 -0
  191. package/find-options/operator/JsonContains.js +14 -0
  192. package/find-options/operator/JsonContains.js.map +1 -0
  193. package/index.d.ts +3 -0
  194. package/index.js +5 -1
  195. package/index.js.map +1 -1
  196. package/index.mjs +6 -0
  197. package/logger/AbstractLogger.d.ts +49 -0
  198. package/logger/AbstractLogger.js +234 -0
  199. package/logger/AbstractLogger.js.map +1 -0
  200. package/logger/AdvancedConsoleLogger.d.ts +5 -33
  201. package/logger/AdvancedConsoleLogger.js +41 -106
  202. package/logger/AdvancedConsoleLogger.js.map +1 -1
  203. package/logger/DebugLogger.d.ts +9 -29
  204. package/logger/DebugLogger.js +56 -75
  205. package/logger/DebugLogger.js.map +1 -1
  206. package/logger/FileLogger.d.ts +6 -32
  207. package/logger/FileLogger.js +50 -97
  208. package/logger/FileLogger.js.map +1 -1
  209. package/logger/Logger.d.ts +31 -0
  210. package/logger/Logger.js.map +1 -1
  211. package/logger/LoggerOptions.d.ts +3 -2
  212. package/logger/LoggerOptions.js.map +1 -1
  213. package/logger/SimpleConsoleLogger.d.ts +5 -33
  214. package/logger/SimpleConsoleLogger.js +43 -106
  215. package/logger/SimpleConsoleLogger.js.map +1 -1
  216. package/metadata/types/DeferrableType.d.ts +1 -1
  217. package/metadata/types/EventListenerTypes.d.ts +1 -1
  218. package/metadata/types/OnDeleteType.d.ts +1 -1
  219. package/metadata/types/OnUpdateType.d.ts +1 -1
  220. package/metadata/types/PropertyTypeInFunction.d.ts +1 -1
  221. package/metadata/types/RelationTypeInFunction.d.ts +1 -1
  222. package/metadata/types/RelationTypes.d.ts +1 -1
  223. package/metadata/types/TableTypes.d.ts +1 -1
  224. package/metadata/types/TreeTypes.d.ts +1 -1
  225. package/metadata-args/types/ColumnMode.d.ts +1 -1
  226. package/metadata-builder/RelationJoinColumnBuilder.js +2 -1
  227. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  228. package/migration/MigrationExecutor.js +1 -1
  229. package/migration/MigrationExecutor.js.map +1 -1
  230. package/naming-strategy/LegacyOracleNamingStrategy.d.ts +21 -0
  231. package/naming-strategy/LegacyOracleNamingStrategy.js +50 -0
  232. package/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -0
  233. package/package.json +273 -1
  234. package/persistence/SubjectTopoligicalSorter.js +2 -6
  235. package/persistence/SubjectTopoligicalSorter.js.map +1 -1
  236. package/platform/PlatformTools.d.ts +2 -0
  237. package/platform/PlatformTools.js +6 -0
  238. package/platform/PlatformTools.js.map +1 -1
  239. package/query-builder/InsertOrUpdateOptions.d.ts +1 -1
  240. package/query-builder/QueryBuilder.js +2 -0
  241. package/query-builder/QueryBuilder.js.map +1 -1
  242. package/query-builder/QueryPartialEntity.d.ts +3 -3
  243. package/query-builder/SelectQueryBuilder.d.ts +1 -1
  244. package/query-builder/SelectQueryBuilder.js +8 -4
  245. package/query-builder/SelectQueryBuilder.js.map +1 -1
  246. package/query-builder/SelectQueryBuilderOption.d.ts +1 -1
  247. package/query-builder/WhereClause.d.ts +3 -3
  248. package/query-builder/WhereClause.js.map +1 -1
  249. package/repository/BaseEntity.d.ts +25 -0
  250. package/repository/BaseEntity.js +24 -0
  251. package/repository/BaseEntity.js.map +1 -1
  252. package/repository/EntityId.d.ts +1 -1
  253. package/repository/Repository.d.ts +17 -0
  254. package/repository/Repository.js +32 -8
  255. package/repository/Repository.js.map +1 -1
  256. package/util/VersionUtils.d.ts +1 -1
@@ -1,11 +1,12 @@
1
+ import { LogLevel } from "./Logger";
1
2
  /**
2
3
  * Logging options.
3
4
  */
4
- export declare type LoggerOptions = boolean | "all" | ("query" | "schema" | "error" | "warn" | "info" | "log" | "migration")[];
5
+ export type LoggerOptions = boolean | "all" | LogLevel[];
5
6
  /**
6
7
  * File logging option.
7
8
  */
8
- export declare type FileLoggerOptions = {
9
+ export type FileLoggerOptions = {
9
10
  /**
10
11
  * Specify custom path for log file, relative to application root
11
12
  */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/logger/LoggerOptions.ts"],"names":[],"mappings":"","file":"LoggerOptions.js","sourcesContent":["/**\n * Logging options.\n */\nexport type LoggerOptions =\n | boolean\n | \"all\"\n | (\"query\" | \"schema\" | \"error\" | \"warn\" | \"info\" | \"log\" | \"migration\")[]\n\n/**\n * File logging option.\n */\nexport type FileLoggerOptions = {\n /**\n * Specify custom path for log file, relative to application root\n */\n logPath: string\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/logger/LoggerOptions.ts"],"names":[],"mappings":"","file":"LoggerOptions.js","sourcesContent":["import { LogLevel } from \"./Logger\"\n\n/**\n * Logging options.\n */\nexport type LoggerOptions = boolean | \"all\" | LogLevel[]\n\n/**\n * File logging option.\n */\nexport type FileLoggerOptions = {\n /**\n * Specify custom path for log file, relative to application root\n */\n logPath: string\n}\n"],"sourceRoot":".."}
@@ -1,41 +1,13 @@
1
- import { LoggerOptions } from "./LoggerOptions";
1
+ import { AbstractLogger } from "./AbstractLogger";
2
+ import { LogLevel, LogMessage } from "./Logger";
2
3
  import { QueryRunner } from "../query-runner/QueryRunner";
3
- import { Logger } from "./Logger";
4
4
  /**
5
5
  * Performs logging of the events in TypeORM.
6
6
  * This version of logger uses console to log events and does not use syntax highlighting.
7
7
  */
8
- export declare class SimpleConsoleLogger implements Logger {
9
- private options?;
10
- constructor(options?: LoggerOptions | undefined);
8
+ export declare class SimpleConsoleLogger extends AbstractLogger {
11
9
  /**
12
- * Logs query and parameters used in it.
10
+ * Write log to specific output.
13
11
  */
14
- logQuery(query: string, parameters?: any[], queryRunner?: QueryRunner): void;
15
- /**
16
- * Logs query that is failed.
17
- */
18
- logQueryError(error: string, query: string, parameters?: any[], queryRunner?: QueryRunner): void;
19
- /**
20
- * Logs query that is slow.
21
- */
22
- logQuerySlow(time: number, query: string, parameters?: any[], queryRunner?: QueryRunner): void;
23
- /**
24
- * Logs events from the schema build process.
25
- */
26
- logSchemaBuild(message: string, queryRunner?: QueryRunner): void;
27
- /**
28
- * Logs events from the migrations run process.
29
- */
30
- logMigration(message: string, queryRunner?: QueryRunner): void;
31
- /**
32
- * Perform logging using given logger, or by default to the console.
33
- * Log has its own level and message.
34
- */
35
- log(level: "log" | "info" | "warn", message: any, queryRunner?: QueryRunner): void;
36
- /**
37
- * Converts parameters to a string.
38
- * Sometimes parameters can have circular objects and therefor we are handle this case too.
39
- */
40
- protected stringifyParams(parameters: any[]): string | any[];
12
+ protected writeLog(level: LogLevel, logMessage: LogMessage | LogMessage[], queryRunner?: QueryRunner): void;
41
13
  }
@@ -1,118 +1,55 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SimpleConsoleLogger = void 0;
4
+ const AbstractLogger_1 = require("./AbstractLogger");
4
5
  /**
5
6
  * Performs logging of the events in TypeORM.
6
7
  * This version of logger uses console to log events and does not use syntax highlighting.
7
8
  */
8
- class SimpleConsoleLogger {
9
- // -------------------------------------------------------------------------
10
- // Constructor
11
- // -------------------------------------------------------------------------
12
- constructor(options) {
13
- this.options = options;
14
- }
15
- // -------------------------------------------------------------------------
16
- // Public Methods
17
- // -------------------------------------------------------------------------
18
- /**
19
- * Logs query and parameters used in it.
20
- */
21
- logQuery(query, parameters, queryRunner) {
22
- if (this.options === "all" ||
23
- this.options === true ||
24
- (Array.isArray(this.options) &&
25
- this.options.indexOf("query") !== -1)) {
26
- const sql = query +
27
- (parameters && parameters.length
28
- ? " -- PARAMETERS: " + this.stringifyParams(parameters)
29
- : "");
30
- console.log("query" + ": " + sql);
31
- }
32
- }
33
- /**
34
- * Logs query that is failed.
35
- */
36
- logQueryError(error, query, parameters, queryRunner) {
37
- if (this.options === "all" ||
38
- this.options === true ||
39
- (Array.isArray(this.options) &&
40
- this.options.indexOf("error") !== -1)) {
41
- const sql = query +
42
- (parameters && parameters.length
43
- ? " -- PARAMETERS: " + this.stringifyParams(parameters)
44
- : "");
45
- console.log(`query failed: ` + sql);
46
- console.log(`error:`, error);
47
- }
48
- }
49
- /**
50
- * Logs query that is slow.
51
- */
52
- logQuerySlow(time, query, parameters, queryRunner) {
53
- const sql = query +
54
- (parameters && parameters.length
55
- ? " -- PARAMETERS: " + this.stringifyParams(parameters)
56
- : "");
57
- console.log(`query is slow: ` + sql);
58
- console.log(`execution time: ` + time);
59
- }
9
+ class SimpleConsoleLogger extends AbstractLogger_1.AbstractLogger {
60
10
  /**
61
- * Logs events from the schema build process.
11
+ * Write log to specific output.
62
12
  */
63
- logSchemaBuild(message, queryRunner) {
64
- if (this.options === "all" ||
65
- (Array.isArray(this.options) &&
66
- this.options.indexOf("schema") !== -1)) {
67
- console.log(message);
68
- }
69
- }
70
- /**
71
- * Logs events from the migrations run process.
72
- */
73
- logMigration(message, queryRunner) {
74
- console.log(message);
75
- }
76
- /**
77
- * Perform logging using given logger, or by default to the console.
78
- * Log has its own level and message.
79
- */
80
- log(level, message, queryRunner) {
81
- switch (level) {
82
- case "log":
83
- if (this.options === "all" ||
84
- (Array.isArray(this.options) &&
85
- this.options.indexOf("log") !== -1))
86
- console.log(message);
87
- break;
88
- case "info":
89
- if (this.options === "all" ||
90
- (Array.isArray(this.options) &&
91
- this.options.indexOf("info") !== -1))
92
- console.info(message);
93
- break;
94
- case "warn":
95
- if (this.options === "all" ||
96
- (Array.isArray(this.options) &&
97
- this.options.indexOf("warn") !== -1))
98
- console.warn(message);
99
- break;
100
- }
101
- }
102
- // -------------------------------------------------------------------------
103
- // Protected Methods
104
- // -------------------------------------------------------------------------
105
- /**
106
- * Converts parameters to a string.
107
- * Sometimes parameters can have circular objects and therefor we are handle this case too.
108
- */
109
- stringifyParams(parameters) {
110
- try {
111
- return JSON.stringify(parameters);
112
- }
113
- catch (error) {
114
- // most probably circular objects in parameters
115
- return parameters;
13
+ writeLog(level, logMessage, queryRunner) {
14
+ var _a;
15
+ const messages = this.prepareLogMessages(logMessage, {
16
+ highlightSql: false,
17
+ });
18
+ for (let message of messages) {
19
+ switch ((_a = message.type) !== null && _a !== void 0 ? _a : level) {
20
+ case "log":
21
+ case "schema-build":
22
+ case "migration":
23
+ console.log(message.message);
24
+ break;
25
+ case "info":
26
+ case "query":
27
+ if (message.prefix) {
28
+ console.info(message.prefix, message.message);
29
+ }
30
+ else {
31
+ console.info(message.message);
32
+ }
33
+ break;
34
+ case "warn":
35
+ case "query-slow":
36
+ if (message.prefix) {
37
+ console.warn(message.prefix, message.message);
38
+ }
39
+ else {
40
+ console.warn(message.message);
41
+ }
42
+ break;
43
+ case "error":
44
+ case "query-error":
45
+ if (message.prefix) {
46
+ console.error(message.prefix, message.message);
47
+ }
48
+ else {
49
+ console.error(message.message);
50
+ }
51
+ break;
52
+ }
116
53
  }
117
54
  }
118
55
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/logger/SimpleConsoleLogger.ts"],"names":[],"mappings":"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","file":"SimpleConsoleLogger.js","sourcesContent":["import { LoggerOptions } from \"./LoggerOptions\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { Logger } from \"./Logger\"\n\n/**\n * Performs logging of the events in TypeORM.\n * This version of logger uses console to log events and does not use syntax highlighting.\n */\nexport class SimpleConsoleLogger implements Logger {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private options?: LoggerOptions) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Logs query and parameters used in it.\n */\n logQuery(query: string, parameters?: any[], queryRunner?: QueryRunner) {\n if (\n this.options === \"all\" ||\n this.options === true ||\n (Array.isArray(this.options) &&\n this.options.indexOf(\"query\") !== -1)\n ) {\n const sql =\n query +\n (parameters && parameters.length\n ? \" -- PARAMETERS: \" + this.stringifyParams(parameters)\n : \"\")\n console.log(\"query\" + \": \" + sql)\n }\n }\n\n /**\n * Logs query that is failed.\n */\n logQueryError(\n error: string,\n query: string,\n parameters?: any[],\n queryRunner?: QueryRunner,\n ) {\n if (\n this.options === \"all\" ||\n this.options === true ||\n (Array.isArray(this.options) &&\n this.options.indexOf(\"error\") !== -1)\n ) {\n const sql =\n query +\n (parameters && parameters.length\n ? \" -- PARAMETERS: \" + this.stringifyParams(parameters)\n : \"\")\n console.log(`query failed: ` + sql)\n console.log(`error:`, error)\n }\n }\n\n /**\n * Logs query that is slow.\n */\n logQuerySlow(\n time: number,\n query: string,\n parameters?: any[],\n queryRunner?: QueryRunner,\n ) {\n const sql =\n query +\n (parameters && parameters.length\n ? \" -- PARAMETERS: \" + this.stringifyParams(parameters)\n : \"\")\n console.log(`query is slow: ` + sql)\n console.log(`execution time: ` + time)\n }\n\n /**\n * Logs events from the schema build process.\n */\n logSchemaBuild(message: string, queryRunner?: QueryRunner) {\n if (\n this.options === \"all\" ||\n (Array.isArray(this.options) &&\n this.options.indexOf(\"schema\") !== -1)\n ) {\n console.log(message)\n }\n }\n\n /**\n * Logs events from the migrations run process.\n */\n logMigration(message: string, queryRunner?: QueryRunner) {\n console.log(message)\n }\n\n /**\n * Perform logging using given logger, or by default to the console.\n * Log has its own level and message.\n */\n log(\n level: \"log\" | \"info\" | \"warn\",\n message: any,\n queryRunner?: QueryRunner,\n ) {\n switch (level) {\n case \"log\":\n if (\n this.options === \"all\" ||\n (Array.isArray(this.options) &&\n this.options.indexOf(\"log\") !== -1)\n )\n console.log(message)\n break\n case \"info\":\n if (\n this.options === \"all\" ||\n (Array.isArray(this.options) &&\n this.options.indexOf(\"info\") !== -1)\n )\n console.info(message)\n break\n case \"warn\":\n if (\n this.options === \"all\" ||\n (Array.isArray(this.options) &&\n this.options.indexOf(\"warn\") !== -1)\n )\n console.warn(message)\n break\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Converts parameters to a string.\n * Sometimes parameters can have circular objects and therefor we are handle this case too.\n */\n protected stringifyParams(parameters: any[]) {\n try {\n return JSON.stringify(parameters)\n } catch (error) {\n // most probably circular objects in parameters\n return parameters\n }\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/logger/SimpleConsoleLogger.ts"],"names":[],"mappings":";;;AAAA,qDAAiD;AAIjD;;;GAGG;AACH,MAAa,mBAAoB,SAAQ,+BAAc;IACnD;;OAEG;IACO,QAAQ,CACd,KAAe,EACf,UAAqC,EACrC,WAAyB;;QAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;YACjD,YAAY,EAAE,KAAK;SACtB,CAAC,CAAA;QAEF,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;YAC1B,QAAQ,MAAA,OAAO,CAAC,IAAI,mCAAI,KAAK,EAAE;gBAC3B,KAAK,KAAK,CAAC;gBACX,KAAK,cAAc,CAAC;gBACpB,KAAK,WAAW;oBACZ,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;oBAC5B,MAAK;gBAET,KAAK,MAAM,CAAC;gBACZ,KAAK,OAAO;oBACR,IAAI,OAAO,CAAC,MAAM,EAAE;wBAChB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;qBAChD;yBAAM;wBACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;qBAChC;oBACD,MAAK;gBAET,KAAK,MAAM,CAAC;gBACZ,KAAK,YAAY;oBACb,IAAI,OAAO,CAAC,MAAM,EAAE;wBAChB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;qBAChD;yBAAM;wBACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;qBAChC;oBACD,MAAK;gBAET,KAAK,OAAO,CAAC;gBACb,KAAK,aAAa;oBACd,IAAI,OAAO,CAAC,MAAM,EAAE;wBAChB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;qBACjD;yBAAM;wBACH,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;qBACjC;oBACD,MAAK;aACZ;SACJ;IACL,CAAC;CACJ;AAlDD,kDAkDC","file":"SimpleConsoleLogger.js","sourcesContent":["import { AbstractLogger } from \"./AbstractLogger\"\nimport { LogLevel, LogMessage } from \"./Logger\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\n\n/**\n * Performs logging of the events in TypeORM.\n * This version of logger uses console to log events and does not use syntax highlighting.\n */\nexport class SimpleConsoleLogger extends AbstractLogger {\n /**\n * Write log to specific output.\n */\n protected writeLog(\n level: LogLevel,\n logMessage: LogMessage | LogMessage[],\n queryRunner?: QueryRunner,\n ) {\n const messages = this.prepareLogMessages(logMessage, {\n highlightSql: false,\n })\n\n for (let message of messages) {\n switch (message.type ?? level) {\n case \"log\":\n case \"schema-build\":\n case \"migration\":\n console.log(message.message)\n break\n\n case \"info\":\n case \"query\":\n if (message.prefix) {\n console.info(message.prefix, message.message)\n } else {\n console.info(message.message)\n }\n break\n\n case \"warn\":\n case \"query-slow\":\n if (message.prefix) {\n console.warn(message.prefix, message.message)\n } else {\n console.warn(message.message)\n }\n break\n\n case \"error\":\n case \"query-error\":\n if (message.prefix) {\n console.error(message.prefix, message.message)\n } else {\n console.error(message.message)\n }\n break\n }\n }\n }\n}\n"],"sourceRoot":".."}
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * DEFERRABLE type to be used to specify if foreign key constraints can be deferred.
3
3
  */
4
- export declare type DeferrableType = "INITIALLY IMMEDIATE" | "INITIALLY DEFERRED";
4
+ export type DeferrableType = "INITIALLY IMMEDIATE" | "INITIALLY DEFERRED";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * All types that entity listener can be.
3
3
  */
4
- export declare type EventListenerType = "after-load" | "before-insert" | "after-insert" | "before-update" | "after-update" | "before-remove" | "after-remove" | "before-soft-remove" | "after-soft-remove" | "before-recover" | "after-recover";
4
+ export type EventListenerType = "after-load" | "before-insert" | "after-insert" | "before-update" | "after-update" | "before-remove" | "after-remove" | "before-soft-remove" | "after-soft-remove" | "before-recover" | "after-recover";
5
5
  /**
6
6
  * Provides a constants for each entity listener type.
7
7
  */
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * ON_DELETE type to be used to specify delete strategy when some relation is being deleted from the database.
3
3
  */
4
- export declare type OnDeleteType = "RESTRICT" | "CASCADE" | "SET NULL" | "DEFAULT" | "NO ACTION";
4
+ export type OnDeleteType = "RESTRICT" | "CASCADE" | "SET NULL" | "DEFAULT" | "NO ACTION";
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * ON_UPDATE type to be used to specify update strategy when some relation is being updated.
3
3
  */
4
- export declare type OnUpdateType = "RESTRICT" | "CASCADE" | "SET NULL" | "DEFAULT" | "NO ACTION";
4
+ export type OnUpdateType = "RESTRICT" | "CASCADE" | "SET NULL" | "DEFAULT" | "NO ACTION";
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * Contains the name of the property of the object, or the function that returns this name.
3
3
  */
4
- export declare type PropertyTypeFactory<T> = string | ((t: T) => string | any);
4
+ export type PropertyTypeFactory<T> = string | ((t: T) => string | any);
@@ -2,4 +2,4 @@ import { EntityTarget } from "../../common/EntityTarget";
2
2
  /**
3
3
  * Function that returns a type of the field. Returned value must be a class used on the relation.
4
4
  */
5
- export declare type RelationTypeInFunction = ((type?: any) => Function) | EntityTarget<any>;
5
+ export type RelationTypeInFunction = ((type?: any) => Function) | EntityTarget<any>;
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * All types that relation can be.
3
3
  */
4
- export declare type RelationType = "one-to-one" | "one-to-many" | "many-to-one" | "many-to-many";
4
+ export type RelationType = "one-to-one" | "one-to-many" | "many-to-one" | "many-to-many";
@@ -1,4 +1,4 @@
1
1
  /**
2
2
  * Table type. Tables can be closure, junction,, etc.
3
3
  */
4
- export declare type TableType = "regular" | "view" | "junction" | "closure" | "closure-junction" | "entity-child";
4
+ export type TableType = "regular" | "view" | "junction" | "closure" | "closure-junction" | "entity-child";
@@ -2,4 +2,4 @@
2
2
  * Tree type.
3
3
  * Specifies what table pattern will be used for the tree entity.
4
4
  */
5
- export declare type TreeType = "adjacency-list" | "closure-table" | "nested-set" | "materialized-path";
5
+ export type TreeType = "adjacency-list" | "closure-table" | "nested-set" | "materialized-path";
@@ -4,4 +4,4 @@
4
4
  * For example, "primary" means that it will be a primary column, or "createDate" means that it will create a create
5
5
  * date column.
6
6
  */
7
- export declare type ColumnMode = "regular" | "virtual" | "virtual-property" | "createDate" | "updateDate" | "deleteDate" | "version" | "treeChildrenCount" | "treeLevel" | "objectId" | "array";
7
+ export type ColumnMode = "regular" | "virtual" | "virtual-property" | "createDate" | "updateDate" | "deleteDate" | "version" | "treeChildrenCount" | "treeLevel" | "objectId" | "array";
@@ -71,7 +71,8 @@ class RelationJoinColumnBuilder {
71
71
  deferrable: relation.deferrable,
72
72
  });
73
73
  // Oracle does not allow both primary and unique constraints on the same column
74
- if (this.connection.driver.options.type === "oracle" &&
74
+ // Postgres can't take the unique und primary at once during create and primary key is unique anyway
75
+ if (["oracle", "postgres"].includes(this.connection.driver.options.type) &&
75
76
  columns.every((column) => column.isPrimary))
76
77
  return { foreignKey, columns, uniqueConstraint: undefined };
77
78
  // CockroachDB requires UNIQUE constraints on referenced columns
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/metadata-builder/RelationJoinColumnBuilder.ts"],"names":[],"mappings":"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","file":"RelationJoinColumnBuilder.js","sourcesContent":["import { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { UniqueMetadata } from \"../metadata/UniqueMetadata\"\nimport { ForeignKeyMetadata } from \"../metadata/ForeignKeyMetadata\"\nimport { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { JoinColumnMetadataArgs } from \"../metadata-args/JoinColumnMetadataArgs\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { TypeORMError } from \"../error\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/**\n * Builds join column for the many-to-one and one-to-one owner relations.\n *\n * Cases it should cover:\n * 1. when join column is set with custom name and without referenced column name\n * we need automatically set referenced column name - primary ids by default\n * @JoinColumn({ name: \"custom_name\" })\n *\n * 2. when join column is set with only referenced column name\n * we need automatically set join column name - relation name + referenced column name\n * @JoinColumn({ referencedColumnName: \"title\" })\n *\n * 3. when join column is set without both referenced column name and join column name\n * we need to automatically set both of them\n * @JoinColumn()\n *\n * 4. when join column is not set at all (as in case of @ManyToOne relation)\n * we need to create join column for it with proper referenced column name and join column name\n *\n * 5. when multiple join columns set none of referencedColumnName and name can be optional\n * both options are required\n * @JoinColumn([\n * { name: \"category_title\", referencedColumnName: \"type\" },\n * { name: \"category_title\", referencedColumnName: \"name\" },\n * ])\n *\n * Since for many-to-one relations having JoinColumn decorator is not required,\n * we need to go thought each many-to-one relation without join column decorator set\n * and create join column metadata args for them.\n */\nexport class RelationJoinColumnBuilder {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: DataSource) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds a foreign key of the many-to-one or one-to-one owner relations.\n */\n build(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n ): {\n foreignKey: ForeignKeyMetadata | undefined\n columns: ColumnMetadata[]\n uniqueConstraint: UniqueMetadata | undefined\n } {\n const referencedColumns = this.collectReferencedColumns(\n joinColumns,\n relation,\n )\n const columns = this.collectColumns(\n joinColumns,\n relation,\n referencedColumns,\n )\n if (!referencedColumns.length || !relation.createForeignKeyConstraints)\n return {\n foreignKey: undefined,\n columns,\n uniqueConstraint: undefined,\n } // this case is possible for one-to-one non owning side and relations with createForeignKeyConstraints = false\n\n const foreignKey = new ForeignKeyMetadata({\n name: joinColumns[0]?.foreignKeyConstraintName,\n entityMetadata: relation.entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n namingStrategy: this.connection.namingStrategy,\n columns: columns,\n referencedColumns: referencedColumns,\n onDelete: relation.onDelete,\n onUpdate: relation.onUpdate,\n deferrable: relation.deferrable,\n })\n\n // Oracle does not allow both primary and unique constraints on the same column\n if (\n this.connection.driver.options.type === \"oracle\" &&\n columns.every((column) => column.isPrimary)\n )\n return { foreignKey, columns, uniqueConstraint: undefined }\n\n // CockroachDB requires UNIQUE constraints on referenced columns\n if (referencedColumns.length > 0 && relation.isOneToOne) {\n const uniqueConstraint = new UniqueMetadata({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n name: this.connection.namingStrategy.relationConstraintName(\n relation.entityMetadata.tableName,\n foreignKey.columns.map((c) => c.databaseName),\n ),\n target: relation.entityMetadata.target,\n },\n })\n uniqueConstraint.build(this.connection.namingStrategy)\n return { foreignKey, columns, uniqueConstraint }\n }\n\n return { foreignKey, columns, uniqueConstraint: undefined }\n }\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Collects referenced columns from the given join column args.\n */\n protected collectReferencedColumns(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n ): ColumnMetadata[] {\n const hasAnyReferencedColumnName = joinColumns.find(\n (joinColumnArgs) => !!joinColumnArgs.referencedColumnName,\n )\n const manyToOneWithoutJoinColumn =\n joinColumns.length === 0 && relation.isManyToOne\n const hasJoinColumnWithoutAnyReferencedColumnName =\n joinColumns.length > 0 && !hasAnyReferencedColumnName\n\n if (\n manyToOneWithoutJoinColumn ||\n hasJoinColumnWithoutAnyReferencedColumnName\n ) {\n // covers case3 and case1\n return relation.inverseEntityMetadata.primaryColumns\n } else {\n // cases with referenced columns defined\n return joinColumns.map((joinColumn) => {\n const referencedColumn =\n relation.inverseEntityMetadata.ownColumns.find(\n (column) =>\n column.propertyName ===\n joinColumn.referencedColumnName,\n ) // todo: can we also search in relations?\n if (!referencedColumn)\n throw new TypeORMError(\n `Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.inverseEntityMetadata.name}`,\n )\n\n return referencedColumn\n })\n }\n }\n\n /**\n * Collects columns from the given join column args.\n */\n private collectColumns(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n referencedColumns: ColumnMetadata[],\n ): ColumnMetadata[] {\n return referencedColumns.map((referencedColumn) => {\n // in the case if relation has join column with only name set we need this check\n const joinColumnMetadataArg = joinColumns.find((joinColumn) => {\n return (\n (!joinColumn.referencedColumnName ||\n joinColumn.referencedColumnName ===\n referencedColumn.propertyName) &&\n !!joinColumn.name\n )\n })\n const joinColumnName = joinColumnMetadataArg\n ? joinColumnMetadataArg.name\n : this.connection.namingStrategy.joinColumnName(\n relation.propertyName,\n referencedColumn.propertyName,\n )\n\n const relationalColumns = relation.embeddedMetadata\n ? relation.embeddedMetadata.columns\n : relation.entityMetadata.ownColumns\n let relationalColumn = relationalColumns.find(\n (column) =>\n column.databaseNameWithoutPrefixes === joinColumnName,\n )\n if (!relationalColumn) {\n relationalColumn = new ColumnMetadata({\n connection: this.connection,\n entityMetadata: relation.entityMetadata,\n embeddedMetadata: relation.embeddedMetadata,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: relation.propertyName,\n options: {\n name: joinColumnName,\n type: referencedColumn.type,\n length:\n !referencedColumn.length &&\n (DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\") &&\n (referencedColumn.generationStrategy ===\n \"uuid\" ||\n referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: referencedColumn.width,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.unsigned,\n comment: referencedColumn.comment,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n primary: relation.isPrimary,\n nullable: relation.isNullable,\n },\n },\n })\n relation.entityMetadata.registerColumn(relationalColumn)\n }\n relationalColumn.referencedColumn = referencedColumn // its important to set it here because we need to set referenced column for user defined join column\n relationalColumn.type = referencedColumn.type // also since types of relational column and join column must be equal we override user defined column type\n relationalColumn.relationMetadata = relation\n relationalColumn.build(this.connection)\n return relationalColumn\n })\n }\n}\n"],"sourceRoot":".."}
1
+ {"version":3,"sources":["../../src/metadata-builder/RelationJoinColumnBuilder.ts"],"names":[],"mappings":"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","file":"RelationJoinColumnBuilder.js","sourcesContent":["import { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { UniqueMetadata } from \"../metadata/UniqueMetadata\"\nimport { ForeignKeyMetadata } from \"../metadata/ForeignKeyMetadata\"\nimport { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { JoinColumnMetadataArgs } from \"../metadata-args/JoinColumnMetadataArgs\"\nimport { DataSource } from \"../data-source/DataSource\"\nimport { TypeORMError } from \"../error\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\n\n/**\n * Builds join column for the many-to-one and one-to-one owner relations.\n *\n * Cases it should cover:\n * 1. when join column is set with custom name and without referenced column name\n * we need automatically set referenced column name - primary ids by default\n * @JoinColumn({ name: \"custom_name\" })\n *\n * 2. when join column is set with only referenced column name\n * we need automatically set join column name - relation name + referenced column name\n * @JoinColumn({ referencedColumnName: \"title\" })\n *\n * 3. when join column is set without both referenced column name and join column name\n * we need to automatically set both of them\n * @JoinColumn()\n *\n * 4. when join column is not set at all (as in case of @ManyToOne relation)\n * we need to create join column for it with proper referenced column name and join column name\n *\n * 5. when multiple join columns set none of referencedColumnName and name can be optional\n * both options are required\n * @JoinColumn([\n * { name: \"category_title\", referencedColumnName: \"type\" },\n * { name: \"category_title\", referencedColumnName: \"name\" },\n * ])\n *\n * Since for many-to-one relations having JoinColumn decorator is not required,\n * we need to go thought each many-to-one relation without join column decorator set\n * and create join column metadata args for them.\n */\nexport class RelationJoinColumnBuilder {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private connection: DataSource) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Builds a foreign key of the many-to-one or one-to-one owner relations.\n */\n build(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n ): {\n foreignKey: ForeignKeyMetadata | undefined\n columns: ColumnMetadata[]\n uniqueConstraint: UniqueMetadata | undefined\n } {\n const referencedColumns = this.collectReferencedColumns(\n joinColumns,\n relation,\n )\n const columns = this.collectColumns(\n joinColumns,\n relation,\n referencedColumns,\n )\n if (!referencedColumns.length || !relation.createForeignKeyConstraints)\n return {\n foreignKey: undefined,\n columns,\n uniqueConstraint: undefined,\n } // this case is possible for one-to-one non owning side and relations with createForeignKeyConstraints = false\n\n const foreignKey = new ForeignKeyMetadata({\n name: joinColumns[0]?.foreignKeyConstraintName,\n entityMetadata: relation.entityMetadata,\n referencedEntityMetadata: relation.inverseEntityMetadata,\n namingStrategy: this.connection.namingStrategy,\n columns: columns,\n referencedColumns: referencedColumns,\n onDelete: relation.onDelete,\n onUpdate: relation.onUpdate,\n deferrable: relation.deferrable,\n })\n\n // Oracle does not allow both primary and unique constraints on the same column\n // Postgres can't take the unique und primary at once during create and primary key is unique anyway\n if (\n [\"oracle\", \"postgres\"].includes(\n this.connection.driver.options.type,\n ) &&\n columns.every((column) => column.isPrimary)\n )\n return { foreignKey, columns, uniqueConstraint: undefined }\n\n // CockroachDB requires UNIQUE constraints on referenced columns\n if (referencedColumns.length > 0 && relation.isOneToOne) {\n const uniqueConstraint = new UniqueMetadata({\n entityMetadata: relation.entityMetadata,\n columns: foreignKey.columns,\n args: {\n name: this.connection.namingStrategy.relationConstraintName(\n relation.entityMetadata.tableName,\n foreignKey.columns.map((c) => c.databaseName),\n ),\n target: relation.entityMetadata.target,\n },\n })\n uniqueConstraint.build(this.connection.namingStrategy)\n return { foreignKey, columns, uniqueConstraint }\n }\n\n return { foreignKey, columns, uniqueConstraint: undefined }\n }\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Collects referenced columns from the given join column args.\n */\n protected collectReferencedColumns(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n ): ColumnMetadata[] {\n const hasAnyReferencedColumnName = joinColumns.find(\n (joinColumnArgs) => !!joinColumnArgs.referencedColumnName,\n )\n const manyToOneWithoutJoinColumn =\n joinColumns.length === 0 && relation.isManyToOne\n const hasJoinColumnWithoutAnyReferencedColumnName =\n joinColumns.length > 0 && !hasAnyReferencedColumnName\n\n if (\n manyToOneWithoutJoinColumn ||\n hasJoinColumnWithoutAnyReferencedColumnName\n ) {\n // covers case3 and case1\n return relation.inverseEntityMetadata.primaryColumns\n } else {\n // cases with referenced columns defined\n return joinColumns.map((joinColumn) => {\n const referencedColumn =\n relation.inverseEntityMetadata.ownColumns.find(\n (column) =>\n column.propertyName ===\n joinColumn.referencedColumnName,\n ) // todo: can we also search in relations?\n if (!referencedColumn)\n throw new TypeORMError(\n `Referenced column ${joinColumn.referencedColumnName} was not found in entity ${relation.inverseEntityMetadata.name}`,\n )\n\n return referencedColumn\n })\n }\n }\n\n /**\n * Collects columns from the given join column args.\n */\n private collectColumns(\n joinColumns: JoinColumnMetadataArgs[],\n relation: RelationMetadata,\n referencedColumns: ColumnMetadata[],\n ): ColumnMetadata[] {\n return referencedColumns.map((referencedColumn) => {\n // in the case if relation has join column with only name set we need this check\n const joinColumnMetadataArg = joinColumns.find((joinColumn) => {\n return (\n (!joinColumn.referencedColumnName ||\n joinColumn.referencedColumnName ===\n referencedColumn.propertyName) &&\n !!joinColumn.name\n )\n })\n const joinColumnName = joinColumnMetadataArg\n ? joinColumnMetadataArg.name\n : this.connection.namingStrategy.joinColumnName(\n relation.propertyName,\n referencedColumn.propertyName,\n )\n\n const relationalColumns = relation.embeddedMetadata\n ? relation.embeddedMetadata.columns\n : relation.entityMetadata.ownColumns\n let relationalColumn = relationalColumns.find(\n (column) =>\n column.databaseNameWithoutPrefixes === joinColumnName,\n )\n if (!relationalColumn) {\n relationalColumn = new ColumnMetadata({\n connection: this.connection,\n entityMetadata: relation.entityMetadata,\n embeddedMetadata: relation.embeddedMetadata,\n args: {\n target: \"\",\n mode: \"virtual\",\n propertyName: relation.propertyName,\n options: {\n name: joinColumnName,\n type: referencedColumn.type,\n length:\n !referencedColumn.length &&\n (DriverUtils.isMySQLFamily(\n this.connection.driver,\n ) ||\n this.connection.driver.options.type ===\n \"aurora-mysql\") &&\n (referencedColumn.generationStrategy ===\n \"uuid\" ||\n referencedColumn.type === \"uuid\")\n ? \"36\"\n : referencedColumn.length, // fix https://github.com/typeorm/typeorm/issues/3604\n width: referencedColumn.width,\n charset: referencedColumn.charset,\n collation: referencedColumn.collation,\n precision: referencedColumn.precision,\n scale: referencedColumn.scale,\n zerofill: referencedColumn.zerofill,\n unsigned: referencedColumn.unsigned,\n comment: referencedColumn.comment,\n enum: referencedColumn.enum,\n enumName: referencedColumn.enumName,\n primary: relation.isPrimary,\n nullable: relation.isNullable,\n },\n },\n })\n relation.entityMetadata.registerColumn(relationalColumn)\n }\n relationalColumn.referencedColumn = referencedColumn // its important to set it here because we need to set referenced column for user defined join column\n relationalColumn.type = referencedColumn.type // also since types of relational column and join column must be equal we override user defined column type\n relationalColumn.relationMetadata = relation\n relationalColumn.build(this.connection)\n return relationalColumn\n })\n }\n}\n"],"sourceRoot":".."}
@@ -280,7 +280,7 @@ class MigrationExecutor {
280
280
  let lastTimeExecutedMigration = this.getLatestExecutedMigration(executedMigrations);
281
281
  // if no migrations found in the database then nothing to revert
282
282
  if (!lastTimeExecutedMigration) {
283
- this.connection.logger.logSchemaBuild(`No migrations was found in the database. Nothing to revert!`);
283
+ this.connection.logger.logSchemaBuild(`No migrations were found in the database. Nothing to revert!`);
284
284
  return;
285
285
  }
286
286
  // get all user's migrations in the source code