Update applies a sparse provider patch.
(ctx context.Context, name string, patch ProviderPatch)
| 177 | |
| 178 | // Update applies a sparse provider patch. |
| 179 | func (api ProviderAPI) Update(ctx context.Context, name string, patch ProviderPatch) (Provider, error) { |
| 180 | if err := api.prepareProviderOperation(); err != nil { |
| 181 | return Provider{}, err |
| 182 | } |
| 183 | providerPatch := providers.Patch{ |
| 184 | Endpoint: patch.Endpoint, |
| 185 | APIKey: patch.APIKey, |
| 186 | APIKeyEnv: patch.APIKeyEnv, |
| 187 | Description: patch.Description, |
| 188 | ListModelsCmd: patch.ListModelsCmd, |
| 189 | KeepProxyConfig: patch.KeepProxyConfig, |
| 190 | UseProxy: patch.UseProxy, |
| 191 | Enabled: patch.Enabled, |
| 192 | Clients: patch.Clients, |
| 193 | Models: patch.Models, |
| 194 | } |
| 195 | if patch.SupportedClient != nil { |
| 196 | providerPatch.Clients = &providers.ListPatch{Op: providers.ListOpReplace, Items: splitClients(*patch.SupportedClient)} |
| 197 | } |
| 198 | store := api.store() |
| 199 | if err := store.UpdateProvider(ctx, name, providerPatch); err != nil { |
| 200 | return Provider{}, err |
| 201 | } |
| 202 | file, err := store.ListProviders(ctx) |
| 203 | if err != nil { |
| 204 | return Provider{}, err |
| 205 | } |
| 206 | return providerFromEndpoint(name, file.Endpoints[name], api.getenv()), nil |
| 207 | } |
| 208 | |
| 209 | // Remove deletes a provider. |
| 210 | func (api ProviderAPI) Remove(ctx context.Context, name string) (OperationResult, error) { |