#12779 docs: fix forgetting the comma

Closed ia17011
Coverage Reach
src/dialects/abstract/query-generator.js src/dialects/abstract/query-interface.js src/dialects/abstract/query.js src/dialects/abstract/connection-manager.js src/dialects/abstract/query-generator/operators.js src/dialects/abstract/query-generator/transaction.js src/dialects/abstract/query-generator/helpers/quote.js src/dialects/abstract/index.js src/dialects/postgres/query-generator.js src/dialects/postgres/data-types.js src/dialects/postgres/query.js src/dialects/postgres/connection-manager.js src/dialects/postgres/query-interface.js src/dialects/postgres/range.js src/dialects/postgres/index.js src/dialects/postgres/hstore.js src/dialects/mssql/query-generator.js src/dialects/mssql/query.js src/dialects/mssql/data-types.js src/dialects/mssql/connection-manager.js src/dialects/mssql/query-interface.js src/dialects/mssql/index.js src/dialects/mssql/async-queue.ts src/dialects/sqlite/query.js src/dialects/sqlite/query-generator.js src/dialects/sqlite/query-interface.js src/dialects/sqlite/data-types.js src/dialects/sqlite/connection-manager.js src/dialects/sqlite/index.js src/dialects/mysql/query-generator.js src/dialects/mysql/query.js src/dialects/mysql/data-types.js src/dialects/mysql/connection-manager.js src/dialects/mysql/query-interface.js src/dialects/mysql/index.js src/dialects/mariadb/query.js src/dialects/mariadb/data-types.js src/dialects/mariadb/connection-manager.js src/dialects/mariadb/index.js src/dialects/mariadb/query-generator.js src/dialects/parserStore.js src/model.js src/associations/belongs-to-many.js src/associations/has-many.js src/associations/has-one.js src/associations/belongs-to.js src/associations/mixin.js src/associations/base.js src/associations/helpers.js src/associations/index.js src/sequelize.js src/data-types.js src/errors/validation-error.ts src/errors/index.ts src/errors/database/foreign-key-constraint-error.ts src/errors/database/unknown-constraint-error.ts src/errors/database/exclusion-constraint-error.ts src/errors/database/timeout-error.ts src/errors/connection/access-denied-error.ts src/errors/connection/host-not-found-error.ts src/errors/connection/invalid-connection-error.ts src/errors/connection/connection-timed-out-error.ts src/errors/connection/connection-acquire-timeout-error.ts src/errors/connection/connection-refused-error.ts src/errors/connection/host-not-reachable-error.ts src/errors/validation/unique-constraint-error.ts src/errors/aggregate-error.ts src/errors/database-error.ts src/errors/connection-error.ts src/errors/optimistic-lock-error.ts src/errors/bulk-record-error.ts src/errors/empty-result-error.ts src/errors/scope-error.ts src/errors/eager-loading-error.ts src/errors/instance-error.ts src/errors/association-error.ts src/errors/query-error.ts src/errors/base-error.ts src/utils.js src/instance-validator.js src/utils/validator-extras.ts src/utils/join-sql-fragments.ts src/utils/logger.ts src/utils/deprecations.ts src/utils/class-to-invokable.ts src/transaction.js src/hooks.js src/sql-string.ts src/model-manager.ts src/table-hints.ts src/query-types.ts src/deferrable.js src/index-hints.ts src/operators.ts index.js

No flags found

Use flags to group coverage reports by test type, project and/or folders.
Then setup custom commit statuses and notifications for each flag.

e.g., #unittest #integration

#production #enterprise

#frontend #backend

Learn more about Codecov Flags here.

