View Javadoc
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  }