Skip to content

Wiki를 직접 구현해 보는 건 어떨까? #18

@rudeh1253

Description

@rudeh1253

ERD

image

  • 건물 위키는 건물이 등록되는 순간 생성된다.
  • 하나의 건물 위키 페이지는 각 단락을 Node로 하는 Linked List와 같은 형태를 띤다.
  • 단락이 추가될 경우, 단락에 새로운 ID를 부여한다. 단락이 추가될 때, 서로 인접한 두 단락 사이에 삽입된다. 각 단락의 ID를 추가되는 단락의 이전 단락 ID, 다음 단락 ID에 할당한다.
    • 이전 단락 ID가 없는 단락은 그 건물 위키 페이지의 첫 번째 단락이다.
    • 이후 단락 ID가 없는 단락은 그 건물 위키 페이지의 마지막 단락이다.
  • 단락이 삭제될 경우, 그 데이터가 데이터베이스에서 삭제되지 않는다. 대신 삭제 여부가 TRUE로 체크된다.
  • 히스토리는 단락이 수정될 때 추가된다.
    • 히스토리가 하나밖에 없는 단락은 새로 추가된 단락이다.

로직

시작

  • 건물이 등록되면 새로운 위키가 생성된다. 이 시점에 건물 위키 테이블에 데이터가 있지만 단락, 히스토리 테이블에는 그 건물 위키의 데이터가 없다.

조회

  • 특정 건물 위키 ID를 참조하고 있는 단락들을 가져온다. Linked List 형식으로 단락을 순서대로 배열하여 하나의 페이지를 만들어 사용자에게 보여준다.

수정

기존에 있던 단락을 수정할 경우

  • 클라이언트단에서 해당 단락이 수정됐다는 표시를 한다. 이후 수정된 단락만 서버로 보내 데이터 처리를 요청한다.
  • 서버에서는 단락 테이블의 내용을 업데이트하고, 히스토리를 추가한다.

새로운 단락을 추가할 경우

  • 클라이언트단에서 단락이 추가된 위치를 포함하는 데이터를 서버로 보낸다.
  • 서버에서는 해당 단락을 추가하고, 히스토리를 추가한다.

연속된 두 개 이상의 단락을 추가할 경우

  • 클라이언트단에서 연속된 단락들을 서버로 보낸다.
  • 서버에서 각 단락에 ID를 부여하고 이전 단락 ID, 다음 단락 ID를 할당함으로써 단락을 테이블에 추가한다.

단락을 삭제할 경우

  • 클라이언트단에서 삭제된 단락 ID를 서버로 보낸다.
  • 서버에서 삭제된 단락들의 삭제 여부를 TRUE로 체크한다.

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions