| Warning | ||
|---|---|---|
| ||
Controller에 기재된대로 api의 request / response 형식을 지켜주세요. (DB는 예시로 제공될 뿐 원하는 형태로 구성하는 것을 권장드립니다.) |
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
import javaxjava.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Tableutil.*; import java.util.stream.DateCollectors; @Entity @Table(name = " ") // 테이블 이름 @RestController public class DocumentVersionDocumentVersionController { @Id@Autowired private StringDocumentVersionRepository id;documentVersionRepository; /** private String* name;문서 버전 목록 가져오기 private String json; */ @Column(name = "create_at@PostMapping("/getDocumentVersionList") privatepublic Date createdAt; @Column(name = "doc_id")ResponseEntity<String> getDocumentVersionList(@RequestBody Map<String, Object> request) throws JsonProcessingException { private String docId; String id = public (String) getId() {request.get("id"); List<DocumentVersion> documentVersionList return= documentVersionService.getDocumentVersions(id); } List<Map<String, Object>> publicformattedData void setId(String _id)= documentVersionList.stream().map(version -> { this.id = _id; Map<String, Object> versionData }= new HashMap<>(); public String getName() { versionData.put("id", version.getId()); return name; } public void setName(String name) {versionData.put("date", version.getCreatedAt()); this.name = nameversionData.put("author", version.getName()); } public String getJson() {return versionData; return json;}).collect(Collectors.toList()); } ObjectMapper objectMapper public= voidnew setJsonObjectMapper(String json); { String this.jsonjsonResponse = jsonobjectMapper.writeValueAsString(formattedData); } public Date getCreatedAtreturn ResponseEntity.ok() { return createdAt .header("Content-Type", "application/json; charset=UTF-8") .body(jsonResponse); } public/** void setCreatedAt(Date createdAt) { * 문서 버전 데이터 가져오기 this.createdAt = createdAt; */ } @PostMapping("/getDocumentVersionData") public String getDocIdgetDocumentVersionData()@RequestBody {Map<String, Object> request) throws JsonProcessingException { return docId; } ObjectMapper objectMapper = new public void setDocId(String id) {ObjectMapper(); String this.docIdid = (String) request.get("id"); } } | ||||||
| Code Block | ||||||
| ||||||
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; String json = documentVersionService.getDocumentVersionJson(id); return ResponseEntity.ok() .header("Content-Type", "application/json; charset=UTF-8") .body(json); } /** * 문서 버전 목록데이터 가져오기삭제 */ @PostMapping@DeleteMapping("/getDocumentVersionListgetDocumentVersionData") public ResponseEntity<Map<String, ResponseEntity<String>Object>> getDocumentVersionListdeleteDocumentVersionData(@RequestBody Map<String, Object> request) { String id = (String) request.get("id"); snoteService.deleteDocumentVersion(id); try { return ResponseEntity.ok(Map.of("message", "Document deleted successfully.")); List<DocumentVersion> results = documentVersionRepository.findVersionsByDocId(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); } } |
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
import java.io.*;
import java.nio.charset.Charset;
import java.util.Comparator;
import java.util.List;
@Slf4j
@Service
public class DocumentVersionService {
@Autowired
DocumentVersionModelDao documentVersionModelDao;
@Autowired
SynapUserInfoDao synapUserInfoDao;
public void insertDocumentVersion(String userId, int domainId, String docId, String json) {
documentVersionModelDao.insert(new DocumentVersionModel(userId, domainId, docId, json));
}
public String getDocumentVersionJson(String id) {
return documentVersionModelDao.getDocumentVersionById(id).getJson();
}
public List<DocumentVersionModel> getDocumentVersions(String docId) {
List<DocumentVersionModel> documentVersionModelList = documentVersionModelDao.getDocumentVersionByDocId(docId);
documentVersionModelList.sort(Comparator.comparing(DocumentVersionModel::getUserId));
String currentUserId = "";
String targetUsername = "";
for (DocumentVersionModel model : documentVersionModelList) {
if (!model.getUserId().equals(currentUserId)) {
currentUserId = model.getUserId();
targetUsername = synapUserInfoDao.getUserInfoByUserIdAndDomain(currentUserId, model.getDomainId()).getUserName();
}
model.setUsername(targetUsername);
}
documentVersionModelList.sort(Comparator.comparing(DocumentVersionModel::getId).reversed());
return documentVersionModelList;
}
public void deleteDocumentVersion(String id) {
documentVersionModelDao.delete(id);
}
}
|
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
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 = "doc_id") private String docId; public String getId() { return ResponseEntity.ok(jsonResponse)id; } } public catchvoid setId(ExceptionString e_id) { this.id = _id; return ResponseEntity.status(500).body("{\"message\": \"Internal server error\", \"error\": \"" + e.getMessage() + "\"}");} public String getName() { return }name; } /**public void setName(String name) { * 문서 버전 데이터 가져오기 this.name = name; */ } @PostMapping("/getDocumentVersionData") public String getDocumentVersionData(@RequestBody Map<String, Object> request) throws JsonProcessingException { getJson() { return json; } ObjectMapper objectMapper =public newvoid ObjectMappersetJson(String json); { String idthis.json = (String) request.get("id");json; } DocumentVersion documentVersionpublic =Date documentVersionRepository.findVersionsByIdgetCreatedAt(id); { return objectMapper.writeValueAsString(documentVersion.getJson())createdAt; } public void setCreatedAt(Date createdAt) { /** *this.createdAt 문서= 버전createdAt; 데이터 삭제 } */ public String @DeleteMappinggetDocId("/getDocumentVersionData") { public ResponseEntity<Map<String, Object>> deleteDocumentVersionData(@RequestBody Map<String, Object>return request)docId; { } String idpublic =void setDocId(String) request.get("id"); { trythis.docId {= id; } } |
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import synap.editor.server.model2.DocumentVersion documentVersion = documentVersionRepository.findVersionsById(id); ; import java.util.List; import java.util.Optional; @Repository public interface DocumentVersionRepository extends JpaRepository<DocumentVersion, String> { /** if (documentVersion !=* null)Document {ID에 해당하는 모든 DocumentVersion 객체를 조회 */ List<DocumentVersion> documentVersionRepository.delete(documentVersionfindVersionsByDocId(String docId); /** * 특정 문서 버전 ID에 return ResponseEntity.ok(Map.of("message", "Document deleted successfully."));해당하는 DocumentVersion 객체를 조회 */ DocumentVersion findVersionsById(String id); } 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())); } } } | ||||||
| Code Block | ||||||
| ||||||
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> {
/**
* Document ID에 해당하는 모든 DocumentVersion 객체를 조회
*/
List<DocumentVersion> findVersionsByDocId(String docId);
/**
* 특정 문서 버전 ID에 해당하는 DocumentVersion 객체를 조회
*/
DocumentVersion findVersionsById(String id);
} |
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="DocumentVersion">
<resultMap id="documentVersion" class="synap.editor.server.model2.DocumentVersion">
<result property="id" column="id" columnIndex="1"/>
<result property="userId" column="user_id" columnIndex="2"/>
<result property="docId" column="doc_id" columnIndex="3"/>
<result property="json" column="json" columnIndex="4"/>
<result property="createdAt" column="created_at" columnIndex="5"/>
</resultMap>
<resultMap id="documentVersionList" class="synap.editor.server.model2.DocumentVersion">
<result property="id" column="id" columnIndex="1"/>
<result property="userId" column="user_id" columnIndex="2"/>
<result property="docId" column="doc_id" columnIndex="3"/>
<result property="createdAt" column="created_at" columnIndex="4"/>
</resultMap>
<insert id="insert">
INSERT INTO
revision_note_version(user_id, domain_id, doc_id, json, created_at)
VALUES
(#userId#, #domainId#, #docId# , #json#, SYSDATE())
</insert>
<update id="remove">
UPDATE revision_note_version
SET removed = true
WHERE id = #id#
</update>
<update id="updateRemovedForOverflow" parameterClass="java.lang.Long">
UPDATE revision_note_version rv
JOIN (
SELECT id
FROM revision_note_version
WHERE doc_id = #docId#
AND removed = false
ORDER BY id DESC
LIMIT 1 OFFSET 500
) AS subquery
ON rv.id = subquery.id
SET rv.removed = true;
</update>
<select id="getNoteVersionById" resultMap="revisionNoteVersion">
SELECT id, user_id, domain_id, doc_id, json, created_at, removed
FROM revision_note_version
WHERE
id = #id#
</select>
<select id="getNoteVersionByDocId" resultClass="java.util.List" resultMap="revisionNoteVersionList">
SELECT id, user_id, domain_id, doc_id, created_at, removed
FROM revision_note_version
WHERE
doc_id = #docId#
AND
removed = false
ORDER BY id DESC
LIMIT 500
</select>
</sqlMap>
|