11# SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
22# SPDX-License-Identifier: Apache-2.0
33
4- from data_designer .cli .repositories .provider_repository import ProviderRepository
5- from data_designer .engine . model_provider import ModelProvider , ModelProviderRegistry
4+ from data_designer .cli .repositories .provider_repository import ModelProviderRegistry , ProviderRepository
5+ from data_designer .config . models import ModelProvider
66
77
88class ProviderService :
@@ -27,22 +27,12 @@ def add(self, provider: ModelProvider) -> None:
2727 Raises:
2828 ValueError: If provider name already exists
2929 """
30- registry = self .repository .load ()
31-
32- if registry :
33- # Business rule: No duplicate names
34- if any (p .name == provider .name for p in registry .providers ):
35- raise ValueError (f"Provider '{ provider .name } ' already exists" )
36-
37- registry .providers .append (provider )
38- else :
39- # Create new registry with first provider
40- registry = ModelProviderRegistry (providers = [provider ], default = provider .name )
30+ registry = self .repository .load () or ModelProviderRegistry (providers = [], default = None )
4131
42- # Business rule: First provider is default (for existing registries adding first provider)
43- if len (registry .providers ) == 1 and registry .default is None :
44- registry .default = provider .name
32+ if any (p .name == provider .name for p in registry .providers ):
33+ raise ValueError (f"Provider '{ provider .name } ' already exists" )
4534
35+ registry .providers .append (provider )
4636 self .repository .save (registry )
4737
4838 def update (self , original_name : str , updated_provider : ModelProvider ) -> None :
@@ -63,15 +53,12 @@ def update(self, original_name: str, updated_provider: ModelProvider) -> None:
6353 if index is None :
6454 raise ValueError (f"Provider '{ original_name } ' not found" )
6555
66- # Business rule: Name change must not conflict
6756 if updated_provider .name != original_name :
6857 if any (p .name == updated_provider .name for p in registry .providers ):
6958 raise ValueError (f"Provider name '{ updated_provider .name } ' already exists" )
7059
71- # Update
7260 registry .providers [index ] = updated_provider
7361
74- # Business rule: Update default if name changed
7562 if registry .default == original_name and updated_provider .name != original_name :
7663 registry .default = updated_provider .name
7764
@@ -90,14 +77,11 @@ def delete(self, name: str) -> None:
9077 if not any (p .name == name for p in registry .providers ):
9178 raise ValueError (f"Provider '{ name } ' not found" )
9279
93- # Remove provider
9480 registry .providers = [p for p in registry .providers if p .name != name ]
9581
96- # Business rule: Update default if deleted
9782 if registry .default == name :
9883 registry .default = registry .providers [0 ].name if registry .providers else None
9984
100- # Business rule: Delete file if no providers left
10185 if registry .providers :
10286 self .repository .save (registry )
10387 else :
0 commit comments