|
@@ -16,12 +16,12 @@ type Ability struct {
|
|
|
func GetRandomSatisfiedChannel(group string, model string) (*Channel, error) {
|
|
func GetRandomSatisfiedChannel(group string, model string) (*Channel, error) {
|
|
|
ability := Ability{}
|
|
ability := Ability{}
|
|
|
var err error = nil
|
|
var err error = nil
|
|
|
|
|
+ maxPrioritySubQuery := DB.Model(&Ability{}).Select("MAX(priority)").Where("`group` = ? and model = ? and enabled = 1", group, model)
|
|
|
|
|
+ channelQuery := DB.Where("`group` = ? and model = ? and enabled = 1 and priority = (?)", group, model, maxPrioritySubQuery)
|
|
|
if common.UsingSQLite {
|
|
if common.UsingSQLite {
|
|
|
- maxPrioritySubQuery := DB.Model(&Ability{}).Select("MAX(priority)").Where("`group` = ? and model = ? and enabled = 1", group, model)
|
|
|
|
|
- err = DB.Where("`group` = ? and model = ? and enabled = 1 and priority = (?)", group, model, maxPrioritySubQuery).Order("RANDOM()").Limit(1).First(&ability).Error
|
|
|
|
|
|
|
+ err = channelQuery.Order("RANDOM()").Limit(1).First(&ability).Error
|
|
|
} else {
|
|
} else {
|
|
|
- maxPrioritySubQuery := DB.Model(&Ability{}).Select("MAX(priority)").Where("group = ? and model = ? and enabled = 1", group, model)
|
|
|
|
|
- err = DB.Where("`group` = ? and model = ? and enabled = 1 and priority = (?)", group, model, maxPrioritySubQuery).Order("RAND()").Limit(1).First(&ability).Error
|
|
|
|
|
|
|
+ err = channelQuery.Order("RAND()").Limit(1).First(&ability).Error
|
|
|
}
|
|
}
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return nil, err
|
|
return nil, err
|