Showing 95 of 300 files from the diff.
Newly tracked file
src/utils.js changed.
Newly tracked file
src/hooks.js changed.
Newly tracked file
src/data-types.js changed.
Newly tracked file
src/sequelize.js changed.
Newly tracked file
src/deferrable.js changed.
Newly tracked file
src/table-hints.ts changed.
Newly tracked file
src/sql-string.ts created.
Newly tracked file
src/query-types.ts changed.
Newly tracked file
src/operators.ts changed.
Newly tracked file
src/transaction.js changed.
Newly tracked file
src/model.js changed.
Newly tracked file
src/index-hints.ts created.
Other files ignored by Codecov
appveyor.yml has changed.
.gitignore has changed.
README.md has changed.
package-lock.json has changed.
.travis.yml has changed.
package.json has changed.
test/support.js has changed.
CONTACT.md has changed.
CONTRIBUTING.md has changed.
.eslintrc.json has changed.
.github/stale.yml has changed.
ENGINE.md has changed.
lib/sql-string.js was deleted.

@@ -1,5 +1,3 @@
Loading
1 -
'use strict';
2 -
3 1
const AbstractConnectionManager = require('../abstract/connection-manager');
4 2
const SequelizeErrors = require('../../errors');
5 3
const { logger } = require('../../utils/logger');
@@ -139,11 +137,13 @@
Loading
139 137
  }
140 138
141 139
  validate(connection) {
142 -
    return connection
143 -
      && !connection._fatalError
144 -
      && !connection._protocolError
145 -
      && !connection._closing
146 -
      && !connection.stream.destroyed;
140 +
    return (
141 +
      connection &&
142 +
      !connection._fatalError &&
143 +
      !connection._protocolError &&
144 +
      !connection._closing &&
145 +
      !connection.stream.destroyed
146 +
    );
147 147
  }
148 148
}
149 149

@@ -1,5 +1,3 @@
Loading
1 -
'use strict';
2 -
3 1
const { Pool, TimeoutError } = require('sequelize-pool');
4 2
const _ = require('lodash');
5 3
const semver = require('semver');
@@ -72,7 +70,6 @@
Loading
72 70
        return this.sequelize.config.dialectModule;
73 71
      }
74 72
      return require(moduleName);
