package config import ( "errors" "time" "gorm.io/gorm" ) // CreateModel 创建模型 func CreateModel(model *Model) error { db := GetDB() if db == nil { return errors.New("数据库未初始化") } // 验证供应商是否存在 var provider Provider err := db.First(&provider, "id = ?", model.ProviderID).Error if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return errors.New("供应商不存在") } return err } model.CreatedAt = time.Now() return db.Create(model).Error } // GetModel 获取模型 func GetModel(id string) (*Model, error) { db := GetDB() if db == nil { return nil, errors.New("数据库未初始化") } var model Model err := db.First(&model, "id = ?", id).Error if err != nil { return nil, err } return &model, nil } // ListModels 列出模型 func ListModels(providerID string) ([]Model, error) { db := GetDB() if db == nil { return nil, errors.New("数据库未初始化") } var models []Model var err error if providerID != "" { err = db.Where("provider_id = ?", providerID).Find(&models).Error } else { err = db.Find(&models).Error } if err != nil { return nil, err } return models, nil } // UpdateModel 更新模型 func UpdateModel(id string, updates map[string]interface{}) error { db := GetDB() if db == nil { return errors.New("数据库未初始化") } // 如果更新了 provider_id,验证新供应商是否存在 if providerID, ok := updates["provider_id"].(string); ok { var provider Provider err := db.First(&provider, "id = ?", providerID).Error if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return errors.New("供应商不存在") } return err } } result := db.Model(&Model{}).Where("id = ?", id).Updates(updates) if result.Error != nil { return result.Error } if result.RowsAffected == 0 { return gorm.ErrRecordNotFound } return nil } // DeleteModel 删除模型 func DeleteModel(id string) error { db := GetDB() if db == nil { return errors.New("数据库未初始化") } result := db.Delete(&Model{}, "id = ?", id) if result.Error != nil { return result.Error } if result.RowsAffected == 0 { return gorm.ErrRecordNotFound } return nil }