Reputation: 25
Given the following SQL query
SELECT *
FROM `table_name`
WHERE
(`year` > YEAR('2021-01-01') OR
(`year` = YEAR('2021-01-01') AND
`weekNumber` >= WEEK('2021-01-01'))
)
AND (`year` < YEAR('2021-10-11') OR
(`year` = YEAR('2021-10-11') AND
`weekNumber` <= WEEK('2021-10-11')))
How would you generate the same query using Sequelize ORM? I am using Sequelize V.6
Upvotes: 0
Views: 609
Reputation: 22758
That's easy using Op.and
, Op.or
and Sequelize.fn
like this:
const rows = await Model.findAll({
where: {
[Op.and]: [
{
[Op.or]: [{
year: {
[Op.gt]: Sequelize.fn('YEAR', '2021-01-01')
}
}, {
year: Sequelize.fn('YEAR', '2021-01-01'),
weekNumber: {
[Op.gte]: Sequelize.fn('WEEK', '2021-01-01')
}
}
]
},
{
[Op.or]: [{
year: {
[Op.lt]: Sequelize.fn('YEAR', '2021-10-11')
}
}, {
year: Sequelize.fn('YEAR', '2021-10-11'),
weekNumber: {
[Op.lte]: Sequelize.fn('WEEK', '2021-10-11')
}
}
]
}
]
}
})
Upvotes: 1