从相应的 SQL 中继承嵌套的 where 子句

Sequelize nested where clause from corresponding SQL

给出以下 SQL 查询

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')))

您将如何使用 Sequelize ORM 生成相同的查询?我正在使用 Sequelize V.6

像这样使用 Op.andOp.orSequelize.fn 很容易:

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')
       }
    }
    ]
   }
   ]
  }
})