75 -
76 73
    } catch (err) {
77 74
      if (err.code === 'MODULE_NOT_FOUND') {
78 75
        if (this.sequelize.config.dialectModulePath) {
@@ -180,17 +177,11 @@
Loading
180 177
        debug('connection destroy');
181 178
      },
182 179
      destroyAllNow: async () => {
183 -
        await Promise.all([
184 -
          this.pool.read.destroyAllNow(),
185 -
          this.pool.write.destroyAllNow()
186 -
        ]);
180 +
        await Promise.all([this.pool.read.destroyAllNow(), this.pool.write.destroyAllNow()]);
187 181
188 182
        debug('all connections destroyed');
189 183
      },
190 -
      drain: async () => Promise.all([
191 -
        this.pool.write.drain(),
192 -
        this.pool.read.drain()
193 -
      ]),
184 +
      drain: async () => Promise.all([this.pool.write.drain(), this.pool.read.drain()]),
194 185
      read: new Pool({
195 186
        name: 'sequelize:read',
196 187
        create: async () => {

@@ -1,54 +1,58 @@
Loading
1 -
'use strict';
2 -
3 -
function doesNotWantLeadingSpace(str) {
1 +
function doesNotWantLeadingSpace(str: string) {
4 2
  return /^[;,)]/.test(str);
5 3
}
6 -
function doesNotWantTrailingSpace(str) {
4 +
function doesNotWantTrailingSpace(str: string) {
7 5
  return /\($/.test(str);
8 6
}
9 7
10 8
/**
11 9
 * Joins an array of strings with a single space between them,
12 10
 * except for:
13 -
 * 
11 +
 *
14 12
 * - Strings starting with ';', ',' and ')', which do not get a leading space.
15 13
 * - Strings ending with '(', which do not get a trailing space.
16 -
 * 
14 +
 *
17 15
 * @param {string[]} parts
18 16
 * @returns {string}
17 +
 *
19 18
 * @private
20 19
 */
21 -
function singleSpaceJoinHelper(parts) {
22 -
  return parts.reduce(({ skipNextLeadingSpace, result }, part) => {
23 -
    if (skipNextLeadingSpace || doesNotWantLeadingSpace(part)) {
24 -
      result += part.trim();
25 -
    } else {
26 -
      result += ` ${part.trim()}`;
20 +
function singleSpaceJoinHelper(parts: string[]): string {
21 +
  return parts.reduce(
22 +
    ({ skipNextLeadingSpace, result }, part) => {
23 +
      if (skipNextLeadingSpace || doesNotWantLeadingSpace(part)) {
24 +
        result += part.trim();
25 +
      } else {
26 +
        result += ` ${part.trim()}`;
27 +
      }
28 +
      return {
29 +
        skipNextLeadingSpace: doesNotWantTrailingSpace(part),
30 +
        result
31 +
      };
32 +
    },
33 +
    {
34 +
      skipNextLeadingSpace: true,
35 +
      result: ''
27 36
    }
28 -
    return {
29 -
      skipNextLeadingSpace: doesNotWantTrailingSpace(part),
30 -
      result
31 -
    };
32 -
  }, {
33 -
    skipNextLeadingSpace: true,
34 -
    result: ''
35 -
  }).result;
37 +
  ).result;
36 38
}
37 39
40 +
type SQLFragment = string | unknown | SQLFragment[];
41 +
38 42
/**
39 43
 * Joins an array with a single space, auto trimming when needed.
40 -
 * 
44 +
 *
41 45
 * Certain elements do not get leading/trailing spaces.
42 -
 * 
43 -
 * @param {any[]} array The array to be joined. Falsy values are skipped. If an
46 +
 *
47 +
 * @param {unknown[]} array The array to be joined. Falsy values are skipped. If an
44 48
 * element is another array, this function will be called recursively on that array.
45 49
 * Otherwise, if a non-string, non-falsy value is present, a TypeError will be thrown.
46 -
 * 
50 +
 *
47 51
 * @returns {string} The joined string.
48 -
 * 
52 +
 *
49 53
 * @private
50 54
 */
51 -
function joinSQLFragments(array) {
55 +
export function joinSQLFragments(array: SQLFragment[]): string {
52 56
  if (array.length === 0) return '';
53 57
54 58
  // Skip falsy fragments
@@ -65,19 +69,19 @@
Loading
65 69
  // Ensure strings
66 70
  for (const fragment of array) {
67 71
    if (fragment && typeof fragment !== 'string') {
68 -
      const error = new TypeError(`Tried to construct a SQL string with a non-string, non-falsy fragment (${fragment}).`);
69 -
      error.args = array;
70 -
      error.fragment = fragment;
71 -
      throw error;
72 +
      throw new Error(
73 +
        `Tried to construct a SQL string with a non-string, non-falsy fragment (${fragment}) with args (${array}).`
74 +
      );
72 75
    }
73 76
  }
74 77
78 +
  let strings = array.filter(item => typeof item === 'string').map(item => item + '');
79 +
75 80
  // Trim fragments
76 -
  array = array.map(x => x.trim());
81 +
  strings = strings.map(item => item.trim());
77 82
78 83
  // Skip full-whitespace fragments (empty after the above trim)
79 -
  array = array.filter(x => x !== '');
84 +
  strings = strings.filter(item => item !== '');
80 85
81 -
  return singleSpaceJoinHelper(array);
86 +
  return singleSpaceJoinHelper(strings);
82 87
}
83 -
exports.joinSQLFragments = joinSQLFragments;

@@ -1,5 +1,3 @@
Loading
1 -
'use strict';
2 -
3 1
const Utils = require('../../utils');
4 2
const Transaction = require('../../transaction');
5 3
const _ = require('lodash');
@@ -23,7 +21,8 @@
Loading
23 21
    options = options || {};
24 22
25 23
    const primaryKeys = [];
26 -
    const needsMultiplePrimaryKeys = Object.values(attributes).filter(definition => definition.includes('PRIMARY KEY')).length > 1;
24 +
    const needsMultiplePrimaryKeys =
25 +
      Object.values(attributes).filter(definition => definition.includes('PRIMARY KEY')).length > 1;
27 26
    const attrArray = [];
28 27
29 28
    for (const attr in attributes) {
@@ -149,7 +148,6 @@
Loading
149 148
    return value;
150 149
  }
151 150
152 -
153 151
  handleSequelizeMethod(smth, tableName, factory, options, prepend) {
154 152
    if (smth instanceof Utils.Json) {
155 153
      return super.handleSequelizeMethod(smth, tableName, factory, options, prepend);
@@ -161,7 +159,14 @@
Loading
161 159
      }
162 160
    }
163 161
164 -
    return AbstractQueryGenerator.prototype.handleSequelizeMethod.call(this, smth, tableName, factory, options, prepend);
162 +
    return AbstractQueryGenerator.prototype.handleSequelizeMethod.call(
163 +
      this,
164 +
      smth,
165 +
      tableName,
166 +
      factory,
167 +
      options,
168 +
      prepend
169 +
    );
165 170
  }
166 171
167 172
  addColumnQuery(table, key, dataType) {
@@ -176,7 +181,7 @@
Loading
176 181
  }
177 182
178 183
  showTablesQuery() {
179 -
    return 'SELECT name FROM `sqlite_master` WHERE type=\'table\' and name!=\'sqlite_sequence\';';
184 +
    return "SELECT name FROM `sqlite_master` WHERE type='table' and name!='sqlite_sequence';";
180 185
  }
181 186
182 187
  updateQuery(tableName, attrValueHash, where, options, attributes) {
@@ -203,17 +208,35 @@
Loading
203 208
      const value = attrValueHash[key];
204 209
205 210
      if (value instanceof Utils.SequelizeMethod || options.bindParam === false) {
206 -
        values.push(`${this.quoteIdentifier(key)}=${this.escape(value, modelAttributeMap && modelAttributeMap[key] || undefined, { context: 'UPDATE' })}`);
211 +
        values.push(
212 +
          `${this.quoteIdentifier(key)}=${this.escape(
213 +
            value,
214 +
            (modelAttributeMap && modelAttributeMap[key]) || undefined,
215 +
            { context: 'UPDATE' }
216 +
          )}`
217 +
        );
207 218
      } else {
208 -
        values.push(`${this.quoteIdentifier(key)}=${this.format(value, modelAttributeMap && modelAttributeMap[key] || undefined, { context: 'UPDATE' }, bindParam)}`);
219 +
        values.push(
220 +
          `${this.quoteIdentifier(key)}=${this.format(
221 +
            value,
222 +
            (modelAttributeMap && modelAttributeMap[key]) || undefined,
223 +
            { context: 'UPDATE' },
224 +
            bindParam
225 +
          )}`
226 +
        );
209 227
      }
210 228
    }
211 229
212 230
    let query;
213 231
    const whereOptions = { ...options, bindParam };
214 232
215 233
    if (options.limit) {
216 -
      query = `UPDATE ${this.quoteTable(tableName)} SET ${values.join(',')} WHERE rowid IN (SELECT rowid FROM ${this.quoteTable(tableName)} ${this.whereQuery(where, whereOptions)} LIMIT ${this.escape(options.limit)})`;
234 +
      query = `UPDATE ${this.quoteTable(tableName)} SET ${values.join(
235 +
        ','
236 +
      )} WHERE rowid IN (SELECT rowid FROM ${this.quoteTable(tableName)} ${this.whereQuery(
237 +
        where,
238 +
        whereOptions
239 +
      )} LIMIT ${this.escape(options.limit)})`;
217 240
    } else {
218 241
      query = `UPDATE ${this.quoteTable(tableName)} SET ${values.join(',')} ${this.whereQuery(where, whereOptions)}`;
219 242
    }
@@ -224,7 +247,12 @@
Loading
224 247
  truncateTableQuery(tableName, options = {}) {
225 248
    return [
226 249
      `DELETE FROM ${this.quoteTable(tableName)}`,
227 -
      options.restartIdentity ? `; DELETE FROM ${this.quoteTable('sqlite_sequence')} WHERE ${this.quoteIdentifier('name')} = ${Utils.addTicks(Utils.removeTicks(this.quoteTable(tableName), '`'), "'")};` : ''
250 +
      options.restartIdentity
251 +
        ? `; DELETE FROM ${this.quoteTable('sqlite_sequence')} WHERE ${this.quoteIdentifier('name')} = ${Utils.addTicks(
252 +
            Utils.removeTicks(this.quoteTable(tableName), '`'),
253 +
            "'"
254 +
          )};`
255 +
        : ''
228 256
    ].join('');
229 257
  }
230 258
@@ -238,7 +266,9 @@
Loading
238 266
    }
239 267
240 268
    if (options.limit) {
241 -
      whereClause = `WHERE rowid IN (SELECT rowid FROM ${this.quoteTable(tableName)} ${whereClause} LIMIT ${this.escape(options.limit)})`;
269 +
      whereClause = `WHERE rowid IN (SELECT rowid FROM ${this.quoteTable(tableName)} ${whereClause} LIMIT ${this.escape(
270 +
        options.limit
271 +
      )})`;
242 272
    }
243 273
244 274
    return `DELETE FROM ${this.quoteTable(tableName)} ${whereClause}`;
@@ -295,7 +325,6 @@
Loading
295 325
          if (dataType.onUpdate) {
296 326
            sql += ` ON UPDATE ${dataType.onUpdate.toUpperCase()}`;
297 327
          }
298 -
299 328
        }
300 329
301 330
        result[fieldName] = sql;
@@ -345,7 +374,6 @@
Loading
345 374
  }
346 375
347 376
  removeColumnQuery(tableName, attributes) {
348 -
349 377
    attributes = this.attributesToSQL(attributes);
350 378
351 379
    let backupTableName;
@@ -360,15 +388,22 @@
Loading
360 388
361 389
    const quotedTableName = this.quoteTable(tableName);
362 390
    const quotedBackupTableName = this.quoteTable(backupTableName);
363 -
    const attributeNames = Object.keys(attributes).map(attr => this.quoteIdentifier(attr)).join(', ');
391 +
    const attributeNames = Object.keys(attributes)
392 +
      .map(attr => this.quoteIdentifier(attr))
393 +
      .join(', ');
364 394
365 395
    // Temporary table cannot work for foreign keys.
366 -
    return `${this.createTableQuery(backupTableName, attributes)
367 -
    }INSERT INTO ${quotedBackupTableName} SELECT ${attributeNames} FROM ${quotedTableName};`
368 -
      + `DROP TABLE ${quotedTableName};${
369 -
        this.createTableQuery(tableName, attributes)
370 -
      }INSERT INTO ${quotedTableName} SELECT ${attributeNames} FROM ${quotedBackupTableName};`
371 -
      + `DROP TABLE ${quotedBackupTableName};`;
396 +
    return (
397 +
      `${this.createTableQuery(
398 +
        backupTableName,
399 +
        attributes
400 +
      )}INSERT INTO ${quotedBackupTableName} SELECT ${attributeNames} FROM ${quotedTableName};` +
401 +
      `DROP TABLE ${quotedTableName};${this.createTableQuery(
402 +
        tableName,
403 +
        attributes
404 +
      )}INSERT INTO ${quotedTableName} SELECT ${attributeNames} FROM ${quotedBackupTableName};` +
405 +
      `DROP TABLE ${quotedBackupTableName};`
406 +
    );
372 407
  }
373 408
374 409
  _alterConstraintQuery(tableName, attributes, createTableSql) {
@@ -386,18 +421,23 @@
Loading
386 421
    }
387 422
    const quotedTableName = this.quoteTable(tableName);
388 423
    const quotedBackupTableName = this.quoteTable(backupTableName);
389 -
    const attributeNames = Object.keys(attributes).map(attr => this.quoteIdentifier(attr)).join(', ');
390 -
391 -
    return `${createTableSql
392 -
      .replace(`CREATE TABLE ${quotedTableName}`, `CREATE TABLE ${quotedBackupTableName}`)
393 -
      .replace(`CREATE TABLE ${quotedTableName.replace(/`/g, '"')}`, `CREATE TABLE ${quotedBackupTableName}`)
394 -
    }INSERT INTO ${quotedBackupTableName} SELECT ${attributeNames} FROM ${quotedTableName};`
395 -
      + `DROP TABLE ${quotedTableName};`
396 -
      + `ALTER TABLE ${quotedBackupTableName} RENAME TO ${quotedTableName};`;
424 +
    const attributeNames = Object.keys(attributes)
425 +
      .map(attr => this.quoteIdentifier(attr))
426 +
      .join(', ');
427 +
428 +
    return (
429 +
      `${createTableSql
430 +
        .replace(`CREATE TABLE ${quotedTableName}`, `CREATE TABLE ${quotedBackupTableName}`)
431 +
        .replace(
432 +
          `CREATE TABLE ${quotedTableName.replace(/`/g, '"')}`,
433 +
          `CREATE TABLE ${quotedBackupTableName}`
434 +
        )}INSERT INTO ${quotedBackupTableName} SELECT ${attributeNames} FROM ${quotedTableName};` +
435 +
      `DROP TABLE ${quotedTableName};` +
436 +
      `ALTER TABLE ${quotedBackupTableName} RENAME TO ${quotedTableName};`
437 +
    );
397 438
  }
398 439
399 440
  renameColumnQuery(tableName, attrNameBefore, attrNameAfter, attributes) {
400 -
401 441
    let backupTableName;
402 442
403 443
    attributes = this.attributesToSQL(attributes);
@@ -413,18 +453,29 @@
Loading
413 453
414 454
    const quotedTableName = this.quoteTable(tableName);
415 455
    const quotedBackupTableName = this.quoteTable(backupTableName);
416 -
    const attributeNamesImport = Object.keys(attributes).map(attr =>
417 -
      attrNameAfter === attr ? `${this.quoteIdentifier(attrNameBefore)} AS ${this.quoteIdentifier(attr)}` : this.quoteIdentifier(attr)
418 -
    ).join(', ');
419 -
    const attributeNamesExport = Object.keys(attributes).map(attr => this.quoteIdentifier(attr)).join(', ');
456 +
    const attributeNamesImport = Object.keys(attributes)
457 +
      .map(attr =>
458 +
        attrNameAfter === attr
459 +
          ? `${this.quoteIdentifier(attrNameBefore)} AS ${this.quoteIdentifier(attr)}`
460 +
          : this.quoteIdentifier(attr)
461 +
      )
462 +
      .join(', ');
463 +
    const attributeNamesExport = Object.keys(attributes)
464 +
      .map(attr => this.quoteIdentifier(attr))
465 +
      .join(', ');
420 466
421 467
    // Temporary tables don't support foreign keys, so creating a temporary table will not allow foreign keys to be preserved
422 -
    return `${this.createTableQuery(backupTableName, attributes)
423 -
    }INSERT INTO ${quotedBackupTableName} SELECT ${attributeNamesImport} FROM ${quotedTableName};`
424 -
      + `DROP TABLE ${quotedTableName};${
425 -
        this.createTableQuery(tableName, attributes)
426 -
      }INSERT INTO ${quotedTableName} SELECT ${attributeNamesExport} FROM ${quotedBackupTableName};`
427 -
      + `DROP TABLE ${quotedBackupTableName};`;
468 +
    return (
469 +
      `${this.createTableQuery(
470 +
        backupTableName,
471 +
        attributes
472 +
      )}INSERT INTO ${quotedBackupTableName} SELECT ${attributeNamesImport} FROM ${quotedTableName};` +
473 +
      `DROP TABLE ${quotedTableName};${this.createTableQuery(
474 +
        tableName,
475 +
        attributes
476 +
      )}INSERT INTO ${quotedTableName} SELECT ${attributeNamesExport} FROM ${quotedBackupTableName};` +
477 +
      `DROP TABLE ${quotedBackupTableName};`
478 +
    );
428 479
  }
429 480
430 481
  startTransactionQuery(transaction) {
@@ -444,7 +495,7 @@
Loading
444 495
      case Transaction.ISOLATION_LEVELS.READ_COMMITTED:
445 496
        return 'PRAGMA read_uncommitted = OFF;';
446 497
      case Transaction.ISOLATION_LEVELS.SERIALIZABLE:
447 -
        return '-- SQLite\'s default isolation level is SERIALIZABLE. Nothing to do.';
498 +
        return "-- SQLite's default isolation level is SERIALIZABLE. Nothing to do.";
448 499
      default:
449 500
        throw new Error(`Unknown isolation level: ${value}`);
450 501
    }

@@ -0,0 +1,41 @@
Loading
1 +
import { deprecate } from 'util';
2 +
3 +
const noop = () => {
4 +
  /* noop */
5 +
};
6 +
7 +
export const noRawAttributes = deprecate(
8 +
  noop,
9 +
  'Use sequelize.fn / sequelize.literal to construct attributes',
10 +
  'SEQUELIZE0001'
11 +
);
12 +
13 +
export const noTrueLogging = deprecate(
14 +
  noop,
15 +
  'The logging-option should be either a function or false. Default: console.log',
16 +
  'SEQUELIZE0002'
17 +
);
18 +
19 +
export const noStringOperators = deprecate(
20 +
  noop,
21 +
  'String based operators are deprecated. Please use Symbol based operators for better security, read more at https://sequelize.org/master/manual/querying.html#operators',
22 +
  'SEQUELIZE0003'
23 +
);
24 +
25 +
export const noBoolOperatorAliases = deprecate(
26 +
  noop,
27 +
  'A boolean value was passed to options.operatorsAliases. This is a no-op with v5 and should be removed.',
28 +
  'SEQUELIZE0004'
29 +
);
30 +
31 +
export const noDoubleNestedGroup = deprecate(
32 +
  noop,
33 +
  'Passing a double nested nested array to `group` is unsupported and will be removed in v6.',
34 +
  'SEQUELIZE0005'
35 +
);
36 +
37 +
export const unsupportedEngine = deprecate(
38 +
  noop,
39 +
  'This database engine version is not supported, please update your database server. More information https://github.com/sequelize/sequelize/blob/master/ENGINE.md',
40 +
  'SEQUELIZE0006'
41 +
);

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Click to load this diff.
Loading diff...

Learn more Showing 16 files with coverage changes found.

Changes in src/errors/database/foreign-key-constraint-error.ts
-1
+1
Loading file...
Changes in src/model-manager.ts
-1
+1
Loading file...
Changes in src/errors/validation-error.ts
-1
+1
Loading file...
New file src/errors/database-error.ts
New
Loading file...
New file src/errors/aggregate-error.ts
New
Loading file...
New file src/utils/deprecations.ts
New
Loading file...
New file src/sql-string.ts
New
Loading file...
New file src/utils/validator-extras.ts
New
Loading file...
New file src/errors/scope-error.ts
New
Loading file...
New file src/table-hints.ts
New
Loading file...
New file src/dialects/mssql/async-queue.ts
New
Loading file...
New file src/index-hints.ts
New
Loading file...
New file src/errors/index.ts
New
Loading file...
New file src/errors/connection-error.ts
New
Loading file...
New file src/query-types.ts
New
Loading file...
Changes in src/dialects/abstract/query-generator.js
-3
+3
Loading file...

36 Commits

+2
-2
-2
+2
Hiding 1 contexual commits
+5
+4
+1
+3 Files
+144
+704
-2
-558
-3 Files
-144
-704
+2
+558
Hiding 1 contexual commits
-2
-5
+3
+7 Files
+599
+890
-1
-290
-7 Files
-598
-890
+2
+290
+4 Files
+395
+650
-1
-254
-4 Files
-395
-650
+1
+254
+4 Files
+395
+652
-1
-256
Hiding 1 contexual commits
-4 Files
-395
-464
+1
+68
-186
+186
-2
+2
+2
+2
+1
+1
+34
+24
+10
+32
+32
-6
-6
+3
-3
+3
-3
+2
+1
+1
-2
+2
Pull Request Base Commit
Files Coverage
src +96.33% 96.33%
index.js 100.00%
Project Totals (95 files) 96.33%
Loading