typeorm 0.3.23-dev.cebd63b → 0.3.23-dev.fe71a0c
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/cache/DbQueryResultCache.js +1 -1
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/cache/RedisQueryResultCache.js +1 -1
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/decorator/ForeignKey.d.ts +22 -0
- package/browser/decorator/ForeignKey.js +41 -0
- package/browser/decorator/ForeignKey.js.map +1 -0
- package/browser/decorator/options/ForeignKeyOptions.d.ts +24 -0
- package/browser/decorator/options/ForeignKeyOptions.js +3 -0
- package/browser/decorator/options/ForeignKeyOptions.js.map +1 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +2 -2
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +2 -2
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.js +2 -2
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoQueryRunner.js +2 -2
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js +2 -2
- package/browser/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
- package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +8 -3
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js +2 -2
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +2 -2
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +2 -2
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js +2 -2
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.js +2 -2
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerQueryRunner.js +4 -4
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/browser/driver/sqlite/SqliteQueryRunner.js +2 -2
- package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsQueryRunner.js +2 -2
- package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +2 -2
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/types/GeoJsonTypes.d.ts +20 -15
- package/browser/driver/types/GeoJsonTypes.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnForeignKeyOptions.d.ts +12 -0
- package/browser/entity-schema/EntitySchemaColumnForeignKeyOptions.js +3 -0
- package/browser/entity-schema/EntitySchemaColumnForeignKeyOptions.js.map +1 -0
- package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +5 -0
- package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaForeignKeyOptions.d.ts +16 -0
- package/browser/entity-schema/EntitySchemaForeignKeyOptions.js +3 -0
- package/browser/entity-schema/EntitySchemaForeignKeyOptions.js.map +1 -0
- package/browser/entity-schema/EntitySchemaOptions.d.ts +5 -0
- package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +29 -0
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/index.d.ts +1 -0
- package/browser/index.js +1 -0
- package/browser/index.js.map +1 -1
- package/browser/metadata/EntityListenerMetadata.js +14 -2
- package/browser/metadata/EntityListenerMetadata.js.map +1 -1
- package/browser/metadata-args/ForeignKeyMetadataArgs.d.ts +54 -0
- package/browser/metadata-args/ForeignKeyMetadataArgs.js +3 -0
- package/browser/metadata-args/ForeignKeyMetadataArgs.js.map +1 -0
- package/browser/metadata-args/MetadataArgsStorage.d.ts +4 -0
- package/browser/metadata-args/MetadataArgsStorage.js +8 -0
- package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.d.ts +4 -0
- package/browser/metadata-builder/EntityMetadataBuilder.js +70 -0
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.js +1 -1
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/repository/MongoRepository.d.ts +1 -1
- package/browser/repository/MongoRepository.js.map +1 -1
- package/browser/subscriber/event/UpdateEvent.d.ts +4 -0
- package/browser/subscriber/event/UpdateEvent.js.map +1 -1
- package/cache/DbQueryResultCache.js +1 -1
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cache/RedisQueryResultCache.js +1 -1
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/commands/MigrationCreateCommand.d.ts +3 -1
- package/commands/MigrationCreateCommand.js +17 -3
- package/commands/MigrationCreateCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.d.ts +3 -1
- package/commands/MigrationGenerateCommand.js +17 -3
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/decorator/ForeignKey.d.ts +22 -0
- package/decorator/ForeignKey.js +44 -0
- package/decorator/ForeignKey.js.map +1 -0
- package/decorator/options/ForeignKeyOptions.d.ts +24 -0
- package/decorator/options/ForeignKeyOptions.js +4 -0
- package/decorator/options/ForeignKeyOptions.js.map +1 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +2 -2
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +2 -2
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.js +2 -2
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoQueryRunner.js +2 -2
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/expo/legacy/ExpoLegacyQueryRunner.js +2 -2
- package/driver/expo/legacy/ExpoLegacyQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlConnectionOptions.d.ts +6 -0
- package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +8 -3
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptQueryRunner.js +2 -2
- package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +2 -2
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +2 -2
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js +2 -2
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapQueryRunner.js +2 -2
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerQueryRunner.js +4 -4
- package/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/driver/sqlite/SqliteQueryRunner.js +2 -2
- package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsQueryRunner.js +2 -2
- package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +2 -2
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/types/GeoJsonTypes.d.ts +20 -15
- package/driver/types/GeoJsonTypes.js.map +1 -1
- package/entity-schema/EntitySchemaColumnForeignKeyOptions.d.ts +12 -0
- package/entity-schema/EntitySchemaColumnForeignKeyOptions.js +4 -0
- package/entity-schema/EntitySchemaColumnForeignKeyOptions.js.map +1 -0
- package/entity-schema/EntitySchemaColumnOptions.d.ts +5 -0
- package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaForeignKeyOptions.d.ts +16 -0
- package/entity-schema/EntitySchemaForeignKeyOptions.js +4 -0
- package/entity-schema/EntitySchemaForeignKeyOptions.js.map +1 -0
- package/entity-schema/EntitySchemaOptions.d.ts +5 -0
- package/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +29 -0
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/index.mjs +2 -0
- package/metadata/EntityListenerMetadata.js +14 -2
- package/metadata/EntityListenerMetadata.js.map +1 -1
- package/metadata-args/ForeignKeyMetadataArgs.d.ts +54 -0
- package/metadata-args/ForeignKeyMetadataArgs.js +4 -0
- package/metadata-args/ForeignKeyMetadataArgs.js.map +1 -0
- package/metadata-args/MetadataArgsStorage.d.ts +4 -0
- package/metadata-args/MetadataArgsStorage.js +8 -0
- package/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.d.ts +4 -0
- package/metadata-builder/EntityMetadataBuilder.js +70 -0
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/package.json +1 -1
- package/query-builder/SelectQueryBuilder.js +1 -1
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/repository/MongoRepository.d.ts +1 -1
- package/repository/MongoRepository.js.map +1 -1
- package/subscriber/event/UpdateEvent.d.ts +4 -0
- package/subscriber/event/UpdateEvent.js.map +1 -1
- package/typeorm-model-shim.js +6 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ForeignKey = ForeignKey;
|
|
4
|
+
const globals_1 = require("../globals");
|
|
5
|
+
const ObjectUtils_1 = require("../util/ObjectUtils");
|
|
6
|
+
/**
|
|
7
|
+
* Creates a database foreign key. Can be used on entity property or on entity.
|
|
8
|
+
* Can create foreign key with composite columns when used on entity.
|
|
9
|
+
* Warning! Don't use this with relations; relation decorators create foreign keys automatically.
|
|
10
|
+
*/
|
|
11
|
+
function ForeignKey(typeFunctionOrTarget, inverseSideOrColumnNamesOrOptions, referencedColumnNamesOrOptions, maybeOptions) {
|
|
12
|
+
const inverseSide = typeof inverseSideOrColumnNamesOrOptions === "string" ||
|
|
13
|
+
typeof inverseSideOrColumnNamesOrOptions === "function"
|
|
14
|
+
? inverseSideOrColumnNamesOrOptions
|
|
15
|
+
: undefined;
|
|
16
|
+
const columnNames = Array.isArray(inverseSideOrColumnNamesOrOptions)
|
|
17
|
+
? inverseSideOrColumnNamesOrOptions
|
|
18
|
+
: undefined;
|
|
19
|
+
const referencedColumnNames = Array.isArray(referencedColumnNamesOrOptions)
|
|
20
|
+
? referencedColumnNamesOrOptions
|
|
21
|
+
: undefined;
|
|
22
|
+
const options = ObjectUtils_1.ObjectUtils.isObject(inverseSideOrColumnNamesOrOptions) &&
|
|
23
|
+
!Array.isArray(inverseSideOrColumnNamesOrOptions)
|
|
24
|
+
? inverseSideOrColumnNamesOrOptions
|
|
25
|
+
: ObjectUtils_1.ObjectUtils.isObject(referencedColumnNamesOrOptions) &&
|
|
26
|
+
!Array.isArray(referencedColumnNamesOrOptions)
|
|
27
|
+
? referencedColumnNamesOrOptions
|
|
28
|
+
: maybeOptions;
|
|
29
|
+
return function (clsOrObject, propertyName) {
|
|
30
|
+
(0, globals_1.getMetadataArgsStorage)().foreignKeys.push({
|
|
31
|
+
target: propertyName
|
|
32
|
+
? clsOrObject.constructor
|
|
33
|
+
: clsOrObject,
|
|
34
|
+
propertyName: propertyName,
|
|
35
|
+
type: typeFunctionOrTarget,
|
|
36
|
+
inverseSide,
|
|
37
|
+
columnNames,
|
|
38
|
+
referencedColumnNames,
|
|
39
|
+
...options,
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=ForeignKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/decorator/ForeignKey.ts"],"names":[],"mappings":";;AAgDA,gCAuDC;AAtGD,wCAAmD;AAEnD,qDAAiD;AAwCjD;;;;GAIG;AACH,SAAgB,UAAU,CAKtB,oBAA8D,EAC9D,iCAIuB,EACvB,8BAEuB,EACvB,YAAgC;IAEhC,MAAM,WAAW,GACb,OAAO,iCAAiC,KAAK,QAAQ;QACrD,OAAO,iCAAiC,KAAK,UAAU;QACnD,CAAC,CAAC,iCAAiC;QACnC,CAAC,CAAC,SAAS,CAAA;IAEnB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,iCAAiC,CAAC;QAChE,CAAC,CAAC,iCAAiC;QACnC,CAAC,CAAC,SAAS,CAAA;IAEf,MAAM,qBAAqB,GAAG,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC;QACvE,CAAC,CAAC,8BAA8B;QAChC,CAAC,CAAC,SAAS,CAAA;IAEf,MAAM,OAAO,GACT,yBAAW,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACvD,CAAC,KAAK,CAAC,OAAO,CAAC,iCAAiC,CAAC;QAC7C,CAAC,CAAC,iCAAiC;QACnC,CAAC,CAAC,yBAAW,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YACpD,CAAC,KAAK,CAAC,OAAO,CAAC,8BAA8B,CAAC;YAChD,CAAC,CAAC,8BAA8B;YAChC,CAAC,CAAC,YAAY,CAAA;IAEtB,OAAO,UACH,WAA8B,EAC9B,YAA8B;QAE9B,IAAA,gCAAsB,GAAE,CAAC,WAAW,CAAC,IAAI,CAAC;YACtC,MAAM,EAAE,YAAY;gBAChB,CAAC,CAAC,WAAW,CAAC,WAAW;gBACzB,CAAC,CAAE,WAAwB;YAC/B,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,oBAAoB;YAC1B,WAAW;YACX,WAAW;YACX,qBAAqB;YACrB,GAAI,OAA6B;SACV,CAAC,CAAA;IAChC,CAAC,CAAA;AACL,CAAC","file":"ForeignKey.js","sourcesContent":["import { ObjectType } from \"../common/ObjectType\"\nimport { getMetadataArgsStorage } from \"../globals\"\nimport { ForeignKeyMetadataArgs } from \"../metadata-args/ForeignKeyMetadataArgs\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\nimport { ForeignKeyOptions } from \"./options/ForeignKeyOptions\"\n\n/**\n * Creates a database foreign key. Can be used on entity property or on entity.\n * Can create foreign key with composite columns when used on entity.\n * Warning! Don't use this with relations; relation decorators create foreign keys automatically.\n */\nexport function ForeignKey<T>(\n typeFunctionOrTarget: string | ((type?: any) => ObjectType<T>),\n options?: ForeignKeyOptions,\n): PropertyDecorator\n\n/**\n * Creates a database foreign key. Can be used on entity property or on entity.\n * Can create foreign key with composite columns when used on entity.\n * Warning! Don't use this with relations; relation decorators create foreign keys automatically.\n */\nexport function ForeignKey<T>(\n typeFunctionOrTarget: string | ((type?: any) => ObjectType<T>),\n inverseSide: string | ((object: T) => any),\n options?: ForeignKeyOptions,\n): PropertyDecorator\n\n/**\n * Creates a database foreign key. Can be used on entity property or on entity.\n * Can create foreign key with composite columns when used on entity.\n * Warning! Don't use this with relations; relation decorators create foreign keys automatically.\n */\nexport function ForeignKey<\n T,\n C extends (readonly [] | readonly string[]) &\n (number extends C[\"length\"] ? readonly [] : unknown),\n>(\n typeFunctionOrTarget: string | ((type?: any) => ObjectType<T>),\n columnNames: C,\n referencedColumnNames: { [K in keyof C]: string },\n options?: ForeignKeyOptions,\n): ClassDecorator\n\n/**\n * Creates a database foreign key. Can be used on entity property or on entity.\n * Can create foreign key with composite columns when used on entity.\n * Warning! Don't use this with relations; relation decorators create foreign keys automatically.\n */\nexport function ForeignKey<\n T,\n C extends (readonly [] | readonly string[]) &\n (number extends C[\"length\"] ? readonly [] : unknown),\n>(\n typeFunctionOrTarget: string | ((type?: any) => ObjectType<T>),\n inverseSideOrColumnNamesOrOptions?:\n | string\n | ((object: T) => any)\n | C\n | ForeignKeyOptions,\n referencedColumnNamesOrOptions?:\n | { [K in keyof C]: string }\n | ForeignKeyOptions,\n maybeOptions?: ForeignKeyOptions,\n): ClassDecorator & PropertyDecorator {\n const inverseSide =\n typeof inverseSideOrColumnNamesOrOptions === \"string\" ||\n typeof inverseSideOrColumnNamesOrOptions === \"function\"\n ? inverseSideOrColumnNamesOrOptions\n : undefined\n\n const columnNames = Array.isArray(inverseSideOrColumnNamesOrOptions)\n ? inverseSideOrColumnNamesOrOptions\n : undefined\n\n const referencedColumnNames = Array.isArray(referencedColumnNamesOrOptions)\n ? referencedColumnNamesOrOptions\n : undefined\n\n const options =\n ObjectUtils.isObject(inverseSideOrColumnNamesOrOptions) &&\n !Array.isArray(inverseSideOrColumnNamesOrOptions)\n ? inverseSideOrColumnNamesOrOptions\n : ObjectUtils.isObject(referencedColumnNamesOrOptions) &&\n !Array.isArray(referencedColumnNamesOrOptions)\n ? referencedColumnNamesOrOptions\n : maybeOptions\n\n return function (\n clsOrObject: Function | Object,\n propertyName?: string | symbol,\n ) {\n getMetadataArgsStorage().foreignKeys.push({\n target: propertyName\n ? clsOrObject.constructor\n : (clsOrObject as Function),\n propertyName: propertyName,\n type: typeFunctionOrTarget,\n inverseSide,\n columnNames,\n referencedColumnNames,\n ...(options as ForeignKeyOptions),\n } as ForeignKeyMetadataArgs)\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DeferrableType } from "../../metadata/types/DeferrableType";
|
|
2
|
+
import { OnDeleteType } from "../../metadata/types/OnDeleteType";
|
|
3
|
+
import { OnUpdateType } from "../../metadata/types/OnUpdateType";
|
|
4
|
+
/**
|
|
5
|
+
* Describes all foreign key options.
|
|
6
|
+
*/
|
|
7
|
+
export interface ForeignKeyOptions {
|
|
8
|
+
/**
|
|
9
|
+
* Name of the foreign key constraint.
|
|
10
|
+
*/
|
|
11
|
+
name?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Database cascade action on delete.
|
|
14
|
+
*/
|
|
15
|
+
onDelete?: OnDeleteType;
|
|
16
|
+
/**
|
|
17
|
+
* Database cascade action on update.
|
|
18
|
+
*/
|
|
19
|
+
onUpdate?: OnUpdateType;
|
|
20
|
+
/**
|
|
21
|
+
* Indicate if foreign key constraints can be deferred.
|
|
22
|
+
*/
|
|
23
|
+
deferrable?: DeferrableType;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/decorator/options/ForeignKeyOptions.ts"],"names":[],"mappings":"","file":"ForeignKeyOptions.js","sourcesContent":["import { DeferrableType } from \"../../metadata/types/DeferrableType\"\nimport { OnDeleteType } from \"../../metadata/types/OnDeleteType\"\nimport { OnUpdateType } from \"../../metadata/types/OnUpdateType\"\n\n/**\n * Describes all foreign key options.\n */\nexport interface ForeignKeyOptions {\n /**\n * Name of the foreign key constraint.\n */\n name?: string\n\n /**\n * Database cascade action on delete.\n */\n onDelete?: OnDeleteType\n\n /**\n * Database cascade action on update.\n */\n onUpdate?: OnUpdateType\n\n /**\n * Indicate if foreign key constraints can be deferred.\n */\n deferrable?: DeferrableType\n}\n"],"sourceRoot":"../.."}
|
|
@@ -73,7 +73,7 @@ class BetterSqlite3QueryRunner extends AbstractSqliteQueryRunner_1.AbstractSqlit
|
|
|
73
73
|
const broadcasterResult = new BroadcasterResult_1.BroadcasterResult();
|
|
74
74
|
this.driver.connection.logger.logQuery(query, parameters, this);
|
|
75
75
|
this.broadcaster.broadcastBeforeQueryEvent(broadcasterResult, query, parameters);
|
|
76
|
-
const queryStartTime =
|
|
76
|
+
const queryStartTime = Date.now();
|
|
77
77
|
const stmt = await this.getStmt(query);
|
|
78
78
|
try {
|
|
79
79
|
const result = new QueryResult_1.QueryResult();
|
|
@@ -91,7 +91,7 @@ class BetterSqlite3QueryRunner extends AbstractSqliteQueryRunner_1.AbstractSqlit
|
|
|
91
91
|
}
|
|
92
92
|
// log slow queries if maxQueryExecution time is set
|
|
93
93
|
const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
|
|
94
|
-
const queryEndTime =
|
|
94
|
+
const queryEndTime = Date.now();
|
|
95
95
|
const queryExecutionTime = queryEndTime - queryStartTime;
|
|
96
96
|
if (maxQueryExecutionTime &&
|
|
97
97
|
queryExecutionTime > maxQueryExecutionTime)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/driver/better-sqlite3/BetterSqlite3QueryRunner.ts"],"names":[],"mappings":"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","file":"BetterSqlite3QueryRunner.js","sourcesContent":["import { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BetterSqlite3Driver } from \"./BetterSqlite3Driver\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\n\n/**\n * Runs queries on a single sqlite database connection.\n *\n * Does not support compose primary keys with autoincrement field.\n * todo: need to throw exception for this case.\n */\nexport class BetterSqlite3QueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n driver: BetterSqlite3Driver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: BetterSqlite3Driver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n if (typeof this.driver.options.statementCacheSize === \"number\") {\n this.cacheSize = this.driver.options.statementCacheSize\n } else {\n this.cacheSize = 100\n }\n }\n\n private cacheSize: number\n private stmtCache = new Map<string, any>()\n\n private async getStmt(query: string) {\n if (this.cacheSize > 0) {\n let stmt = this.stmtCache.get(query)\n if (!stmt) {\n const databaseConnection = await this.connect()\n stmt = databaseConnection.prepare(query)\n this.stmtCache.set(query, stmt)\n while (this.stmtCache.size > this.cacheSize) {\n // since es6 map keeps the insertion order,\n // it comes to be FIFO cache\n const key = this.stmtCache.keys().next().value!\n this.stmtCache.delete(key)\n }\n }\n return stmt\n } else {\n const databaseConnection = await this.connect()\n return databaseConnection.prepare(query)\n }\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const connection = this.driver.connection\n\n const broadcasterResult = new BroadcasterResult()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n this.broadcaster.broadcastBeforeQueryEvent(\n broadcasterResult,\n query,\n parameters,\n )\n const queryStartTime = +new Date()\n\n const stmt = await this.getStmt(query)\n\n try {\n const result = new QueryResult()\n\n if (stmt.reader) {\n const raw = stmt.all.apply(stmt, parameters)\n\n result.raw = raw\n\n if (Array.isArray(raw)) {\n result.records = raw\n }\n } else {\n const raw = stmt.run.apply(stmt, parameters)\n result.affected = raw.changes\n result.raw = raw.lastInsertRowid\n }\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n result.raw,\n undefined,\n )\n\n if (!useStructuredResult) {\n return result.raw\n }\n\n return result\n } catch (err) {\n connection.logger.logQueryError(err, query, parameters, this)\n throw new QueryFailedError(query, parameters, err)\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n protected async loadTableRecords(\n tablePath: string,\n tableOrIndex: \"table\" | \"index\",\n ) {\n const [database, tableName] = this.splitTablePath(tablePath)\n const res = await this.query(\n `SELECT ${\n database ? `'${database}'` : null\n } as database, * FROM ${this.escapePath(\n `${database ? `${database}.` : \"\"}sqlite_master`,\n )} WHERE \"type\" = '${tableOrIndex}' AND \"${\n tableOrIndex === \"table\" ? \"name\" : \"tbl_name\"\n }\" IN ('${tableName}')`,\n )\n return res\n }\n protected async loadPragmaRecords(tablePath: string, pragma: string) {\n const [database, tableName] = this.splitTablePath(tablePath)\n const res = await this.query(\n `PRAGMA ${\n database ? `\"${database}\".` : \"\"\n }${pragma}(\"${tableName}\")`,\n )\n return res\n }\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../src/driver/better-sqlite3/BetterSqlite3QueryRunner.ts"],"names":[],"mappings":"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","file":"BetterSqlite3QueryRunner.js","sourcesContent":["import { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { AbstractSqliteQueryRunner } from \"../sqlite-abstract/AbstractSqliteQueryRunner\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BetterSqlite3Driver } from \"./BetterSqlite3Driver\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\n\n/**\n * Runs queries on a single sqlite database connection.\n *\n * Does not support compose primary keys with autoincrement field.\n * todo: need to throw exception for this case.\n */\nexport class BetterSqlite3QueryRunner extends AbstractSqliteQueryRunner {\n /**\n * Database driver used by connection.\n */\n driver: BetterSqlite3Driver\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: BetterSqlite3Driver) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n if (typeof this.driver.options.statementCacheSize === \"number\") {\n this.cacheSize = this.driver.options.statementCacheSize\n } else {\n this.cacheSize = 100\n }\n }\n\n private cacheSize: number\n private stmtCache = new Map<string, any>()\n\n private async getStmt(query: string) {\n if (this.cacheSize > 0) {\n let stmt = this.stmtCache.get(query)\n if (!stmt) {\n const databaseConnection = await this.connect()\n stmt = databaseConnection.prepare(query)\n this.stmtCache.set(query, stmt)\n while (this.stmtCache.size > this.cacheSize) {\n // since es6 map keeps the insertion order,\n // it comes to be FIFO cache\n const key = this.stmtCache.keys().next().value!\n this.stmtCache.delete(key)\n }\n }\n return stmt\n } else {\n const databaseConnection = await this.connect()\n return databaseConnection.prepare(query)\n }\n }\n\n /**\n * Called before migrations are run.\n */\n async beforeMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = OFF`)\n }\n\n /**\n * Called after migrations are run.\n */\n async afterMigration(): Promise<void> {\n await this.query(`PRAGMA foreign_keys = ON`)\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const connection = this.driver.connection\n\n const broadcasterResult = new BroadcasterResult()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n this.broadcaster.broadcastBeforeQueryEvent(\n broadcasterResult,\n query,\n parameters,\n )\n const queryStartTime = Date.now()\n\n const stmt = await this.getStmt(query)\n\n try {\n const result = new QueryResult()\n\n if (stmt.reader) {\n const raw = stmt.all.apply(stmt, parameters)\n\n result.raw = raw\n\n if (Array.isArray(raw)) {\n result.records = raw\n }\n } else {\n const raw = stmt.run.apply(stmt, parameters)\n result.affected = raw.changes\n result.raw = raw.lastInsertRowid\n }\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = Date.now()\n const queryExecutionTime = queryEndTime - queryStartTime\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n result.raw,\n undefined,\n )\n\n if (!useStructuredResult) {\n return result.raw\n }\n\n return result\n } catch (err) {\n connection.logger.logQueryError(err, query, parameters, this)\n throw new QueryFailedError(query, parameters, err)\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n protected async loadTableRecords(\n tablePath: string,\n tableOrIndex: \"table\" | \"index\",\n ) {\n const [database, tableName] = this.splitTablePath(tablePath)\n const res = await this.query(\n `SELECT ${\n database ? `'${database}'` : null\n } as database, * FROM ${this.escapePath(\n `${database ? `${database}.` : \"\"}sqlite_master`,\n )} WHERE \"type\" = '${tableOrIndex}' AND \"${\n tableOrIndex === \"table\" ? \"name\" : \"tbl_name\"\n }\" IN ('${tableName}')`,\n )\n return res\n }\n protected async loadPragmaRecords(tablePath: string, pragma: string) {\n const [database, tableName] = this.splitTablePath(tablePath)\n const res = await this.query(\n `PRAGMA ${\n database ? `\"${database}\".` : \"\"\n }${pragma}(\"${tableName}\")`,\n )\n return res\n }\n}\n"],"sourceRoot":"../.."}
|
|
@@ -199,7 +199,7 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
199
199
|
const broadcasterResult = new BroadcasterResult_1.BroadcasterResult();
|
|
200
200
|
this.driver.connection.logger.logQuery(query, parameters, this);
|
|
201
201
|
this.broadcaster.broadcastBeforeQueryEvent(broadcasterResult, query, parameters);
|
|
202
|
-
const queryStartTime =
|
|
202
|
+
const queryStartTime = Date.now();
|
|
203
203
|
if (this.isTransactionActive && this.storeQueries) {
|
|
204
204
|
this.queries.push({ query, parameters });
|
|
205
205
|
}
|
|
@@ -209,7 +209,7 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
209
209
|
});
|
|
210
210
|
// log slow queries if maxQueryExecution time is set
|
|
211
211
|
const maxQueryExecutionTime = this.driver.options.maxQueryExecutionTime;
|
|
212
|
-
const queryEndTime =
|
|
212
|
+
const queryEndTime = Date.now();
|
|
213
213
|
const queryExecutionTime = queryEndTime - queryStartTime;
|
|
214
214
|
if (maxQueryExecutionTime &&
|
|
215
215
|
queryExecutionTime > maxQueryExecutionTime) {
|