mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-19 02:37:24 +08:00
54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
package models
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"yunion.io/x/pkg/errors"
|
|
"yunion.io/x/sqlchemy"
|
|
|
|
apis "yunion.io/x/onecloud/pkg/apis/llm"
|
|
"yunion.io/x/onecloud/pkg/cloudcommon/db"
|
|
"yunion.io/x/onecloud/pkg/mcclient"
|
|
)
|
|
|
|
type SMountedModelsResourceManager struct {
|
|
}
|
|
|
|
type SMountedModelsResource struct {
|
|
MountedModels []string `charset:"utf8" list:"user" update:"user" create:"optional"`
|
|
}
|
|
|
|
func (manager *SMountedModelsResourceManager) ListItemFilter(
|
|
ctx context.Context,
|
|
q *sqlchemy.SQuery,
|
|
userCred mcclient.TokenCredential,
|
|
input apis.MountedModelResourceListInput,
|
|
) (*sqlchemy.SQuery, error) {
|
|
if len(input.MountedModels) > 0 {
|
|
q = q.ContainsAny("mounted_models", input.MountedModels)
|
|
}
|
|
return q, nil
|
|
}
|
|
|
|
type MountedModelModelManager interface {
|
|
IsPremountedModelName(fullModelName string) (bool, error)
|
|
}
|
|
|
|
func (manager *SVolumeManager) IsPremountedModelName(fullModelName string) (bool, error) {
|
|
return isPremountedModelName(manager, fullModelName)
|
|
}
|
|
|
|
func (manager *SLLMSkuManager) IsPremountedModelName(fullModelName string) (bool, error) {
|
|
return isPremountedModelName(manager, fullModelName)
|
|
}
|
|
|
|
func isPremountedModelName(manager db.IModelManager, fullModelName string) (bool, error) {
|
|
q := manager.Query().Contains("mounted_models", fmt.Sprintf("%q", fullModelName))
|
|
cnt, err := q.CountWithError()
|
|
if err != nil {
|
|
return false, errors.Wrap(err, "CountWithError")
|
|
}
|
|
return cnt > 0, nil
|
|
}
|