Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »


DocumentVersion.java
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;

@Entity
@Table(name = " ") // 테이블 이름
public class DocumentVersion {

    @Id
    private String id;
    private String name;
    private String json;
    @Column(name = "create_at")
    private Date createdAt;
    @Column(name = "list_id")
    private String listId;
    public String getId() {
        return id;
    }

    public void setId(String _id) {
        this.id = _id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getJson() {
        return json;
    }

    public void setJson(String json) {
        this.json = json;
    }

    public Date getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(Date createdAt) {
        this.createdAt = createdAt;
    }

    public String getListId() {
        return listId;
    }

    public void setListId(String id) {
        this.listId = id;
    }
}


DocumentVersionController.java
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.findVersionsByListId(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()));
        }
    }
}


DocumentVersionRepository.java
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
import synap.editor.server.model2.DocumentVersion;

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

@Repository
public interface DocumentVersionRepository extends JpaRepository<DocumentVersion, String> {
    /**
     * List ID에 해당하는 모든 DocumentVersion 객체를 조회
     */
    List<DocumentVersion> findVersionsByListId(String listId);

    /**
     * 특정 문서 버전 ID에 해당하는 DocumentVersion 객체를 조회
     */
    DocumentVersion findVersionsById(String id);
}
  • No labels