1 package fr.tiogars.chat.domains.lmstudio.controllers; 2 3 import org.springframework.http.ResponseEntity; 4 import org.springframework.web.bind.annotation.GetMapping; 5 import org.springframework.web.bind.annotation.PutMapping; 6 import org.springframework.web.bind.annotation.RequestBody; 7 import org.springframework.web.bind.annotation.RequestMapping; 8 import org.springframework.web.bind.annotation.RestController; 9 10 import fr.tiogars.chat.domains.lmstudio.models.LmStudioSettings; 11 import fr.tiogars.chat.domains.lmstudio.services.LmStudioSettingsService; 12 import io.swagger.v3.oas.annotations.Operation; 13 import io.swagger.v3.oas.annotations.security.SecurityRequirement; 14 import io.swagger.v3.oas.annotations.tags.Tag; 15 import jakarta.validation.Valid; 16 17 @RestController 18 @RequestMapping("/api/v1/lmstudio/settings") 19 @Tag(name = "LM Studio", description = "Global LM Studio connection settings. Requires ADMIN.") 20 @SecurityRequirement(name = "bearerAuth") 21 public class LmStudioSettingsController { 22 23 private final LmStudioSettingsService service; 24 25 public LmStudioSettingsController(LmStudioSettingsService service) { 26 this.service = service; 27 } 28 29 @GetMapping 30 @Operation(summary = "Read LM Studio settings, or return 404 when not configured") 31 public ResponseEntity<LmStudioSettings> read() { 32 return service.find().map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); 33 } 34 35 @PutMapping 36 @Operation(summary = "Create or replace LM Studio settings") 37 public LmStudioSettings update(@Valid @RequestBody LmStudioSettings settings) { 38 return service.update(settings); 39 } 40 }