@@ -504,10 +504,11 @@ def add_client():
504
504
if combiner is None :
505
505
return jsonify ({"success" : False , "message" : "No combiner available." }), 400
506
506
507
- if db .client_store .get (client_id ) is None :
508
- logger . info ( "Adding client {}" . format ( client_id ) )
507
+ existing_client = db .client_store .get (client_id )
508
+ last_seen = datetime . now ( )
509
509
510
- last_seen = datetime .now ()
510
+ if existing_client is None :
511
+ logger .info ("Adding client {}" .format (client_id ))
511
512
512
513
new_client = ClientDTO (
513
514
client_id = client_id ,
@@ -520,8 +521,27 @@ def add_client():
520
521
last_seen = last_seen ,
521
522
)
522
523
523
- added_client = db .client_store .add (new_client )
524
- client_id = added_client .client_id
524
+ try :
525
+ added_client = db .client_store .add (new_client )
526
+ client_id = added_client .client_id
527
+ except Exception as e :
528
+ logger .error (f"Failed to add new client: { e } " )
529
+ return jsonify ({"success" : False , "message" : "Failed to add new client" }), 500
530
+ else :
531
+ logger .info ("Client {} already exists, updating client object" .format (client_id ))
532
+ existing_client .name = name
533
+ existing_client .combiner = combiner .name
534
+ existing_client .combiner_preferred = preferred_combiner
535
+ existing_client .ip = remote_addr
536
+ existing_client .status = "available"
537
+ existing_client .package = package
538
+ existing_client .last_seen = last_seen
539
+
540
+ try :
541
+ db .client_store .update (existing_client )
542
+ except Exception as e :
543
+ logger .error (f"Failed to update existing client: { e } " )
544
+ return jsonify ({"success" : False , "message" : "Failed to update existing client" }), 500
525
545
526
546
payload = {
527
547
"status" : "assigned" ,
0 commit comments