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.
- package/browser/cli-ts-node-commonjs.js +0 -0
- package/browser/cli-ts-node-esm.js +0 -0
- package/browser/common/DeepPartial.d.ts +1 -1
- package/browser/common/EntityTarget.d.ts +1 -1
- package/browser/common/MixedList.d.ts +1 -1
- package/browser/common/NonNever.d.ts +1 -1
- package/browser/common/ObjectType.d.ts +1 -1
- package/browser/common/PickKeysByType.d.ts +6 -0
- package/browser/common/PickKeysByType.js +3 -0
- package/browser/common/PickKeysByType.js.map +1 -0
- package/browser/common/RelationType.d.ts +1 -1
- package/browser/connection/BaseConnectionOptions.d.ts +1 -1
- package/browser/connection/ConnectionOptions.d.ts +1 -1
- package/browser/container.d.ts +1 -1
- package/browser/data-source/DataSourceOptions.d.ts +1 -1
- package/browser/decorator/columns/PrimaryColumn.d.ts +1 -1
- package/browser/driver/Driver.d.ts +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +6 -0
- package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +3 -1
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.d.ts +1 -1
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/mongodb/typings.d.ts +6 -6
- package/browser/driver/oracle/OracleDriver.d.ts +1 -1
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapDriver.d.ts +1 -1
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.d.ts +1 -1
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +12 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/types/ColumnTypes.d.ts +7 -7
- package/browser/driver/types/DatabaseType.d.ts +1 -1
- package/browser/driver/types/GeoJsonTypes.d.ts +12 -12
- package/browser/driver/types/IsolationLevel.d.ts +1 -1
- package/browser/driver/types/ReplicationMode.d.ts +1 -1
- package/browser/driver/types/UpsertType.d.ts +1 -1
- package/browser/entity-manager/EntityManager.d.ts +18 -0
- package/browser/entity-manager/EntityManager.js +32 -0
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-manager/MongoEntityManager.js +4 -4
- package/browser/entity-manager/MongoEntityManager.js.map +1 -1
- package/browser/find-options/FindOperator.d.ts +1 -1
- package/browser/find-options/FindOperatorType.d.ts +1 -1
- package/browser/find-options/FindOperatorType.js.map +1 -1
- package/browser/find-options/FindOptionsOrder.d.ts +3 -3
- package/browser/find-options/FindOptionsRelations.d.ts +3 -3
- package/browser/find-options/FindOptionsSelect.d.ts +3 -3
- package/browser/find-options/FindOptionsWhere.d.ts +6 -2
- package/browser/find-options/FindOptionsWhere.js.map +1 -1
- package/browser/find-options/OrderByCondition.d.ts +1 -1
- package/browser/find-options/mongodb/MongoFindOneOptions.d.ts +1 -1
- package/browser/find-options/operator/JsonContains.d.ts +6 -0
- package/browser/find-options/operator/JsonContains.js +10 -0
- package/browser/find-options/operator/JsonContains.js.map +1 -0
- package/browser/index.d.ts +3 -0
- package/browser/index.js +3 -0
- package/browser/index.js.map +1 -1
- package/browser/logger/AbstractLogger.d.ts +49 -0
- package/browser/logger/AbstractLogger.js +230 -0
- package/browser/logger/AbstractLogger.js.map +1 -0
- package/browser/logger/AdvancedConsoleLogger.d.ts +5 -33
- package/browser/logger/AdvancedConsoleLogger.js +41 -106
- package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
- package/browser/logger/DebugLogger.d.ts +9 -29
- package/browser/logger/DebugLogger.js +56 -74
- package/browser/logger/DebugLogger.js.map +1 -1
- package/browser/logger/FileLogger.d.ts +6 -32
- package/browser/logger/FileLogger.js +50 -97
- package/browser/logger/FileLogger.js.map +1 -1
- package/browser/logger/Logger.d.ts +31 -0
- package/browser/logger/Logger.js.map +1 -1
- package/browser/logger/LoggerOptions.d.ts +3 -2
- package/browser/logger/LoggerOptions.js.map +1 -1
- package/browser/logger/SimpleConsoleLogger.d.ts +5 -33
- package/browser/logger/SimpleConsoleLogger.js +43 -106
- package/browser/logger/SimpleConsoleLogger.js.map +1 -1
- package/browser/metadata/types/DeferrableType.d.ts +1 -1
- package/browser/metadata/types/EventListenerTypes.d.ts +1 -1
- package/browser/metadata/types/OnDeleteType.d.ts +1 -1
- package/browser/metadata/types/OnUpdateType.d.ts +1 -1
- package/browser/metadata/types/PropertyTypeInFunction.d.ts +1 -1
- package/browser/metadata/types/RelationTypeInFunction.d.ts +1 -1
- package/browser/metadata/types/RelationTypes.d.ts +1 -1
- package/browser/metadata/types/TableTypes.d.ts +1 -1
- package/browser/metadata/types/TreeTypes.d.ts +1 -1
- package/browser/metadata-args/types/ColumnMode.d.ts +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +1 -1
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/naming-strategy/LegacyOracleNamingStrategy.d.ts +21 -0
- package/browser/naming-strategy/LegacyOracleNamingStrategy.js +46 -0
- package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -0
- package/browser/persistence/SubjectTopoligicalSorter.js +2 -6
- package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/browser/platform/BrowserPlatformTools.js +2 -2
- package/browser/platform/BrowserPlatformTools.js.map +1 -1
- package/browser/platform/PlatformTools.d.ts +2 -0
- package/browser/platform/PlatformTools.js +6 -0
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/InsertOrUpdateOptions.d.ts +1 -1
- package/browser/query-builder/QueryBuilder.js +2 -0
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryPartialEntity.d.ts +3 -3
- package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
- package/browser/query-builder/SelectQueryBuilder.js +8 -4
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilderOption.d.ts +1 -1
- package/browser/query-builder/WhereClause.d.ts +3 -3
- package/browser/query-builder/WhereClause.js.map +1 -1
- package/browser/repository/BaseEntity.d.ts +25 -0
- package/browser/repository/BaseEntity.js +24 -0
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/EntityId.d.ts +1 -1
- package/browser/repository/Repository.d.ts +17 -0
- package/browser/repository/Repository.js +32 -8
- package/browser/repository/Repository.js.map +1 -1
- package/browser/util/VersionUtils.d.ts +1 -1
- package/cli-ts-node-commonjs.js +0 -0
- package/cli-ts-node-esm.js +0 -0
- package/cli.js +0 -0
- package/commands/CommandUtils.d.ts +1 -1
- package/commands/MigrationCreateCommand.d.ts +1 -1
- package/commands/MigrationGenerateCommand.d.ts +1 -1
- package/common/DeepPartial.d.ts +1 -1
- package/common/EntityTarget.d.ts +1 -1
- package/common/MixedList.d.ts +1 -1
- package/common/NonNever.d.ts +1 -1
- package/common/ObjectType.d.ts +1 -1
- package/common/PickKeysByType.d.ts +6 -0
- package/common/PickKeysByType.js +4 -0
- package/common/PickKeysByType.js.map +1 -0
- package/common/RelationType.d.ts +1 -1
- package/connection/BaseConnectionOptions.d.ts +1 -1
- package/connection/ConnectionOptions.d.ts +1 -1
- package/container.d.ts +1 -1
- package/data-source/DataSourceOptions.d.ts +1 -1
- package/decorator/columns/PrimaryColumn.d.ts +1 -1
- package/driver/Driver.d.ts +1 -1
- package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +6 -0
- package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3Driver.js +3 -1
- package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/driver/mongodb/MongoDriver.d.ts +1 -1
- package/driver/mongodb/MongoDriver.js.map +1 -1
- package/driver/mongodb/typings.d.ts +6 -6
- package/driver/oracle/OracleDriver.d.ts +1 -1
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +1 -1
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sap/SapDriver.d.ts +1 -1
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/spanner/SpannerDriver.d.ts +1 -1
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +12 -0
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +1 -1
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/types/ColumnTypes.d.ts +7 -7
- package/driver/types/DatabaseType.d.ts +1 -1
- package/driver/types/GeoJsonTypes.d.ts +12 -12
- package/driver/types/IsolationLevel.d.ts +1 -1
- package/driver/types/ReplicationMode.d.ts +1 -1
- package/driver/types/UpsertType.d.ts +1 -1
- package/entity-manager/EntityManager.d.ts +18 -0
- package/entity-manager/EntityManager.js +32 -0
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-manager/MongoEntityManager.js +4 -4
- package/entity-manager/MongoEntityManager.js.map +1 -1
- package/find-options/FindOperator.d.ts +1 -1
- package/find-options/FindOperatorType.d.ts +1 -1
- package/find-options/FindOperatorType.js.map +1 -1
- package/find-options/FindOptionsOrder.d.ts +3 -3
- package/find-options/FindOptionsRelations.d.ts +3 -3
- package/find-options/FindOptionsSelect.d.ts +3 -3
- package/find-options/FindOptionsWhere.d.ts +6 -2
- package/find-options/FindOptionsWhere.js.map +1 -1
- package/find-options/OrderByCondition.d.ts +1 -1
- package/find-options/mongodb/MongoFindOneOptions.d.ts +1 -1
- package/find-options/operator/JsonContains.d.ts +6 -0
- package/find-options/operator/JsonContains.js +14 -0
- package/find-options/operator/JsonContains.js.map +1 -0
- package/index.d.ts +3 -0
- package/index.js +5 -1
- package/index.js.map +1 -1
- package/index.mjs +6 -0
- package/logger/AbstractLogger.d.ts +49 -0
- package/logger/AbstractLogger.js +234 -0
- package/logger/AbstractLogger.js.map +1 -0
- package/logger/AdvancedConsoleLogger.d.ts +5 -33
- package/logger/AdvancedConsoleLogger.js +41 -106
- package/logger/AdvancedConsoleLogger.js.map +1 -1
- package/logger/DebugLogger.d.ts +9 -29
- package/logger/DebugLogger.js +56 -75
- package/logger/DebugLogger.js.map +1 -1
- package/logger/FileLogger.d.ts +6 -32
- package/logger/FileLogger.js +50 -97
- package/logger/FileLogger.js.map +1 -1
- package/logger/Logger.d.ts +31 -0
- package/logger/Logger.js.map +1 -1
- package/logger/LoggerOptions.d.ts +3 -2
- package/logger/LoggerOptions.js.map +1 -1
- package/logger/SimpleConsoleLogger.d.ts +5 -33
- package/logger/SimpleConsoleLogger.js +43 -106
- package/logger/SimpleConsoleLogger.js.map +1 -1
- package/metadata/types/DeferrableType.d.ts +1 -1
- package/metadata/types/EventListenerTypes.d.ts +1 -1
- package/metadata/types/OnDeleteType.d.ts +1 -1
- package/metadata/types/OnUpdateType.d.ts +1 -1
- package/metadata/types/PropertyTypeInFunction.d.ts +1 -1
- package/metadata/types/RelationTypeInFunction.d.ts +1 -1
- package/metadata/types/RelationTypes.d.ts +1 -1
- package/metadata/types/TableTypes.d.ts +1 -1
- package/metadata/types/TreeTypes.d.ts +1 -1
- package/metadata-args/types/ColumnMode.d.ts +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.js +2 -1
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/migration/MigrationExecutor.js +1 -1
- package/migration/MigrationExecutor.js.map +1 -1
- package/naming-strategy/LegacyOracleNamingStrategy.d.ts +21 -0
- package/naming-strategy/LegacyOracleNamingStrategy.js +50 -0
- package/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -0
- package/package.json +273 -1
- package/persistence/SubjectTopoligicalSorter.js +2 -6
- package/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/platform/PlatformTools.d.ts +2 -0
- package/platform/PlatformTools.js +6 -0
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/InsertOrUpdateOptions.d.ts +1 -1
- package/query-builder/QueryBuilder.js +2 -0
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryPartialEntity.d.ts +3 -3
- package/query-builder/SelectQueryBuilder.d.ts +1 -1
- package/query-builder/SelectQueryBuilder.js +8 -4
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SelectQueryBuilderOption.d.ts +1 -1
- package/query-builder/WhereClause.d.ts +3 -3
- package/query-builder/WhereClause.js.map +1 -1
- package/repository/BaseEntity.d.ts +25 -0
- package/repository/BaseEntity.js +24 -0
- package/repository/BaseEntity.js.map +1 -1
- package/repository/EntityId.d.ts +1 -1
- package/repository/Repository.d.ts +17 -0
- package/repository/Repository.js +32 -8
- package/repository/Repository.js.map +1 -1
- 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
|
|
5
|
+
export type LoggerOptions = boolean | "all" | LogLevel[];
|
|
5
6
|
/**
|
|
6
7
|
* File logging option.
|
|
7
8
|
*/
|
|
8
|
-
export
|
|
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
|
|
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 {
|
|
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
|
|
9
|
-
private options?;
|
|
10
|
-
constructor(options?: LoggerOptions | undefined);
|
|
8
|
+
export declare class SimpleConsoleLogger extends AbstractLogger {
|
|
11
9
|
/**
|
|
12
|
-
*
|
|
10
|
+
* Write log to specific output.
|
|
13
11
|
*/
|
|
14
|
-
|
|
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
|
-
*
|
|
11
|
+
* Write log to specific output.
|
|
62
12
|
*/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
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":";;;
|
|
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,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* All types that entity listener can be.
|
|
3
3
|
*/
|
|
4
|
-
export
|
|
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
|
|
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
|
|
4
|
+
export type OnUpdateType = "RESTRICT" | "CASCADE" | "SET NULL" | "DEFAULT" | "NO ACTION";
|
|
@@ -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
|
|
5
|
+
export type RelationTypeInFunction = ((type?: any) => Function) | EntityTarget<any>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Table type. Tables can be closure, junction,, etc.
|
|
3
3
|
*/
|
|
4
|
-
export
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|