import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import synap.editor.server.model2.DocumentVersion;
import synap.editor.server.repository.DocumentVersionRepository;
import java.util.*;
import java.util.stream.Collectors;
@RestController
public class DocumentVersionController {
@Autowired
private DocumentVersionRepository documentVersionRepository;
/**
* 문서 버전 목록 가져오기
*/
@PostMapping("/getDocumentVersionList")
public ResponseEntity<String> getDocumentVersionList(@RequestBody Map<String, Object> request) {
String id = (String) request.get("id");
try {
List<DocumentVersion> results = documentVersionRepository.findVersionsBydocIdfindVersionsByDocId(id);
// 결과를 새로운 형식으로 변환 (id, createdAt, name)
List<Map<String, Object>> formattedData = results.stream().map(version -> {
Map<String, Object> versionData = new HashMap<>();
versionData.put("id", version.getId());
versionData.put("date", version.getCreatedAt());
versionData.put("author", version.getName());
return versionData;
}).collect(Collectors.toList());
ObjectMapper objectMapper = new ObjectMapper();
String jsonResponse = objectMapper.writeValueAsString(formattedData);
return ResponseEntity.ok(jsonResponse);
} catch (Exception e) {
return ResponseEntity.status(500).body("{\"message\": \"Internal server error\", \"error\": \"" + e.getMessage() + "\"}");
}
}
/**
* 문서 버전 데이터 가져오기
*/
@PostMapping("/getDocumentVersionData")
public String getDocumentVersionData(@RequestBody Map<String, Object> request) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
String id = (String) request.get("id");
DocumentVersion documentVersion = documentVersionRepository.findVersionsById(id);
return objectMapper.writeValueAsString(documentVersion.getJson());
}
/**
* 문서 버전 데이터 삭제
*/
@DeleteMapping("/getDocumentVersionData")
public ResponseEntity<Map<String, Object>> deleteDocumentVersionData(@RequestBody Map<String, Object> request) {
String id = (String) request.get("id");
try {
DocumentVersion documentVersion = documentVersionRepository.findVersionsById(id);
if (documentVersion != null) {
documentVersionRepository.delete(documentVersion);
return ResponseEntity.ok(Map.of("message", "Document deleted successfully."));
} else {
return ResponseEntity.status(404).body(Map.of("message", "Document not found."));
}
} catch (Exception e) {
return ResponseEntity.status(500).body(Map.of("message", "Internal server error", "error", e.getMessage()));
}
}
} |