|
|
@@ -87,26 +87,29 @@ func getPriority(group string, model string, retry int) (int, error) {
|
|
|
return priorityToUse, nil
|
|
|
}
|
|
|
|
|
|
-func getChannelQuery(group string, model string, retry int) *gorm.DB {
|
|
|
+func getChannelQuery(group string, model string, retry int) (*gorm.DB, error) {
|
|
|
maxPrioritySubQuery := DB.Model(&Ability{}).Select("MAX(priority)").Where(commonGroupCol+" = ? and model = ? and enabled = ?", group, model, true)
|
|
|
channelQuery := DB.Where(commonGroupCol+" = ? and model = ? and enabled = ? and priority = (?)", group, model, true, maxPrioritySubQuery)
|
|
|
if retry != 0 {
|
|
|
priority, err := getPriority(group, model, retry)
|
|
|
if err != nil {
|
|
|
- common.SysError(fmt.Sprintf("Get priority failed: %s", err.Error()))
|
|
|
+ return nil, err
|
|
|
} else {
|
|
|
channelQuery = DB.Where(commonGroupCol+" = ? and model = ? and enabled = ? and priority = ?", group, model, true, priority)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return channelQuery
|
|
|
+ return channelQuery, nil
|
|
|
}
|
|
|
|
|
|
func GetRandomSatisfiedChannel(group string, model string, retry int) (*Channel, error) {
|
|
|
var abilities []Ability
|
|
|
|
|
|
var err error = nil
|
|
|
- channelQuery := getChannelQuery(group, model, retry)
|
|
|
+ channelQuery, err := getChannelQuery(group, model, retry)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
if common.UsingSQLite || common.UsingPostgreSQL {
|
|
|
err = channelQuery.Order("weight DESC").Find(&abilities).Error
|
|
|
} else {
|