| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package model
- import (
- "github.com/QuantumNous/new-api/common"
- "github.com/QuantumNous/new-api/setting/ratio_setting"
- )
- func IsChannelEnabledForGroupModel(group string, modelName string, channelID int) bool {
- if group == "" || modelName == "" || channelID <= 0 {
- return false
- }
- if !common.MemoryCacheEnabled {
- return isChannelEnabledForGroupModelDB(group, modelName, channelID)
- }
- channelSyncLock.RLock()
- defer channelSyncLock.RUnlock()
- if group2model2channels == nil {
- return false
- }
- if isChannelIDInList(group2model2channels[group][modelName], channelID) {
- return true
- }
- normalized := ratio_setting.FormatMatchingModelName(modelName)
- if normalized != "" && normalized != modelName {
- return isChannelIDInList(group2model2channels[group][normalized], channelID)
- }
- return false
- }
- func IsChannelEnabledForAnyGroupModel(groups []string, modelName string, channelID int) bool {
- if len(groups) == 0 {
- return false
- }
- for _, g := range groups {
- if IsChannelEnabledForGroupModel(g, modelName, channelID) {
- return true
- }
- }
- return false
- }
- func isChannelEnabledForGroupModelDB(group string, modelName string, channelID int) bool {
- var count int64
- err := DB.Model(&Ability{}).
- Where(commonGroupCol+" = ? and model = ? and channel_id = ? and enabled = ?", group, modelName, channelID, true).
- Count(&count).Error
- if err == nil && count > 0 {
- return true
- }
- normalized := ratio_setting.FormatMatchingModelName(modelName)
- if normalized == "" || normalized == modelName {
- return false
- }
- count = 0
- err = DB.Model(&Ability{}).
- Where(commonGroupCol+" = ? and model = ? and channel_id = ? and enabled = ?", group, normalized, channelID, true).
- Count(&count).Error
- return err == nil && count > 0
- }
- func isChannelIDInList(list []int, channelID int) bool {
- for _, id := range list {
- if id == channelID {
- return true
- }
- }
- return false
- }
|