sequelize
Version:
Sequelize is a promise-based Node.js ORM tool for Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server, Amazon Redshift and Snowflake’s Data Cloud. It features solid transaction support, relations, eager and lazy loading, read replication and more.
75 lines (74 loc) • 3.5 kB
JavaScript
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;
};
const _ = require("lodash");
const Utils = require("../../utils");
const QueryTypes = require("../../query-types");
const Op = require("../../operators");
const { QueryInterface } = require("../abstract/query-interface");
class MSSqlQueryInterface extends QueryInterface {
async removeColumn(tableName, attributeName, options) {
options = __spreadValues({ raw: true }, options || {});
const findConstraintSql = this.queryGenerator.getDefaultConstraintQuery(tableName, attributeName);
const [results0] = await this.sequelize.query(findConstraintSql, options);
if (results0.length) {
const dropConstraintSql = this.queryGenerator.dropConstraintQuery(tableName, results0[0].name);
await this.sequelize.query(dropConstraintSql, options);
}
const findForeignKeySql = this.queryGenerator.getForeignKeyQuery(tableName, attributeName);
const [results] = await this.sequelize.query(findForeignKeySql, options);
if (results.length) {
const dropForeignKeySql = this.queryGenerator.dropForeignKeyQuery(tableName, results[0].constraint_name);
await this.sequelize.query(dropForeignKeySql, options);
}
const primaryKeyConstraintSql = this.queryGenerator.getPrimaryKeyConstraintQuery(tableName, attributeName);
const [result] = await this.sequelize.query(primaryKeyConstraintSql, options);
if (result.length) {
const dropConstraintSql = this.queryGenerator.dropConstraintQuery(tableName, result[0].constraintName);
await this.sequelize.query(dropConstraintSql, options);
}
const removeSql = this.queryGenerator.removeColumnQuery(tableName, attributeName);
return this.sequelize.query(removeSql, options);
}
async upsert(tableName, insertValues, updateValues, where, options) {
const model = options.model;
const wheres = [];
options = __spreadValues({}, options);
if (!Utils.isWhereEmpty(where)) {
wheres.push(where);
}
let indexes = Object.values(model.uniqueKeys).map((item) => item.fields);
indexes = indexes.concat(Object.values(model._indexes).filter((item) => item.unique).map((item) => item.fields));
const attributes = Object.keys(insertValues);
for (const index of indexes) {
if (_.intersection(attributes, index).length === index.length) {
where = {};
for (const field of index) {
where[field] = insertValues[field];
}
wheres.push(where);
}
}
where = { [Op.or]: wheres };
options.type = QueryTypes.UPSERT;
options.raw = true;
const sql = this.queryGenerator.upsertQuery(tableName, insertValues, updateValues, where, model, options);
return await this.sequelize.query(sql, options);
}
}
exports.MSSqlQueryInterface = MSSqlQueryInterface;
//# sourceMappingURL=query-interface.js.map
;