@@ -118,6 +118,12 @@ private Mono<Integer> processJsonContent(String jsonContent) {
118118 // Meta provider gibi özel formatlar için
119119 if (itemMap .containsKey ("provider" ) && itemMap .containsKey ("models" ) && itemMap .get ("models" ) instanceof List ) {
120120 String providerName = (String ) itemMap .get ("provider" );
121+ // Provider adı null kontrolü - null ise bu provider'ı atla
122+ if (providerName == null || providerName .trim ().isEmpty ()) {
123+ log .warn ("Provider ismi boş veya null olan bir provider bulundu. Bu provider atlanıyor." );
124+ continue ;
125+ }
126+
121127 Integer contextLength = itemMap .containsKey ("contextLength" ) ?
122128 ((Number )itemMap .get ("contextLength" )).intValue () : null ;
123129
@@ -127,6 +133,15 @@ private Mono<Integer> processJsonContent(String jsonContent) {
127133
128134 // Provider kaydetme
129135 Mono <Void > providerTask = providerRepository .save (provider )
136+ .onErrorResume (e -> {
137+ // Bu provider zaten varsa hatayı yut ve provider'ı getir
138+ if (e instanceof org .springframework .dao .DuplicateKeyException ) {
139+ log .info ("Provider '{}' zaten var, yeniden kullanılıyor" , providerName );
140+ return providerRepository .findById (providerName );
141+ }
142+ log .error ("Provider kaydedilirken hata: {}" , e .getMessage ());
143+ return Mono .error (e );
144+ })
130145 .flatMap (savedProvider -> {
131146 List <Object > modelsList = (List <Object >) itemMap .get ("models" );
132147 List <Mono <AIModel >> modelSaveOps = new ArrayList <>();
@@ -135,9 +150,16 @@ private Mono<Integer> processJsonContent(String jsonContent) {
135150 if (modelObj instanceof java .util .Map ) {
136151 java .util .Map <String , Object > modelMap = (java .util .Map <String , Object >) modelObj ;
137152
153+ // Model ID kontrolü
154+ String modelId = String .valueOf (modelMap .get ("modelId" ));
155+ if (modelId == null || "null" .equals (modelId )) {
156+ log .warn ("Geçersiz modelId bulundu, model atlanıyor" );
157+ continue ;
158+ }
159+
138160 AIModel model = AIModel .builder ()
139- .id (String . valueOf ( modelMap . get ( " modelId" )) )
140- .modelId (String . valueOf ( modelMap . get ( " modelId" )) )
161+ .id (modelId )
162+ .modelId (modelId )
141163 .modelName (String .valueOf (modelMap .get ("name" )))
142164 .provider (savedProvider .getName ())
143165 .maxInputTokens (modelMap .containsKey ("maxTokens" ) ?
@@ -146,12 +168,24 @@ private Mono<Integer> processJsonContent(String jsonContent) {
146168 .build ();
147169
148170 modelSaveOps .add (modelRepository .save (model )
149- .doOnSuccess (m -> modelCount .incrementAndGet ()));
171+ .doOnSuccess (m -> modelCount .incrementAndGet ())
172+ .onErrorResume (e -> {
173+ log .error ("Model '{}' kaydedilirken hata: {}" , modelId , e .getMessage ());
174+ return Mono .empty ();
175+ }));
150176 }
151177 }
152178
179+ if (modelSaveOps .isEmpty ()) {
180+ return Mono .empty ();
181+ }
182+
153183 return Flux .concat (modelSaveOps ).then ();
154184 })
185+ .onErrorResume (e -> {
186+ log .error ("Provider '{}' işlenirken hata: {}" , providerName , e .getMessage ());
187+ return Mono .empty ();
188+ })
155189 .then ();
156190
157191 processTasks .add (providerTask );
@@ -160,22 +194,47 @@ private Mono<Integer> processJsonContent(String jsonContent) {
160194 else if (itemMap .containsKey ("id" ) && itemMap .containsKey ("modelId" )) {
161195 AIModel model = objectMapper .convertValue (obj , AIModel .class );
162196
163- // Eğer provider yoksa varsayılan bir değer belirle
164- if (model .getProvider () == null && itemMap .containsKey ("provider" )) {
165- model .setProvider ((String ) itemMap .get ("provider" ));
197+ // Provider adı kontrolü
198+ String providerName = model .getProvider ();
199+ if (providerName == null || providerName .trim ().isEmpty ()) {
200+ if (itemMap .containsKey ("provider" )) {
201+ providerName = (String ) itemMap .get ("provider" );
202+ }
203+
204+ // Hala null ise varsayılan değer ata
205+ if (providerName == null || providerName .trim ().isEmpty ()) {
206+ log .warn ("Model '{}' için provider adı bulunamadı, 'Bilinmeyen' olarak ayarlanıyor" ,
207+ model .getModelId ());
208+ providerName = "Bilinmeyen" ;
209+ model .setProvider (providerName );
210+ }
166211 }
167212
168213 // Provider'ı kaydet
214+ final String finalProviderName = providerName ;
169215 Provider provider = Provider .builder ()
170- .name (model . getProvider () )
216+ .name (finalProviderName )
171217 .build ();
172218
173219 Mono <Void > modelTask = providerRepository .save (provider )
220+ .onErrorResume (e -> {
221+ // Bu provider zaten varsa hatayı yut ve provider'ı getir
222+ if (e instanceof org .springframework .dao .DuplicateKeyException ) {
223+ log .info ("Provider '{}' zaten var, yeniden kullanılıyor" , finalProviderName );
224+ return providerRepository .findById (finalProviderName );
225+ }
226+ log .error ("Provider kaydedilirken hata: {}" , e .getMessage ());
227+ return Mono .error (e );
228+ })
174229 .then (modelRepository .save (model ))
175230 .doOnSuccess (savedModel -> {
176231 modelCount .incrementAndGet ();
177232 log .debug ("Model kaydedildi: {}" , savedModel .getModelId ());
178233 })
234+ .onErrorResume (e -> {
235+ log .error ("Model '{}' kaydedilirken hata: {}" , model .getModelId (), e .getMessage ());
236+ return Mono .empty ();
237+ })
179238 .then ();
180239
181240 processTasks .add (modelTask );
@@ -194,7 +253,7 @@ else if (itemMap.containsKey("id") && itemMap.containsKey("modelId")) {
194253 return Mono .just (0 );
195254 }
196255
197- return Flux .concat (processTasks )
256+ return Flux .mergeSequential (processTasks )
198257 .then (Mono .just (modelCount .get ()));
199258
200259 } catch (Exception e ) {
0 commit comments