@@ -2,6 +2,7 @@ package model
2
2
3
3
import (
4
4
"github.com/songquanpeng/one-api/common"
5
+ "gorm.io/gorm"
5
6
"strings"
6
7
)
7
8
@@ -13,7 +14,7 @@ type Ability struct {
13
14
Priority * int64 `json:"priority" gorm:"bigint;default:0;index"`
14
15
}
15
16
16
- func GetRandomSatisfiedChannel (group string , model string ) (* Channel , error ) {
17
+ func GetRandomSatisfiedChannel (group string , model string , ignoreFirstPriority bool ) (* Channel , error ) {
17
18
ability := Ability {}
18
19
groupCol := "`group`"
19
20
trueVal := "1"
@@ -23,8 +24,13 @@ func GetRandomSatisfiedChannel(group string, model string) (*Channel, error) {
23
24
}
24
25
25
26
var err error = nil
26
- maxPrioritySubQuery := DB .Model (& Ability {}).Select ("MAX(priority)" ).Where (groupCol + " = ? and model = ? and enabled = " + trueVal , group , model )
27
- channelQuery := DB .Where (groupCol + " = ? and model = ? and enabled = " + trueVal + " and priority = (?)" , group , model , maxPrioritySubQuery )
27
+ var channelQuery * gorm.DB
28
+ if ignoreFirstPriority {
29
+ channelQuery = DB .Where (groupCol + " = ? and model = ? and enabled = " + trueVal , group , model )
30
+ } else {
31
+ maxPrioritySubQuery := DB .Model (& Ability {}).Select ("MAX(priority)" ).Where (groupCol + " = ? and model = ? and enabled = " + trueVal , group , model )
32
+ channelQuery = DB .Where (groupCol + " = ? and model = ? and enabled = " + trueVal + " and priority = (?)" , group , model , maxPrioritySubQuery )
33
+ }
28
34
if common .UsingSQLite || common .UsingPostgreSQL {
29
35
err = channelQuery .Order ("RANDOM()" ).First (& ability ).Error
30
36
} else {
0 commit comments