| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- "use strict";
- var __defProp = Object.defineProperty;
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
- var __hasOwnProp = Object.prototype.hasOwnProperty;
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
- var __spreadValues = (a, b) => {
- for (var prop in b || (b = {}))
- if (__hasOwnProp.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- if (__getOwnPropSymbols)
- for (var prop of __getOwnPropSymbols(b)) {
- if (__propIsEnum.call(b, prop))
- __defNormalProp(a, prop, b[prop]);
- }
- return a;
- };
- var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
- var __export = (target, all) => {
- __markAsModule(target);
- for (var name in all)
- __defProp(target, name, { get: all[name], enumerable: true });
- };
- __export(exports, {
- OracleQueryInterface: () => OracleQueryInterface
- });
- const { QueryInterface } = require("../abstract/query-interface");
- const QueryTypes = require("../../query-types");
- const _ = require("lodash");
- class OracleQueryInterface extends QueryInterface {
- async upsert(tableName, insertValues, updateValues, where, options) {
- options = __spreadValues({}, options);
- const model = options.model;
- const primaryKeys = Object.values(model.primaryKeys).map((item) => item.field);
- const uniqueKeys = Object.values(model.uniqueKeys).filter((c) => c.fields.length > 0).map((c) => c.fields);
- const indexKeys = Object.values(model._indexes).filter((c) => c.unique && c.fields.length > 0).map((c) => c.fields);
- options.type = QueryTypes.UPSERT;
- options.updateOnDuplicate = Object.keys(updateValues);
- options.upsertKeys = [];
- for (const field of options.updateOnDuplicate) {
- const uniqueKey = uniqueKeys.find((fields) => fields.includes(field));
- if (uniqueKey) {
- options.upsertKeys = uniqueKey;
- break;
- }
- const indexKey = indexKeys.find((fields) => fields.includes(field));
- if (indexKey) {
- options.upsertKeys = indexKey;
- break;
- }
- }
- if (options.upsertKeys.length === 0 || _.intersection(options.updateOnDuplicate, primaryKeys).length) {
- options.upsertKeys = primaryKeys;
- }
- options.upsertKeys = _.uniq(options.upsertKeys);
- let whereHasNull = false;
- primaryKeys.forEach((element) => {
- if (where[element] === null) {
- whereHasNull = true;
- }
- });
- if (whereHasNull === true) {
- where = options.upsertKeys.reduce((result, attribute) => {
- result[attribute] = insertValues[attribute];
- return result;
- }, {});
- }
- const sql = this.queryGenerator.upsertQuery(tableName, insertValues, updateValues, where, model, options);
- if (sql.bind) {
- options.bind = void 0;
- }
- return await this.sequelize.query(sql, options);
- }
- }
- //# sourceMappingURL=query-interface.js.map
|