PromptTemplateController.java 3.2 KB
// ai/controller/PromptTemplateController.java
package com.aigeo.ai.controller;

import com.aigeo.ai.entity.PromptTemplate;
import com.aigeo.ai.service.PromptTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

@RestController
@RequestMapping("/api/prompt-templates")
public class PromptTemplateController {
    
    @Autowired
    private PromptTemplateService promptTemplateService;
    
    @GetMapping
    public List<PromptTemplate> getAllTemplates() {
        return promptTemplateService.getAllTemplates();
    }
    
    @GetMapping("/{id}")
    public ResponseEntity<PromptTemplate> getTemplateById(@PathVariable Integer id) {
        Optional<PromptTemplate> template = promptTemplateService.getTemplateById(id);
        return template.map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
    
    @GetMapping("/company/{companyId}")
    public List<PromptTemplate> getTemplatesByCompanyId(@PathVariable Integer companyId) {
        return promptTemplateService.getTemplatesByCompanyId(companyId);
    }
    
    @GetMapping("/system")
    public List<PromptTemplate> getSystemTemplates() {
        return promptTemplateService.getSystemTemplates();
    }
    
    @GetMapping("/active")
    public List<PromptTemplate> getActiveTemplates() {
        return promptTemplateService.getActiveTemplates();
    }
    
    @GetMapping("/company/{companyId}/active")
    public List<PromptTemplate> getActiveTemplatesByCompanyId(@PathVariable Integer companyId) {
        return promptTemplateService.getActiveTemplatesByCompanyId(companyId);
    }
    
    @PostMapping
    public PromptTemplate createTemplate(@RequestBody PromptTemplate template) {
        return promptTemplateService.saveTemplate(template);
    }
    
    @PutMapping("/{id}")
    public ResponseEntity<PromptTemplate> updateTemplate(@PathVariable Integer id, 
                                                         @RequestBody PromptTemplate templateDetails) {
        Optional<PromptTemplate> template = promptTemplateService.getTemplateById(id);
        if (template.isPresent()) {
            PromptTemplate updatedTemplate = template.get();
            updatedTemplate.setName(templateDetails.getName());
            updatedTemplate.setDescription(templateDetails.getDescription());
            updatedTemplate.setLanguage(templateDetails.getLanguage());
            updatedTemplate.setContent(templateDetails.getContent());
            updatedTemplate.setVariables(templateDetails.getVariables());
            updatedTemplate.setIsActive(templateDetails.getIsActive());
            
            PromptTemplate savedTemplate = promptTemplateService.saveTemplate(updatedTemplate);
            return ResponseEntity.ok(savedTemplate);
        } else {
            return ResponseEntity.notFound().build();
        }
    }
    
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteTemplate(@PathVariable Integer id) {
        promptTemplateService.deleteTemplate(id);
        return ResponseEntity.noContent().build();
    }
}