Есть ли способ объединить области и ИЛИ условия

# #go-gorm

Вопрос:

Я ожидаю, что получу инструкцию SQL, подобную этой

 where (cw.status = 'pending' AND c.status != 'notfinished' AND c.status != 'notexpired') 
OR (cw.status = 'approved' AND now() < lower(c.ranges) AND c.status != 'notcancelledbyuser') 
OR (cw.status = 'approved' AND now() <@ c.ranges" AND c.status != 'notcancelledbyuser')
 
 func Pending(tx *gorm.DB) *gorm.DB {
    return tx.Where("cw.status = ?", Pending).Scopes(NotFinished, NotExpired)
}

func Scheduled(tx *gorm.DB) *gorm.DB {
    return tx.Where("cw.status = ? AND now() < lower(c.ranges)", Approved).Scopes(NotCancelledByUser)
}

func Running(tx *gorm.DB) *gorm.DB {
    return tx.Where("cw.status = ? AND now() <@ c.ranges", Approved).Scopes(NotCancelledByUser)
}


func Filter(tx *gorm.DB) *gorm.DB {
    return db.Scopes(Pending).Or(Scheduled).Or(Running)
}
 

К сожалению, я получаю нечто непредсказуемое.

Комментарии:

1. Я просто попробовал использовать различные комбинации областей и предложений where и не нашел никаких проблем. Не могли бы вы включить режим отладки db.Debug() и опубликовать сгенерированный выбор из gorm?