GeneratedWebsitePageController.java 3.2 KB
// website/controller/GeneratedWebsitePageController.java
package com.aigeo.website.controller;

import com.aigeo.website.entity.GeneratedWebsitePage;
import com.aigeo.website.service.GeneratedWebsitePageService;
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/generated-website-pages")
public class GeneratedWebsitePageController {
    
    @Autowired
    private GeneratedWebsitePageService generatedWebsitePageService;
    
    @GetMapping("/project/{projectId}")
    public List<GeneratedWebsitePage> getPagesByProjectId(@PathVariable Integer projectId) {
        return generatedWebsitePageService.getPagesByProjectId(projectId);
    }
    
    @GetMapping("/task/{taskId}")
    public List<GeneratedWebsitePage> getPagesByTaskId(@PathVariable Integer taskId) {
        return generatedWebsitePageService.getPagesByTaskId(taskId);
    }
    
    @GetMapping("/pageable/{pageableType}/{pageableId}")
    public List<GeneratedWebsitePage> getPagesByPageableTypeAndPageableId(
            @PathVariable String pageableType, @PathVariable Integer pageableId) {
        return generatedWebsitePageService.getPagesByPageableTypeAndPageableId(pageableType, pageableId);
    }
    
    @GetMapping("/project/{projectId}/file/{fileName}")
    public ResponseEntity<GeneratedWebsitePage> getPageByProjectIdAndFileName(
            @PathVariable Integer projectId, @PathVariable String fileName) {
        Optional<GeneratedWebsitePage> page = generatedWebsitePageService.getPageByProjectIdAndFileName(projectId, fileName);
        return page.map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
    
    @GetMapping("/{id}")
    public ResponseEntity<GeneratedWebsitePage> getPageById(@PathVariable Integer id) {
        Optional<GeneratedWebsitePage> page = generatedWebsitePageService.getPageById(id);
        return page.map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
    
    @PostMapping
    public GeneratedWebsitePage createPage(@RequestBody GeneratedWebsitePage page) {
        return generatedWebsitePageService.savePage(page);
    }
    
    @PutMapping("/{id}")
    public ResponseEntity<GeneratedWebsitePage> updatePage(@PathVariable Integer id, 
                                                        @RequestBody GeneratedWebsitePage pageDetails) {
        Optional<GeneratedWebsitePage> page = generatedWebsitePageService.getPageById(id);
        if (page.isPresent()) {
            GeneratedWebsitePage updatedPage = page.get();
            updatedPage.setHtmlContent(pageDetails.getHtmlContent());
            
            GeneratedWebsitePage savedPage = generatedWebsitePageService.savePage(updatedPage);
            return ResponseEntity.ok(savedPage);
        } else {
            return ResponseEntity.notFound().build();
        }
    }
    
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deletePage(@PathVariable Integer id) {
        generatedWebsitePageService.deletePage(id);
        return ResponseEntity.noContent().build();
    }
}