์ฃผ์ ์์
- erd ์ฌ๊ตฌ์กฐํ โ 2024-09-02
- move post api ๊ตฌํ ๋ฐ ์ฐ๊ฒฐ(์งํ์ค)๐ซ 2024-09-02
- ์ญ์ post api ๊ตฌํ ๋ฐ ์ฐ๊ฒฐ โ 2024-09-02
- ์์ patch api ๊ตฌํ ๋ฐ ์ฐ๊ฒฐ โ 2024-09-02
ํ์ต ํค์๋
๊ณ ๋ฏผ ๋ฐ ํด๊ฒฐ๊ณผ์
ERD ์ค๊ณ ์ค user_id์ ์ญ์
ERD๋ฅผ ์ง๋ ๊ณผ์ ์์ ๊ณ์ํด์ ํ์ํ ๊น? ํ์ํ์ง ์์๊น? ์ ๋ํ ํ์ ์ ์ค์ค๋ก๋ ๊ฐ์ง์ง ๋ชปํ๋ค๊ณ ์๊ฐํ๋ค.
๋์ ๊ฒฝ์ฐ ๊ธฐ์กด์ username๊ณผ user_id๋ฅผ ๋ฐ๋ก ๋๋ ์์ผ๋ก ๊ด๋ฆฌ๋ฅผ ํ๊ณ , user_id์ ๊ฒฝ์ฐ task_column์์ ์ฐธ์กฐํ๊ณ , todo_cards์์๋ user ํ ์ด๋ธ์ username์ ์ฐธ์กฐํ๋ ๋ฐฉ์์ผ๋ก ERD๋ฅผ ์ค๊ณํ๋ค. ํ์ง๋ง ์ด์ ๋ํด์ user_id์ username์ ์ฐธ์กฐํ๋ ๊ณณ์ด ๋ค๋ฅผ ๋, author์ username์ ํตํด์ ๊ฐ์ ธ์์ผ ํ๋๋ฐ username์ user์ ํ ์ด๋ธ์์ ๊ฐ์ง๊ณ ์ฌ ๊ฒฝ์ฐ task_column์ ๊ฒฝ์ฐ๋ task_columns ํ ์ด๋ธ์ col_name์ ์ฐธ์กฐํ๋ฉด์๋ user_id์ ๊ฒฝ์ฐ๋ user ํ ์ด๋ธ์์ ๊ฐ์ ธ์ค๋ ๊ฒ์ด ์์กด ๊ด๊ณ๊ฐ ์๋ก ๊ฒฐํฉ๋์ด ๋ ํ ์ด๋ธ์ด ๋ณ๊ฒฝ ์๋ง๋ค ์ผ์ผ์ด ๊ฐฑ์ ์ํค๊ฒ ํ๋ ๊ฒ์ด ๋นํจ์จ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค.
๋ฐ๋ผ์ ์ด์ ๋ํ ํด๊ฒฐ์ฑ ์ผ๋ก ๊ธฐ์กด์ user_id๋ฅผ ๋ฌด์กฐ๊ฑด ์จ์ผ ํ๋ค๋ ์๊ฐ์ ๋ฒ๋ฆฌ๊ณ username์ ์ค๋ณต๋์ง ์์ ๊ธฐ๋ณธ ํค๋ก ์ค์ ํ ํ์ task_columns๋ํ username์ ๋ฐ๊ณ , ์ด๋ฅผ ์ฐธ์กฐํ๋ todo_cards ํ ์ด๋ธ ๋ํ task_columns ํ ์ด๋ธ๋ง์ ์ฐธ์กฐํ๊ฒ ํ๋๋ก ์์กด ๊ด๊ณ๋ฅผ ๋ฐ๊พธ์ด ๋ณด์๋ค.

๊ฐ์ข action๋ค์ ๋ํ history ์ ์ฅ ๊ด๊ณ
๊ธฐํ์์๋ move(์ด๋), change(๋ณ๊ฒฝ), submit(๋ฑ๋ก)์ ๋ํ history๊ฐ ๋ช ์๋์ด ์๋ค.(์ญ์ ์ ๊ฐ์ action๋ ๊ณ ๋ คํด๋ณผ ๋ง ํ์ง๋ง ์์ง์ ์ด๋ฅผ ์๊ฐํ ๋จ๊ณ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ์ด์ ๋ํ ๋ด์ฉ์ ์๋ตํ๋ค) ๋ฌธ์ ๋ ์ด๋ฌํ action๋ค์ด ์ด๋ฃจ์ด์ง ๋, ํ์คํ ๋ฆฌ๋ ์ด๋ ์์ ์์ ํจ๊ป ์ ๋ฐ์ดํธ ๋์ด์ผ ํ๋๊ฐ? ์ ๋ํ ๊ณ ๋ฏผ์ด ์๋ค.
- mysql ์์ฒด์์ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ฌ์ฉํ ํ์คํ ๋ฆฌ ๊ธฐ๋ก
- Mysql์์ ์ง์ํ๋ ํธ๋ฆฌ๊ฑฐ(Trigger)์ ํน์ ์กฐ๊ฑด์ด ๋ง์กฑํ๋ฉด ์ ์ ๋ก ์คํ๋๋ ์ผ์ข ์ ์ฅ์น๋ก, ํ๋ฒ ์ค์ ์ ํด๋์ผ๋ฉด ์ด๋ฒคํธ๋ฆฌ์ค๋์ ๋น์ทํ ๋ฐฉ์์ผ๋ก ๋์์ ๊ณ์ ๊ฐ์ํ๋ฉด์ ์กฐ๊ฑด์ ํด๋นํ๋ ๋์์ด ์ํ๋๋ ์๊ฐ ์คํ๋๋ ํน์ง์ ๊ฐ์ง๋ค.
- ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ์คํ ๋ฆฌ๋ฅผ ๊ธฐ๋กํ ๋, ํ์คํ ๋ฆฌ๋ ์๋์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ถ๊ฐ๋๊ธฐ ๋๋ฌธ์ undo, redo๋ฅผ ๊ณ ๋ คํ๋ ์
์ฅ์์ ์ด๋ฅผ ์ค๊ณํด๋ณด์๋ฉด
- undo, redo๋ฅผ ์ํํ๋ฉด ํ์คํ ๋ฆฌ์์ ํด๋นํ๋ ์ ์ ์ ํ์คํ ๋ฆฌ์์ ๊ฐ์ฅ ์ต๊ทผ์ ํ์คํ ๋ฆฌ๋ฅผ ์ ๊ฑฐํ๋ค.
- ํ์คํ ๋ฆฌ๊ฐ ์ ๊ฑฐ๋ ๋ ์คํ๋๋ ํธ๋ฆฌ๊ฑฐ๋ฅผ ๋ฑ๋กํ์ฌ ํธ๋ฆฌ๊ฑฐ๋ฅผ ํตํด history์ undo๋ฅผ ์ํํ๋ค.
- ๊ทธ๋ฌ๋ redo๋ฅผ ์ํํ ๋๋ ์ง๊ธ ์๊ฐํ ์ ๋๋ก๋ history์ ๋ํ History ํ ์ด๋ธ์ ๋ค์ ๋ง๋๋ ๋ฐฉ๋ฒ๋ฐ์๋ ์๊ฐ๋์ง ์๋๋ฐ, history ํ ์ด๋ธ์ ๋ ๊ฐ ๋๋ ๊ฒ์ด ์์์์ผ๋ก๋ ๊ด์ฐฎ์ ๋ณด์ด์ง ์์์ ๊ณ ๋ฏผ์ด๋ค.
- ์จ๋ฉ๋ชจ๋ฆฌ์์ deque๋ฅผ ํตํ history ์ ์ฅ
- mysql์ ํธ๋ฆฌ๊ฑฐ๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐ๋ก history์ Insert๋ฅผ ํตํด์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ด๋ค.
- deque์์ 5๊ฐ์ ๊ฐ์์ ํ์ ๋๊ณ , action์ด ์ด๋ฃจ์ด์ง ๋๋ง๋ค ํ๋์ฉ pushํด์ฃผ๋, ๊ฐ์๋ฅผ ๋์ด๊ฐ๋ฉด ํ๋์ฉ dequeueํด์ฃผ๋ฉด์ ์ด์ ๋ํด ์ค์ง์ ์ผ๋ก db์ ๋ฐ์ํด์ฃผ๋ ๋ฐฉ์์ด๋ค.
- ์ด๋ ๊ฒ ์ค๊ณํ ๊ฒฝ์ฐ, ์จ๋ฉ๋ชจ๋ฆฌ์์ deque๋ฅผ ํ๋ ๋๊ณ Undo์ redo์ ๋ํด์ action๋ง๋ค ์ํํ๋ ๋ก์ง์ ๋ธ๋ผ์ฐ์ ์์ ๋๊ณ ๊ด๋ฆฌํ๊ฒ ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก undo, redo๋ ์๋ก๊ณ ์นจ์ด๋ ์ฐฝ์ ๋๊ฐ๋ค๊ฐ ๋ค์ ์ ์ํ ์์ ์์ด์ง๊ฒ ๋๋ฏ๋ก, ์๋ก๊ณ ์นจ์ด๋ ์ฐฝ ๋ซ๊ธฐ ๋ฑ์ ํ์๋ฅผ ์ด๋ฒคํธ๋ฆฌ์ค๋๋ฅผ ๋ฑ๋กํด๋๊ณ ์๋ค๊ฐ ํด๋น ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด flush๋ฅผ ํตํด์ ๋ชจ๋ history์ ๋ด์ฉ์ ๋ฐ์ํ๋ ๋ก์ง์ผ๋ก ์๋์ํจ๋ค.
- ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ์์ผ๋ก ๊ฐ ๊ฒฝ์ฐ, history์ ๋ํ ์์ธ ๋ก์ง์ด ์ด๋ฃจ์ด์ง์ง ์์ ๋ง์ฝ ์ฐฝ์ ๊ป์ ์์ ์ด๋ฒคํธ๊ฐ ์ ๋๋ก ๋์ํ์ง ์๋๋ค๋ฉด history์ ๊ฐฑ์ ์ด ์ด๋ฃจ์ด์ง์ง ์์ผ๋ฏ๋ก ์ด๋ db์ ์์์ ์ผ์ผํจ๋ค.
- db์ action๋๋ง๋ค ์ง์ ๋ฃ๋, ํ๋์ฉ ๋นผ์ undo, redo
- ์ด ๊ฒฝ์ฐ, action์ ๋ํ api ํธ์ถ์ ํ๋ฉด์ ํด๋น api๋ฅผ ์ฒ๋ฆฌํ๋ ๋ก์ง์์ ํ์คํ ๋ฆฌ ์ ๋ฐ์ดํธ + aciton์ ๋ํ ์ํ ์์ฒด๋ฅผ ํ๋์ ํธ๋์ญ์ ์ผ๋ก ์ธ์ํ์ฌ ์ฌ์ฉํด์ผ ํ๋ค.
- ๊ฐ๊ฐ์ action์ ๋ํ ํ์คํ ๋ฆฌ์ ๋ ์ฝ๋๋ฅผ ์ง์ ์ฟผ๋ฆฌ๋ฌธ์ ํตํด ๋ฃ์ด์ค๋ค.
- redo์ ๊ฒฝ์ฐ undoํ ๊ฒ์ ๋นผ์ ์จ๋ฉ๋ชจ๋ฆฌ์์ stack ํ์์ผ๋ก ์ ์ฅํ๊ณ ์๋ค๊ฐ ๋ค์ ์คํํ ๊ฒฝ์ฐ ์ด์ ๋ํ ๋ก์ง์ ์ค๊ณํ์ฌ ๋ค์๊ธ ๋์๊ฐ ์ ์๋ค.
- redo์ ๊ฒฝ์ฐ ๊ตณ์ด ์๋ก๊ณ ์นจ์ด๋ ์ฐฝ์ ๊ป์ ๋, ๋ณต๊ตฌ์ํฌ ์๋ฌด๋ ์๋ค๊ณ ์๊ฐํ๋ค. undo ๋ํ db์์ ๊ณ์ ๋์ด๋ค๊ฐ ๋ณต๊ตฌํ ์๋ ์๊ฒ ์ง๋ง์ ๊ตณ์ด ์ด๊ฑธ ์ ๋ถ ํ ์ ์๋๋ก ํ์ฉํด์ฃผ๋ฉด db์ ๋ถ๋ด์ด ๊ฐ ์ ์๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ๋ด๋ถ์์ ๊ฐ์๋ฅผ ์ ํด๋๊ณ ์ด๋ฅผ ๋ง๋ ๋ฐฉ์์ด ๋์ ๊ฒ ๊ฐ๋ค๊ณ ํ๋จํ๋ค.
- ๋๋ ํ์คํ ๋ฆฌ์ action์ ์ํ์ด ํ๋์ ํธ๋์ญ์ ์ผ๋ก ํ๋จํด์ผ๋ง ์ ์์ ์ธ db์ ๊ฐฑ์ ์ด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ์ด ๋ฐฉ์์ด ์ ์ผ ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํ๋ค. ์์ง๊น์ง๋ ์ธ ๊ฐ์ง ๊ณ ๋ฏผ์ ํ๋ฉด์ ๊ตฌํ์ค์ธ๋ฐ, move๊น์ง ๊ตฌํ์ด ๋๋ค๋ฉด ์ด์ ๋ํด์ history๋ฅผ ๋ค์๊ธ ์๊ฐํด๋ณด๊ณ ๊ตฌํ ๋ฐ ์ฐ๊ฒฐํ ์์ ์ด๋ค.