package config import ( "errors" "time" "gorm.io/gorm" ) // CreateProvider 创建供应商 func CreateProvider(provider *Provider) error { db := GetDB() if db == nil { return errors.New("数据库未初始化") } provider.CreatedAt = time.Now() provider.UpdatedAt = time.Now() return db.Create(provider).Error } // GetProvider 获取供应商 func GetProvider(id string, maskKey bool) (*Provider, error) { db := GetDB() if db == nil { return nil, errors.New("数据库未初始化") } var provider Provider err := db.First(&provider, "id = ?", id).Error if err != nil { return nil, err } if maskKey { provider.MaskAPIKey() } return &provider, nil } // ListProviders 列出所有供应商 func ListProviders() ([]Provider, error) { db := GetDB() if db == nil { return nil, errors.New("数据库未初始化") } var providers []Provider err := db.Find(&providers).Error if err != nil { return nil, err } // 掩码所有 API Key for i := range providers { providers[i].MaskAPIKey() } return providers, nil } // UpdateProvider 更新供应商 func UpdateProvider(id string, updates map[string]interface{}) error { db := GetDB() if db == nil { return errors.New("数据库未初始化") } updates["updated_at"] = time.Now() result := db.Model(&Provider{}).Where("id = ?", id).Updates(updates) if result.Error != nil { return result.Error } if result.RowsAffected == 0 { return gorm.ErrRecordNotFound } return nil } // DeleteProvider 删除供应商 func DeleteProvider(id string) error { db := GetDB() if db == nil { return errors.New("数据库未初始化") } result := db.Delete(&Provider{}, "id = ?", id) if result.Error != nil { return result.Error } if result.RowsAffected == 0 { return gorm.ErrRecordNotFound } return nil }