typeorm 0.3.12-dev.ae91c05 → 0.3.12-dev.defb409
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/decorator/options/SpatialColumnOptions.d.ts +2 -1
- package/browser/decorator/options/SpatialColumnOptions.js.map +1 -1
- package/browser/driver/Driver.d.ts +1 -1
- package/browser/driver/Driver.js.map +1 -1
- package/browser/driver/DriverUtils.js +1 -1
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +2 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachConnectionOptions.d.ts +5 -0
- package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.d.ts +19 -14
- package/browser/driver/cockroachdb/CockroachDriver.js +128 -13
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +28 -0
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +283 -11
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.d.ts +5 -0
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +2 -1
- package/browser/driver/mysql/MysqlDriver.js +1 -1
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.d.ts +5 -0
- package/browser/driver/oracle/OracleDriver.js +4 -0
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +15 -7
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +2 -1
- package/browser/driver/postgres/PostgresDriver.js +1 -1
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +11 -36
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapDriver.d.ts +5 -0
- package/browser/driver/sap/SapDriver.js +4 -0
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.d.ts +2 -1
- package/browser/driver/spanner/SpannerDriver.js +1 -1
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +7 -0
- package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
- package/browser/driver/sqlite/SqliteDriver.js +5 -0
- package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +2 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +5 -0
- package/browser/driver/sqlserver/SqlServerDriver.js +4 -0
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/types/GeoJsonTypes.d.ts +87 -0
- package/browser/driver/types/GeoJsonTypes.js +3 -0
- package/browser/driver/types/GeoJsonTypes.js.map +1 -0
- package/browser/driver/types/UpsertType.d.ts +1 -1
- package/browser/driver/types/UpsertType.js.map +1 -1
- package/browser/entity-manager/EntityManager.js +2 -0
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/find-options/mongodb/MongoFindOneOptions.d.ts +2 -2
- package/browser/find-options/mongodb/MongoFindOneOptions.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/query-builder/InsertOrUpdateOptions.d.ts +2 -0
- package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.d.ts +4 -4
- package/browser/query-builder/InsertQueryBuilder.js +80 -74
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +4 -0
- package/browser/query-builder/QueryBuilder.js +28 -8
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +7 -0
- package/browser/query-builder/QueryExpressionMap.js +4 -0
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +4 -0
- package/browser/query-builder/SelectQueryBuilder.js +22 -1
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +1 -2
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/repository/UpsertOptions.d.ts +7 -0
- package/browser/repository/UpsertOptions.js.map +1 -1
- package/decorator/options/SpatialColumnOptions.d.ts +2 -1
- package/decorator/options/SpatialColumnOptions.js.map +1 -1
- package/driver/Driver.d.ts +1 -1
- package/driver/Driver.js.map +1 -1
- package/driver/DriverUtils.js +1 -1
- package/driver/DriverUtils.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +2 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachConnectionOptions.d.ts +5 -0
- package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.d.ts +19 -14
- package/driver/cockroachdb/CockroachDriver.js +128 -13
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +28 -0
- package/driver/cockroachdb/CockroachQueryRunner.js +283 -11
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoDriver.d.ts +5 -0
- package/driver/mongodb/MongoDriver.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +2 -1
- package/driver/mysql/MysqlDriver.js +1 -1
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/oracle/OracleDriver.d.ts +5 -0
- package/driver/oracle/OracleDriver.js +4 -0
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +15 -7
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +2 -1
- package/driver/postgres/PostgresDriver.js +1 -1
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +11 -36
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sap/SapDriver.d.ts +5 -0
- package/driver/sap/SapDriver.js +4 -0
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/spanner/SpannerDriver.d.ts +2 -1
- package/driver/spanner/SpannerDriver.js +1 -1
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/sqlite/SqliteConnectionOptions.d.ts +7 -0
- package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
- package/driver/sqlite/SqliteDriver.js +5 -0
- package/driver/sqlite/SqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +2 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +5 -0
- package/driver/sqlserver/SqlServerDriver.js +4 -0
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/types/GeoJsonTypes.d.ts +87 -0
- package/driver/types/GeoJsonTypes.js +4 -0
- package/driver/types/GeoJsonTypes.js.map +1 -0
- package/driver/types/UpsertType.d.ts +1 -1
- package/driver/types/UpsertType.js.map +1 -1
- package/entity-manager/EntityManager.js +2 -0
- package/entity-manager/EntityManager.js.map +1 -1
- package/find-options/mongodb/MongoFindOneOptions.d.ts +2 -2
- package/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/query-builder/InsertOrUpdateOptions.d.ts +2 -0
- package/query-builder/InsertOrUpdateOptions.js.map +1 -1
- package/query-builder/InsertQueryBuilder.d.ts +4 -4
- package/query-builder/InsertQueryBuilder.js +80 -74
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +4 -0
- package/query-builder/QueryBuilder.js +28 -8
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +7 -0
- package/query-builder/QueryExpressionMap.js +4 -0
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +4 -0
- package/query-builder/SelectQueryBuilder.js +22 -1
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +1 -2
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/repository/UpsertOptions.d.ts +7 -0
- package/repository/UpsertOptions.js.map +1 -1
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "name": "typeorm", "private": false, "version": "0.3.12-dev.
|
|
1
|
+
{ "name": "typeorm", "private": false, "version": "0.3.12-dev.defb409", "description": "Data-Mapper ORM for TypeScript, ES7, ES6, ES5. Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, MongoDB databases.", "license": "MIT", "readmeFilename": "README.md", "author": { "name": "Umed Khudoiberdiev", "email": "pleerock.me@gmail.com" }, "engines": { "node": ">= 12.9.0" }, "exports": { ".": { "types": "./index.d.ts", "node": { "import": "./index.mjs", "require": "./index.js", "types": "./index.d.ts" }, "browser": { "require": "./index.js", "import": "./browser/index.js", "default": "./index.js" } }, "./browser": { "types": "./index.d.ts", "default": "./browser/index.js" }, "./*.js": "./*.js", "./*": { "require": "./*.js", "import": "./*" } }, "main": "./index.js", "module": "./index.mjs", "types": "./index.d.ts", "browser": { "./browser/connection/ConnectionOptionsReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsXmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/connection/options-reader/ConnectionOptionsYmlReader.js": "./browser/platform/BrowserConnectionOptionsReaderDummy.js", "./browser/driver/aurora-data-api/AuroraDataApiDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/better-sqlite3/BetterSqlite3Driver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/cockroachdb/CockroachDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mongodb/MongoQueryRunner.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/mysql/MysqlDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/oracle/OracleDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/postgres/PostgresDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sap/SapDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlite/SqliteDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/driver/sqlserver/SqlServerDriver.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/entity-manager/MongoEntityManager.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/logger/FileLogger.js": "./browser/platform/BrowserFileLoggerDummy.js", "./browser/platform/PlatformTools.js": "./browser/platform/BrowserPlatformTools.js", "./browser/repository/MongoRepository.js": "./browser/platform/BrowserDisabledDriversDummy.js", "./browser/util/DirectoryExportedClassesLoader.js": "./browser/platform/BrowserDirectoryExportedClassesLoader.js", "./index.js": "./browser/index.js", "./index.mjs": "./browser/index.js" }, "repository": { "type": "git", "url": "https://github.com/typeorm/typeorm.git" }, "bugs": { "url": "https://github.com/typeorm/typeorm/issues" }, "homepage": "https://typeorm.io", "tags": [ "orm", "typescript", "typescript-orm", "mysql", "mysql-orm", "postgresql", "postgresql-orm", "mariadb", "mariadb-orm", "spanner", "sqlite", "sqlite-orm", "sql-server", "sql-server-orm", "oracle", "oracle-orm", "cloud-spanner", "cloud-spanner-orm" ], "devDependencies": { "@types/app-root-path": "^1.2.4", "@types/chai": "^4.2.15", "@types/chai-as-promised": "^7.1.3", "@types/debug": "^4.1.5", "@types/js-yaml": "^4.0.0", "@types/mkdirp": "^1.0.1", "@types/mocha": "^8.2.1", "@types/node": "^14.14.31", "@types/rimraf": "^3.0.0", "@types/sha.js": "^2.4.0", "@types/sinon": "^9.0.10", "@types/source-map-support": "^0.5.3", "@types/uuid": "^8.3.4", "@types/xml2js": "^0.4.8", "@types/yargs": "^17.0.2", "better-sqlite3": "^8.0.0", "chai": "^4.3.0", "chai-as-promised": "^7.1.1", "class-transformer": "^0.4.0", "conventional-changelog-angular": "^5.0.12", "conventional-changelog-cli": "^2.1.1", "del": "^6.0.0", "gulp": "^4.0.2", "gulp-istanbul": "^1.1.3", "gulp-mocha": "^8.0.0", "gulp-rename": "^2.0.0", "gulp-replace": "^1.0.0", "gulp-shell": "^0.8.0", "gulp-sourcemaps": "^3.0.0", "gulp-typescript": "^6.0.0-alpha.1", "gulpclass": "^0.2.0", "husky": "^5.1.1", "mocha": "^8.3.0", "mongodb": "^3.6.4", "mssql": "^7.3.0", "mysql": "^2.18.1", "mysql2": "^2.2.5", "pg": "^8.5.1", "pg-query-stream": "^4.0.0", "prettier": "^2.5.1", "redis": "^3.1.1", "remap-istanbul": "^0.13.0", "rimraf": "^3.0.2", "sinon": "^9.2.4", "sinon-chai": "^3.5.0", "source-map-support": "^0.5.19", "sql.js": "^1.4.0", "sqlite3": "^5.0.11", "ts-node": "^10.7.0", "typeorm-aurora-data-api-driver": "^2.0.0", "typescript": "^4.8.2" }, "peerDependencies": { "@google-cloud/spanner": "^5.18.0", "@sap/hana-client": "^2.12.25", "better-sqlite3": "^7.1.2 || ^8.0.0", "hdb-pool": "^0.1.6", "ioredis": "^5.0.4", "mongodb": "^3.6.0", "mssql": "^7.3.0", "mysql2": "^2.2.5", "oracledb": "^5.1.0", "pg": "^8.5.1", "pg-native": "^3.0.0", "pg-query-stream": "^4.0.0", "redis": "^3.1.1 || ^4.0.0", "sql.js": "^1.4.0", "sqlite3": "^5.0.3", "ts-node": "^10.7.0", "typeorm-aurora-data-api-driver": "^2.0.0" }, "peerDependenciesMeta": { "@google-cloud/spanner": { "optional": true }, "@sap/hana-client": { "optional": true }, "better-sqlite3": { "optional": true }, "hdb-pool": { "optional": true }, "ioredis": { "optional": true }, "mongodb": { "optional": true }, "mssql": { "optional": true }, "mysql2": { "optional": true }, "oracledb": { "optional": true }, "pg": { "optional": true }, "pg-native": { "optional": true }, "pg-query-stream": { "optional": true }, "redis": { "optional": true }, "sql.js": { "optional": true }, "sqlite3": { "optional": true }, "ts-node": { "optional": true }, "typeorm-aurora-data-api-driver": { "optional": true } }, "dependencies": { "@sqltools/formatter": "^1.2.2", "app-root-path": "^3.0.0", "buffer": "^6.0.3", "chalk": "^4.1.0", "cli-highlight": "^2.1.11", "date-fns": "^2.28.0", "debug": "^4.3.3", "dotenv": "^16.0.0", "glob": "^7.2.0", "js-yaml": "^4.1.0", "mkdirp": "^1.0.4", "reflect-metadata": "^0.1.13", "sha.js": "^2.4.11", "tslib": "^2.3.1", "uuid": "^8.3.2", "xml2js": "^0.4.23", "yargs": "^17.3.1" }, "scripts": { "test": "rimraf ./build && tsc && mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test", "test-fast": "mocha --file ./build/compiled/test/utils/test-setup.js --bail --recursive --timeout 60000 ./build/compiled/test", "compile": "rimraf ./build && tsc", "watch": "./node_modules/.bin/tsc -w", "package": "gulp package", "pack": "gulp pack", "lint": "prettier --check \"./src/**/*.ts\" \"./test/**/*.ts\" \"./sample/**/*.ts\"", "format": "prettier --write \"./src/**/*.ts\" \"./test/**/*.ts\" \"./sample/**/*.ts\"", "changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 2" }, "bin": { "typeorm": "./cli.js", "typeorm-ts-node-commonjs": "./cli-ts-node-commonjs.js", "typeorm-ts-node-esm": "./cli-ts-node-esm.js" }, "funding": "https://opencollective.com/typeorm", "collective": { "type": "opencollective", "url": "https://opencollective.com/typeorm", "logo": "https://opencollective.com/opencollective/logo.txt" }, "nyc": { "all": true, "cache": false, "exclude": [ "**/*.d.ts" ], "extension": [ ".ts" ], "include": [ "build/compiled/src/**", "src/**" ], "reporter": "json" } }
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UpsertType } from "../driver/types/UpsertType";
|
|
1
2
|
export declare type InsertOrUpdateOptions = {
|
|
2
3
|
/**
|
|
3
4
|
* If true, postgres will skip the update if no values would be changed (reduces writes)
|
|
@@ -7,4 +8,5 @@ export declare type InsertOrUpdateOptions = {
|
|
|
7
8
|
* If included, postgres will apply the index predicate to a conflict target (partial index)
|
|
8
9
|
*/
|
|
9
10
|
indexPredicate?: string;
|
|
11
|
+
upsertType?: UpsertType;
|
|
10
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query-builder/InsertOrUpdateOptions.ts"],"names":[],"mappings":"","file":"InsertOrUpdateOptions.js","sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../../src/query-builder/InsertOrUpdateOptions.ts"],"names":[],"mappings":"","file":"InsertOrUpdateOptions.js","sourcesContent":["import { UpsertType } from \"../driver/types/UpsertType\"\n\nexport type InsertOrUpdateOptions = {\n /**\n * If true, postgres will skip the update if no values would be changed (reduces writes)\n */\n skipUpdateIfNoValuesChanged?: boolean\n /**\n * If included, postgres will apply the index predicate to a conflict target (partial index)\n */\n indexPredicate?: string\n upsertType?: UpsertType\n}\n"],"sourceRoot":".."}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { QueryBuilder } from "./QueryBuilder";
|
|
2
|
-
import { ObjectLiteral } from "../common/ObjectLiteral";
|
|
3
1
|
import { EntityTarget } from "../common/EntityTarget";
|
|
4
|
-
import {
|
|
5
|
-
import { InsertResult } from "./result/InsertResult";
|
|
2
|
+
import { ObjectLiteral } from "../common/ObjectLiteral";
|
|
6
3
|
import { ColumnMetadata } from "../metadata/ColumnMetadata";
|
|
7
4
|
import { InsertOrUpdateOptions } from "./InsertOrUpdateOptions";
|
|
5
|
+
import { QueryBuilder } from "./QueryBuilder";
|
|
6
|
+
import { QueryDeepPartialEntity } from "./QueryPartialEntity";
|
|
7
|
+
import { InsertResult } from "./result/InsertResult";
|
|
8
8
|
/**
|
|
9
9
|
* Allows to build complex sql queries in a fashion way and execute those queries.
|
|
10
10
|
*/
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InsertQueryBuilder = void 0;
|
|
4
|
-
const QueryBuilder_1 = require("./QueryBuilder");
|
|
5
|
-
const InsertResult_1 = require("./result/InsertResult");
|
|
6
|
-
const ReturningStatementNotSupportedError_1 = require("../error/ReturningStatementNotSupportedError");
|
|
7
|
-
const InsertValuesMissingError_1 = require("../error/InsertValuesMissingError");
|
|
8
|
-
const ReturningResultsEntityUpdator_1 = require("./ReturningResultsEntityUpdator");
|
|
9
|
-
const BroadcasterResult_1 = require("../subscriber/BroadcasterResult");
|
|
10
|
-
const error_1 = require("../error");
|
|
11
4
|
const uuid_1 = require("uuid");
|
|
12
5
|
const DriverUtils_1 = require("../driver/DriverUtils");
|
|
13
|
-
const
|
|
6
|
+
const error_1 = require("../error");
|
|
7
|
+
const InsertValuesMissingError_1 = require("../error/InsertValuesMissingError");
|
|
8
|
+
const ReturningStatementNotSupportedError_1 = require("../error/ReturningStatementNotSupportedError");
|
|
9
|
+
const BroadcasterResult_1 = require("../subscriber/BroadcasterResult");
|
|
14
10
|
const InstanceChecker_1 = require("../util/InstanceChecker");
|
|
11
|
+
const ObjectUtils_1 = require("../util/ObjectUtils");
|
|
12
|
+
const QueryBuilder_1 = require("./QueryBuilder");
|
|
13
|
+
const InsertResult_1 = require("./result/InsertResult");
|
|
14
|
+
const ReturningResultsEntityUpdator_1 = require("./ReturningResultsEntityUpdator");
|
|
15
15
|
/**
|
|
16
16
|
* Allows to build complex sql queries in a fashion way and execute those queries.
|
|
17
17
|
*/
|
|
@@ -224,6 +224,7 @@ class InsertQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
224
224
|
columns: statementOrOverwrite === null || statementOrOverwrite === void 0 ? void 0 : statementOrOverwrite.columns,
|
|
225
225
|
overwrite: statementOrOverwrite === null || statementOrOverwrite === void 0 ? void 0 : statementOrOverwrite.overwrite,
|
|
226
226
|
skipUpdateIfNoValuesChanged: orUpdateOptions === null || orUpdateOptions === void 0 ? void 0 : orUpdateOptions.skipUpdateIfNoValuesChanged,
|
|
227
|
+
upsertType: orUpdateOptions === null || orUpdateOptions === void 0 ? void 0 : orUpdateOptions.upsertType,
|
|
227
228
|
};
|
|
228
229
|
return this;
|
|
229
230
|
}
|
|
@@ -232,6 +233,7 @@ class InsertQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
232
233
|
conflict: conflictTarget,
|
|
233
234
|
skipUpdateIfNoValuesChanged: orUpdateOptions === null || orUpdateOptions === void 0 ? void 0 : orUpdateOptions.skipUpdateIfNoValuesChanged,
|
|
234
235
|
indexPredicate: orUpdateOptions === null || orUpdateOptions === void 0 ? void 0 : orUpdateOptions.indexPredicate,
|
|
236
|
+
upsertType: orUpdateOptions === null || orUpdateOptions === void 0 ? void 0 : orUpdateOptions.upsertType,
|
|
235
237
|
};
|
|
236
238
|
return this;
|
|
237
239
|
}
|
|
@@ -242,6 +244,7 @@ class InsertQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
242
244
|
* Creates INSERT express used to perform insert query.
|
|
243
245
|
*/
|
|
244
246
|
createInsertExpression() {
|
|
247
|
+
var _a, _b;
|
|
245
248
|
const tableName = this.getTableName(this.getMainTableName());
|
|
246
249
|
const valuesExpression = this.createValuesExpression(); // its important to get values before returning expression because oracle rely on native parameters and ordering of them is important
|
|
247
250
|
const returningExpression = this.connection.driver.options.type === "oracle" &&
|
|
@@ -250,6 +253,9 @@ class InsertQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
250
253
|
: this.createReturningExpression("insert"); // oracle doesnt support returning with multi-row insert
|
|
251
254
|
const columnsExpression = this.createColumnNamesExpression();
|
|
252
255
|
let query = "INSERT ";
|
|
256
|
+
if (((_a = this.expressionMap.onUpdate) === null || _a === void 0 ? void 0 : _a.upsertType) === "primary-key") {
|
|
257
|
+
query = "UPSERT ";
|
|
258
|
+
}
|
|
253
259
|
if (DriverUtils_1.DriverUtils.isMySQLFamily(this.connection.driver) ||
|
|
254
260
|
this.connection.driver.options.type === "aurora-mysql") {
|
|
255
261
|
query += `${this.expressionMap.onIgnore ? " IGNORE " : ""}`;
|
|
@@ -295,79 +301,79 @@ class InsertQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
295
301
|
query += ` DEFAULT VALUES`;
|
|
296
302
|
}
|
|
297
303
|
}
|
|
298
|
-
if (this.
|
|
299
|
-
"on-conflict-do-update") {
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
304
|
+
if (((_b = this.expressionMap.onUpdate) === null || _b === void 0 ? void 0 : _b.upsertType) !== "primary-key") {
|
|
305
|
+
if (this.connection.driver.supportedUpsertTypes.includes("on-conflict-do-update")) {
|
|
306
|
+
if (this.expressionMap.onIgnore) {
|
|
307
|
+
query += " ON CONFLICT DO NOTHING ";
|
|
308
|
+
}
|
|
309
|
+
else if (this.expressionMap.onConflict) {
|
|
310
|
+
query += ` ON CONFLICT ${this.expressionMap.onConflict} `;
|
|
311
|
+
}
|
|
312
|
+
else if (this.expressionMap.onUpdate) {
|
|
313
|
+
const { overwrite, columns, conflict, skipUpdateIfNoValuesChanged, indexPredicate, } = this.expressionMap.onUpdate;
|
|
314
|
+
let conflictTarget = "ON CONFLICT";
|
|
315
|
+
if (Array.isArray(conflict)) {
|
|
316
|
+
conflictTarget += ` ( ${conflict
|
|
317
|
+
.map((column) => this.escape(column))
|
|
318
|
+
.join(", ")} )`;
|
|
319
|
+
if (indexPredicate &&
|
|
320
|
+
!DriverUtils_1.DriverUtils.isPostgresFamily(this.connection.driver)) {
|
|
321
|
+
throw new error_1.TypeORMError(`indexPredicate option is not supported by the current database driver`);
|
|
322
|
+
}
|
|
323
|
+
if (indexPredicate &&
|
|
324
|
+
DriverUtils_1.DriverUtils.isPostgresFamily(this.connection.driver)) {
|
|
325
|
+
conflictTarget += ` WHERE ( ${this.escape(indexPredicate)} )`;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
else if (conflict) {
|
|
329
|
+
conflictTarget += ` ON CONSTRAINT ${this.escape(conflict)}`;
|
|
316
330
|
}
|
|
317
|
-
if (
|
|
331
|
+
if (Array.isArray(overwrite)) {
|
|
332
|
+
query += ` ${conflictTarget} DO UPDATE SET `;
|
|
333
|
+
query += overwrite === null || overwrite === void 0 ? void 0 : overwrite.map((column) => `${this.escape(column)} = EXCLUDED.${this.escape(column)}`).join(", ");
|
|
334
|
+
query += " ";
|
|
335
|
+
}
|
|
336
|
+
else if (columns) {
|
|
337
|
+
query += ` ${conflictTarget} DO UPDATE SET `;
|
|
338
|
+
query += columns
|
|
339
|
+
.map((column) => `${this.escape(column)} = :${column}`)
|
|
340
|
+
.join(", ");
|
|
341
|
+
query += " ";
|
|
342
|
+
}
|
|
343
|
+
if (Array.isArray(overwrite) &&
|
|
344
|
+
skipUpdateIfNoValuesChanged &&
|
|
318
345
|
DriverUtils_1.DriverUtils.isPostgresFamily(this.connection.driver)) {
|
|
319
|
-
|
|
346
|
+
query += ` WHERE (`;
|
|
347
|
+
query += overwrite
|
|
348
|
+
.map((column) => `${tableName}.${this.escape(column)} IS DISTINCT FROM EXCLUDED.${this.escape(column)}`)
|
|
349
|
+
.join(" OR ");
|
|
350
|
+
query += ") ";
|
|
320
351
|
}
|
|
321
352
|
}
|
|
322
|
-
else if (conflict) {
|
|
323
|
-
conflictTarget += ` ON CONSTRAINT ${this.escape(conflict)}`;
|
|
324
|
-
}
|
|
325
|
-
if (Array.isArray(overwrite)) {
|
|
326
|
-
query += ` ${conflictTarget} DO UPDATE SET `;
|
|
327
|
-
query += overwrite === null || overwrite === void 0 ? void 0 : overwrite.map((column) => `${this.escape(column)} = EXCLUDED.${this.escape(column)}`).join(", ");
|
|
328
|
-
query += " ";
|
|
329
|
-
}
|
|
330
|
-
else if (columns) {
|
|
331
|
-
query += ` ${conflictTarget} DO UPDATE SET `;
|
|
332
|
-
query += columns
|
|
333
|
-
.map((column) => `${this.escape(column)} = :${column}`)
|
|
334
|
-
.join(", ");
|
|
335
|
-
query += " ";
|
|
336
|
-
}
|
|
337
|
-
if (Array.isArray(overwrite) &&
|
|
338
|
-
skipUpdateIfNoValuesChanged &&
|
|
339
|
-
DriverUtils_1.DriverUtils.isPostgresFamily(this.connection.driver)) {
|
|
340
|
-
query += ` WHERE (`;
|
|
341
|
-
query += overwrite
|
|
342
|
-
.map((column) => `${tableName}.${this.escape(column)} IS DISTINCT FROM EXCLUDED.${this.escape(column)}`)
|
|
343
|
-
.join(" OR ");
|
|
344
|
-
query += ") ";
|
|
345
|
-
}
|
|
346
353
|
}
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
query += " ";
|
|
354
|
+
else if (this.connection.driver.supportedUpsertTypes.includes("on-duplicate-key-update")) {
|
|
355
|
+
if (this.expressionMap.onUpdate) {
|
|
356
|
+
const { overwrite, columns } = this.expressionMap.onUpdate;
|
|
357
|
+
if (Array.isArray(overwrite)) {
|
|
358
|
+
query += " ON DUPLICATE KEY UPDATE ";
|
|
359
|
+
query += overwrite
|
|
360
|
+
.map((column) => `${this.escape(column)} = VALUES(${this.escape(column)})`)
|
|
361
|
+
.join(", ");
|
|
362
|
+
query += " ";
|
|
363
|
+
}
|
|
364
|
+
else if (Array.isArray(columns)) {
|
|
365
|
+
query += " ON DUPLICATE KEY UPDATE ";
|
|
366
|
+
query += columns
|
|
367
|
+
.map((column) => `${this.escape(column)} = :${column}`)
|
|
368
|
+
.join(", ");
|
|
369
|
+
query += " ";
|
|
370
|
+
}
|
|
365
371
|
}
|
|
366
372
|
}
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
373
|
+
else {
|
|
374
|
+
if (this.expressionMap.onUpdate) {
|
|
375
|
+
throw new error_1.TypeORMError(`onUpdate is not supported by the current database driver`);
|
|
376
|
+
}
|
|
371
377
|
}
|
|
372
378
|
}
|
|
373
379
|
// add RETURNING expression
|