不要怂,就是干,撸起袖子干!

Commit b6f04ac6 by Simon Schick Committed by Sushant

fix(query-generator): convert numbers to date types (#10569)

1 parent b0da59b6
...@@ -2365,7 +2365,7 @@ class QueryGenerator { ...@@ -2365,7 +2365,7 @@ class QueryGenerator {
return this._joinKeyValue(key, `(${this.escape(value, field)})`, comparator, options.prefix); return this._joinKeyValue(key, `(${this.escape(value, field)})`, comparator, options.prefix);
case Op.between: case Op.between:
case Op.notBetween: case Op.notBetween:
return this._joinKeyValue(key, `${this.escape(value[0])} AND ${this.escape(value[1])}`, comparator, options.prefix); return this._joinKeyValue(key, `${this.escape(value[0], field)} AND ${this.escape(value[1], field)}`, comparator, options.prefix);
case Op.raw: case Op.raw:
throw new Error('The `$raw` where property is no longer supported. Use `sequelize.literal` instead.'); throw new Error('The `$raw` where property is no longer supported. Use `sequelize.literal` instead.');
case Op.col: case Op.col:
......
...@@ -118,7 +118,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -118,7 +118,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
mssql: '[deleted] IS NULL' mssql: '[deleted] IS NULL'
}); });
describe('$in', () => { describe('Op.in', () => {
testsql('equipment', { testsql('equipment', {
[Op.in]: [1, 3] [Op.in]: [1, 3]
}, { }, {
...@@ -156,7 +156,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -156,7 +156,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$not', () => { describe('Op.not', () => {
testsql('deleted', { testsql('deleted', {
[Op.not]: true [Op.not]: true
}, { }, {
...@@ -178,7 +178,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -178,7 +178,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$notIn', () => { describe('Op.notIn', () => {
testsql('equipment', { testsql('equipment', {
[Op.notIn]: [] [Op.notIn]: []
}, { }, {
...@@ -200,7 +200,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -200,7 +200,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$ne', () => { describe('Op.ne', () => {
testsql('email', { testsql('email', {
[Op.ne]: 'jack.bauer@gmail.com' [Op.ne]: 'jack.bauer@gmail.com'
}, { }, {
...@@ -209,8 +209,8 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -209,8 +209,8 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$and/$or/$not', () => { describe('Op.and/Op.or/Op.not', () => {
describe('$or', () => { describe('Op.or', () => {
testsql('email', { testsql('email', {
[Op.or]: ['maker@mhansen.io', 'janzeh@gmail.com'] [Op.or]: ['maker@mhansen.io', 'janzeh@gmail.com']
}, { }, {
...@@ -292,7 +292,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -292,7 +292,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$and', () => { describe('Op.and', () => {
testsql(Op.and, { testsql(Op.and, {
[Op.or]: { [Op.or]: {
group_id: 1, group_id: 1,
...@@ -345,7 +345,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -345,7 +345,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$not', () => { describe('Op.not', () => {
testsql(Op.not, { testsql(Op.not, {
[Op.or]: { [Op.or]: {
group_id: 1, group_id: 1,
...@@ -366,7 +366,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -366,7 +366,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$col', () => { describe('Op.col', () => {
testsql('userId', { testsql('userId', {
[Op.col]: 'user.id' [Op.col]: 'user.id'
}, { }, {
...@@ -409,7 +409,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -409,7 +409,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$gt', () => { describe('Op.gt', () => {
testsql('rank', { testsql('rank', {
[Op.gt]: 2 [Op.gt]: 2
}, { }, {
...@@ -425,7 +425,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -425,7 +425,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$like', () => { describe('Op.like', () => {
testsql('username', { testsql('username', {
[Op.like]: '%swagger' [Op.like]: '%swagger'
}, { }, {
...@@ -434,7 +434,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -434,7 +434,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$startsWith', () => { describe('Op.startsWith', () => {
testsql('username', { testsql('username', {
[Op.startsWith]: 'swagger' [Op.startsWith]: 'swagger'
}, { }, {
...@@ -443,7 +443,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -443,7 +443,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$endsWith', () => { describe('Op.endsWith', () => {
testsql('username', { testsql('username', {
[Op.endsWith]: 'swagger' [Op.endsWith]: 'swagger'
}, { }, {
...@@ -452,7 +452,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -452,7 +452,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$substring', () => { describe('Op.substring', () => {
testsql('username', { testsql('username', {
[Op.substring]: 'swagger' [Op.substring]: 'swagger'
}, { }, {
...@@ -461,7 +461,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -461,7 +461,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$between', () => { describe('Op.between', () => {
testsql('date', { testsql('date', {
[Op.between]: ['2013-01-01', '2013-01-11'] [Op.between]: ['2013-01-01', '2013-01-11']
}, { }, {
...@@ -470,6 +470,30 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -470,6 +470,30 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
testsql('date', { testsql('date', {
[Op.between]: [new Date('2013-01-01'), new Date('2013-01-11')]
}, {
default: "[date] BETWEEN '2013-01-01 00:00:00.000 +00:00' AND '2013-01-11 00:00:00.000 +00:00'",
mysql: "`date` BETWEEN '2013-01-01 00:00:00' AND '2013-01-11 00:00:00'",
mariadb: "`date` BETWEEN '2013-01-01 00:00:00.000' AND '2013-01-11 00:00:00.000'"
});
testsql('date', {
[Op.between]: [1356998400000, 1357862400000]
}, {
model: {
rawAttributes: {
date: {
type: new DataTypes.DATE()
}
}
}
},
{
default: "[date] BETWEEN '2013-01-01 00:00:00.000 +00:00' AND '2013-01-11 00:00:00.000 +00:00'",
mssql: "[date] BETWEEN N'2013-01-01 00:00:00.000 +00:00' AND N'2013-01-11 00:00:00.000 +00:00'"
});
testsql('date', {
[Op.between]: ['2012-12-10', '2013-01-02'], [Op.between]: ['2012-12-10', '2013-01-02'],
[Op.notBetween]: ['2013-01-04', '2013-01-20'] [Op.notBetween]: ['2013-01-04', '2013-01-20']
}, { }, {
...@@ -478,7 +502,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -478,7 +502,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$notBetween', () => { describe('Op.notBetween', () => {
testsql('date', { testsql('date', {
[Op.notBetween]: ['2013-01-01', '2013-01-11'] [Op.notBetween]: ['2013-01-01', '2013-01-11']
}, { }, {
...@@ -489,7 +513,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -489,7 +513,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
if (current.dialect.supports.ARRAY) { if (current.dialect.supports.ARRAY) {
describe('ARRAY', () => { describe('ARRAY', () => {
describe('$contains', () => { describe('Op.contains', () => {
testsql('muscles', { testsql('muscles', {
[Op.contains]: [2, 3] [Op.contains]: [2, 3]
}, { }, {
...@@ -513,7 +537,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -513,7 +537,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$overlap', () => { describe('Op.overlap', () => {
testsql('muscles', { testsql('muscles', {
[Op.overlap]: [3, 11] [Op.overlap]: [3, 11]
}, { }, {
...@@ -521,7 +545,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -521,7 +545,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$any', () => { describe('Op.any', () => {
testsql('userId', { testsql('userId', {
[Op.any]: [4, 5, 6] [Op.any]: [4, 5, 6]
}, { }, {
...@@ -538,7 +562,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -538,7 +562,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
postgres: '"userId" = ANY (ARRAY[2,5]::INTEGER[])' postgres: '"userId" = ANY (ARRAY[2,5]::INTEGER[])'
}); });
describe('$values', () => { describe('Op.values', () => {
testsql('userId', { testsql('userId', {
[Op.any]: { [Op.any]: {
[Op.values]: [4, 5, 6] [Op.values]: [4, 5, 6]
...@@ -561,7 +585,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -561,7 +585,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$all', () => { describe('Op.all', () => {
testsql('userId', { testsql('userId', {
[Op.all]: [4, 5, 6] [Op.all]: [4, 5, 6]
}, { }, {
...@@ -578,7 +602,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -578,7 +602,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
postgres: '"userId" = ALL (ARRAY[2,5]::INTEGER[])' postgres: '"userId" = ALL (ARRAY[2,5]::INTEGER[])'
}); });
describe('$values', () => { describe('Op.values', () => {
testsql('userId', { testsql('userId', {
[Op.all]: { [Op.all]: {
[Op.values]: [4, 5, 6] [Op.values]: [4, 5, 6]
...@@ -601,7 +625,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -601,7 +625,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$like', () => { describe('Op.like', () => {
testsql('userId', { testsql('userId', {
[Op.like]: { [Op.like]: {
[Op.any]: ['foo', 'bar', 'baz'] [Op.any]: ['foo', 'bar', 'baz']
...@@ -1064,7 +1088,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -1064,7 +1088,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
} }
if (current.dialect.supports.REGEXP) { if (current.dialect.supports.REGEXP) {
describe('$regexp', () => { describe('Op.regexp', () => {
testsql('username', { testsql('username', {
[Op.regexp]: '^sw.*r$' [Op.regexp]: '^sw.*r$'
}, { }, {
...@@ -1074,7 +1098,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -1074,7 +1098,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$regexp', () => { describe('Op.regexp', () => {
testsql('newline', { testsql('newline', {
[Op.regexp]: '^new\nline$' [Op.regexp]: '^new\nline$'
}, { }, {
...@@ -1084,7 +1108,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -1084,7 +1108,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$notRegexp', () => { describe('Op.notRegexp', () => {
testsql('username', { testsql('username', {
[Op.notRegexp]: '^sw.*r$' [Op.notRegexp]: '^sw.*r$'
}, { }, {
...@@ -1094,7 +1118,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -1094,7 +1118,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$notRegexp', () => { describe('Op.notRegexp', () => {
testsql('newline', { testsql('newline', {
[Op.notRegexp]: '^new\nline$' [Op.notRegexp]: '^new\nline$'
}, { }, {
...@@ -1105,7 +1129,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -1105,7 +1129,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
if (current.dialect.name === 'postgres') { if (current.dialect.name === 'postgres') {
describe('$iRegexp', () => { describe('Op.iRegexp', () => {
testsql('username', { testsql('username', {
[Op.iRegexp]: '^sw.*r$' [Op.iRegexp]: '^sw.*r$'
}, { }, {
...@@ -1113,7 +1137,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -1113,7 +1137,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$iRegexp', () => { describe('Op.iRegexp', () => {
testsql('newline', { testsql('newline', {
[Op.iRegexp]: '^new\nline$' [Op.iRegexp]: '^new\nline$'
}, { }, {
...@@ -1121,7 +1145,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -1121,7 +1145,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$notIRegexp', () => { describe('Op.notIRegexp', () => {
testsql('username', { testsql('username', {
[Op.notIRegexp]: '^sw.*r$' [Op.notIRegexp]: '^sw.*r$'
}, { }, {
...@@ -1129,7 +1153,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => { ...@@ -1129,7 +1153,7 @@ describe(Support.getTestDialectTeaser('SQL'), () => {
}); });
}); });
describe('$notIRegexp', () => { describe('Op.notIRegexp', () => {
testsql('newline', { testsql('newline', {
[Op.notIRegexp]: '^new\nline$' [Op.notIRegexp]: '^new\nline$'
}, { }, {
......
...@@ -144,7 +144,7 @@ describe(Support.getTestDialectTeaser('Utils'), () => { ...@@ -144,7 +144,7 @@ describe(Support.getTestDialectTeaser('Utils'), () => {
}); });
}); });
it('$or where', () => { it('Op.or where', () => {
expect(Utils.mapOptionFieldNames({ expect(Utils.mapOptionFieldNames({
where: { where: {
[Op.or]: { [Op.or]: {
...@@ -171,7 +171,7 @@ describe(Support.getTestDialectTeaser('Utils'), () => { ...@@ -171,7 +171,7 @@ describe(Support.getTestDialectTeaser('Utils'), () => {
}); });
}); });
it('$or[] where', () => { it('Op.or[] where', () => {
expect(Utils.mapOptionFieldNames({ expect(Utils.mapOptionFieldNames({
where: { where: {
[Op.or]: [ [Op.or]: [
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!