LmStudioSettingsController.java

package fr.tiogars.chat.domains.lmstudio.controllers;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import fr.tiogars.chat.domains.lmstudio.models.LmStudioSettings;
import fr.tiogars.chat.domains.lmstudio.services.LmStudioSettingsService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;

@RestController
@RequestMapping("/api/v1/lmstudio/settings")
@Tag(name = "LM Studio", description = "Global LM Studio connection settings. Requires ADMIN.")
@SecurityRequirement(name = "bearerAuth")
public class LmStudioSettingsController {

    private final LmStudioSettingsService service;

    public LmStudioSettingsController(LmStudioSettingsService service) {
        this.service = service;
    }

    @GetMapping
    @Operation(summary = "Read LM Studio settings, or return 404 when not configured")
    public ResponseEntity<LmStudioSettings> read() {
        return service.find().map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build());
    }

    @PutMapping
    @Operation(summary = "Create or replace LM Studio settings")
    public LmStudioSettings update(@Valid @RequestBody LmStudioSettings settings) {
        return service.update(settings);
    }
}