WebsiteBuildConfigController.java 2.6 KB
// website/controller/WebsiteBuildConfigController.java
package com.aigeo.website.controller;

import com.aigeo.website.entity.WebsiteBuildConfig;
import com.aigeo.website.service.WebsiteBuildConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.Optional;

@RestController
@RequestMapping("/api/website-build-configs")
public class WebsiteBuildConfigController {
    
    @Autowired
    private WebsiteBuildConfigService websiteBuildConfigService;
    
    @GetMapping("/project/{projectId}")
    public ResponseEntity<WebsiteBuildConfig> getConfigByProjectId(@PathVariable Integer projectId) {
        Optional<WebsiteBuildConfig> config = websiteBuildConfigService.getConfigByProjectId(projectId);
        return config.map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
    
    @GetMapping("/{id}")
    public ResponseEntity<WebsiteBuildConfig> getConfigById(@PathVariable Integer id) {
        Optional<WebsiteBuildConfig> config = websiteBuildConfigService.getConfigById(id);
        return config.map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }
    
    @PostMapping
    public WebsiteBuildConfig createConfig(@RequestBody WebsiteBuildConfig config) {
        return websiteBuildConfigService.saveConfig(config);
    }
    
    @PutMapping("/{id}")
    public ResponseEntity<WebsiteBuildConfig> updateConfig(@PathVariable Integer id, 
                                                        @RequestBody WebsiteBuildConfig configDetails) {
        Optional<WebsiteBuildConfig> config = websiteBuildConfigService.getConfigById(id);
        if (config.isPresent()) {
            WebsiteBuildConfig updatedConfig = config.get();
            updatedConfig.setWebsiteType(configDetails.getWebsiteType());
            updatedConfig.setSiteIdentity(configDetails.getSiteIdentity());
            updatedConfig.setDesignPreferences(configDetails.getDesignPreferences());
            updatedConfig.setSitemapStructure(configDetails.getSitemapStructure());
            
            WebsiteBuildConfig savedConfig = websiteBuildConfigService.saveConfig(updatedConfig);
            return ResponseEntity.ok(savedConfig);
        } else {
            return ResponseEntity.notFound().build();
        }
    }
    
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteConfig(@PathVariable Integer id) {
        websiteBuildConfigService.deleteConfig(id);
        return ResponseEntity.noContent().build();
    }
}