diff --git a/controller/channel.go b/controller/channel.go index 83755333..d272d7b3 100644 --- a/controller/channel.go +++ b/controller/channel.go @@ -63,7 +63,7 @@ func GetAllChannels(c *gin.Context) { } for _, tag := range tags { if tag != nil && *tag != "" { - tagChannel, err := model.GetChannelsByTag(*tag) + tagChannel, err := model.GetChannelsByTag(*tag, idSort) if err == nil { channelData = append(channelData, tagChannel...) } @@ -181,7 +181,7 @@ func SearchChannels(c *gin.Context) { } for _, tag := range tags { if tag != nil && *tag != "" { - tagChannel, err := model.GetChannelsByTag(*tag) + tagChannel, err := model.GetChannelsByTag(*tag, idSort) if err == nil { channelData = append(channelData, tagChannel...) } diff --git a/main.go b/main.go index 2a62309a..763a953e 100644 --- a/main.go +++ b/main.go @@ -33,7 +33,7 @@ var indexPage []byte func main() { err := godotenv.Load(".env") if err != nil { - common.SysLog("Can't load .env file") + common.SysError("failed to load .env file: " + err.Error()) } common.SetupLogger() diff --git a/model/channel.go b/model/channel.go index 48408f1d..09094611 100644 --- a/model/channel.go +++ b/model/channel.go @@ -100,9 +100,13 @@ func GetAllChannels(startIdx int, num int, selectAll bool, idSort bool) ([]*Chan return channels, err } -func GetChannelsByTag(tag string) ([]*Channel, error) { +func GetChannelsByTag(tag string, idSort bool) ([]*Channel, error) { var channels []*Channel - err := DB.Where("tag = ?", tag).Find(&channels).Error + order := "priority desc" + if idSort { + order = "id desc" + } + err := DB.Where("tag = ?", tag).Order(order).Find(&channels).Error return channels, err } @@ -362,7 +366,7 @@ func EditChannelByTag(tag string, newTag *string, modelMapping *string, models * return err } if shouldReCreateAbilities { - channels, err := GetChannelsByTag(updatedTag) + channels, err := GetChannelsByTag(updatedTag, false) if err == nil { for _, channel := range channels { err = channel.UpdateAbilities() @@ -450,10 +454,13 @@ func SearchTags(keyword string, group string, model string, idSort bool) ([]*str args = append(args, common.String2Int(keyword), "%"+keyword+"%", keyword, "%"+model+"%") } - err := baseQuery.Where(whereClause, args...). - Select("DISTINCT tag"). + subQuery := baseQuery.Where(whereClause, args...). + Select("tag"). Where("tag != ''"). - Order(order). + Order(order) + + err := DB.Table("(?) as sub", subQuery). + Select("DISTINCT tag"). Find(&tags).Error if err != nil {