From de868e4e4e145584e03d6e870f6b3d5902d55e6f Mon Sep 17 00:00:00 2001 From: JustSong Date: Mon, 18 Sep 2023 23:07:59 +0800 Subject: [PATCH 1/2] fix: fix gorm expression MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 初音控灬 --- model/ability.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/model/ability.go b/model/ability.go index 919de227..ccdbff87 100644 --- a/model/ability.go +++ b/model/ability.go @@ -16,12 +16,12 @@ type Ability struct { func GetRandomSatisfiedChannel(group string, model string) (*Channel, error) { ability := Ability{} 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 { - 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 { - 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 { return nil, err From 1c5bb97a42ea24c5a82fe5d911bbdc824179504d Mon Sep 17 00:00:00 2001 From: JustSong Date: Mon, 18 Sep 2023 23:11:37 +0800 Subject: [PATCH 2/2] fix: fix gorm expression MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 初音控灬 --- model/ability.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/model/ability.go b/model/ability.go index ccdbff87..50972a26 100644 --- a/model/ability.go +++ b/model/ability.go @@ -19,9 +19,9 @@ func GetRandomSatisfiedChannel(group string, model string) (*Channel, error) { 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 { - err = channelQuery.Order("RANDOM()").Limit(1).First(&ability).Error + err = channelQuery.Order("RANDOM()").First(&ability).Error } else { - err = channelQuery.Order("RAND()").Limit(1).First(&ability).Error + err = channelQuery.Order("RAND()").First(&ability).Error } if err != nil { return nil, err