CampForest๋ ์บ ํ์ ์ฌ๋ํ๋ ๋ชจ๋ ์ด๋ค์ ์ํ ํ๋ซํผ์ ๋๋ค. ์ ๋ ดํ ์ฅ๋น ๋์ฌ, ์ฅ๋น๋ฅผ ํตํ ์ฌํ ํฌ, ์บ ํ์ฅ์ ๋ํ ์ ๋ขฐ์ฑ ์๋ ์ ๋ณด ์ ๊ณต, ๊ทธ๋ฆฌ๊ณ ์บ ํผ๋ค ๊ฐ์ ํ๋ฐํ ์ ๋ณด ๊ต๋ฅ๋ฅผ ํตํด ๋ ์ฆ๊ฒ๊ณ ๊ฒฝ์ ์ ์ธ ์บ ํ ๋ฌธํ๋ฅผ ์ฆ๊ฒจ๋ณด์ธ์!
sequenceDiagram
actor User
participant Client
participant Server
participant Database
Note over User,Database: ์ฅ๋น ๊ฒ์๋ฌผ CRUD ์์
User->>Client: ์ฅ๋น ๊ฒ์๋ฌผ ์์ฑ ์์ฒญ
Client->>Server: POST /product
Server->>Database: INSERT ๊ฒ์๋ฌผ ๋ฐ์ดํฐ
Database-->>Server: ์ฝ์
๊ฒฐ๊ณผ
Server-->>Client: ์์ฑ ์ฑ๊ณต ์๋ต
Client-->>User: ์์ฑ ์๋ฃ ํ์
User->>Client: ์ฅ๋น ๊ฒ์๋ฌผ ์์ ์์ฒญ
Client->>Server: PUT /product/{id}
Server->>Database: UPDATE ๊ฒ์๋ฌผ ๋ฐ์ดํฐ
Database-->>Server: ์์ ๊ฒฐ๊ณผ
Server-->>Client: ์์ ์ฑ๊ณต ์๋ต
Client-->>User: ์์ ์๋ฃ ํ์
User->>Client: ์ฅ๋น ๊ฒ์๋ฌผ ์ญ์ ์์ฒญ
Client->>Server: DELETE /product/{id}
Server->>Database: DELETE ๊ฒ์๋ฌผ ๋ฐ์ดํฐ
Database-->>Server: ์ญ์ ๊ฒฐ๊ณผ
Server-->>Client: ์ญ์ ์ฑ๊ณต ์๋ต
Client-->>User: ์ญ์ ์๋ฃ ํ์
User->>Client: ์ฅ๋น ๊ฒ์๋ฌผ ์กฐํ ์์ฒญ
Client->>Server: GET /product/{id}
Server->>Database: SELECT ๊ฒ์๋ฌผ ๋ฐ์ดํฐ
Database-->>Server: ์กฐํ ๊ฒฐ๊ณผ
Server-->>Client: ๊ฒ์๋ฌผ ์ ๋ณด ์๋ต
Client-->>User: ๊ฒ์๋ฌผ ์ ๋ณด ํ์
Note over User,Database: ๋์ ์ฟผ๋ฆฌ ๊ฒ์
User->>Client: ๋์ ๊ฒ์ ์์ฒญ
Client->>Server: GET /product/search
Note right of Client: ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ: ์นดํ
๊ณ ๋ฆฌ, ๊ฒ์์ด, ์ง์ญ, ๋์ฌ/ํ๋งค, ํ์ด์ง
Server->>Database: ๋์ ์ฟผ๋ฆฌ ์คํ
Database-->>Server: ๊ฒ์ ๊ฒฐ๊ณผ
Server-->>Client: ๊ฒ์ ๊ฒฐ๊ณผ ์๋ต
Client-->>User: ๊ฒ์ ๊ฒฐ๊ณผ ํ์
sequenceDiagram
participant ๊ตฌ๋งค์
participant ์ฑํ
๋ฐฉ
participant ํ๋งค์
participant ๊ฑฐ๋์์คํ
๊ตฌ๋งค์->>์ฑํ
๋ฐฉ: ์ฑํ
๋ฐฉ ์์ฑ ์์ฒญ
์ฑํ
๋ฐฉ->>ํ๋งค์: ์ฑํ
๋ฐฉ ์์ฑ ์๋ฆผ
alt ๊ตฌ๋งค์๊ฐ ๊ฑฐ๋ ์์ฒญ
๊ตฌ๋งค์->>๊ฑฐ๋์์คํ
: ๊ฑฐ๋ ์์ฒญ
๊ฑฐ๋์์คํ
->>ํ๋งค์: ๊ฑฐ๋ ์์ฒญ ์ ๋ฌ
else ํ๋งค์๊ฐ ๊ฑฐ๋ ์์ฒญ
ํ๋งค์->>๊ฑฐ๋์์คํ
: ๊ฑฐ๋ ์์ฒญ
๊ฑฐ๋์์คํ
->>๊ตฌ๋งค์: ๊ฑฐ๋ ์์ฒญ ์ ๋ฌ
end
alt ๊ฑฐ๋ ์์ฒญ ์๋ฝ
ํ๋งค์->>๊ฑฐ๋์์คํ
: ๊ฑฐ๋ ์์ฒญ ์๋ฝ
๊ฑฐ๋์์คํ
->>๊ตฌ๋งค์: ์์ฝ ์ฑ์ฌ ์๋ฆผ
๊ฑฐ๋์์คํ
->>ํ๋งค์: ์์ฝ ์ฑ์ฌ ์๋ฆผ
else ๊ฑฐ๋ ์์ฒญ ๊ฑฐ์
ํ๋งค์->>๊ฑฐ๋์์คํ
: ๊ฑฐ๋ ์์ฒญ ๊ฑฐ์
๊ฑฐ๋์์คํ
->>๊ตฌ๋งค์: ๊ฑฐ๋ ๊ฑฐ์ ์๋ฆผ
end
๊ตฌ๋งค์->>๊ฑฐ๋์์คํ
: ๊ฑฐ๋ ํ์
ํ๋งค์->>๊ฑฐ๋์์คํ
: ๊ฑฐ๋ ํ์
alt ์์ชฝ ๋ชจ๋ ๊ฑฐ๋ ํ์
๊ฑฐ๋์์คํ
->>๊ตฌ๋งค์: ํ๊ธฐ ์์ฑ ํ์ฑํ
๊ฑฐ๋์์คํ
->>ํ๋งค์: ํ๊ธฐ ์์ฑ ํ์ฑํ
end
alt ๊ตฌ๋งค์๊ฐ ์ฑํ
๋ฐฉ ๋๊ฐ๊ธฐ
๊ตฌ๋งค์->>์ฑํ
๋ฐฉ: ์ฑํ
๋ฐฉ ๋๊ฐ๊ธฐ ์์ฒญ
์ฑํ
๋ฐฉ->>๊ตฌ๋งค์: ์ด์ ๋ํ ์จ๊น ์ฒ๋ฆฌ
์ฑํ
๋ฐฉ->>ํ๋งค์: ์ฑํ
๋ด์ญ ์ ์ง
else ํ๋งค์๊ฐ ์ฑํ
๋ฐฉ ๋๊ฐ๊ธฐ
ํ๋งค์->>์ฑํ
๋ฐฉ: ์ฑํ
๋ฐฉ ๋๊ฐ๊ธฐ ์์ฒญ
์ฑํ
๋ฐฉ->>ํ๋งค์: ์ด์ ๋ํ ์จ๊น ์ฒ๋ฆฌ
์ฑํ
๋ฐฉ->>๊ตฌ๋งค์: ์ฑํ
๋ด์ญ ์ ์ง
end
์ฅ๋น ํ๊ธฐ, ๋ ์ํผ ์ถ์ฒ, ์บ ํ์ฅ ์๋, ์์ ๊ฒ์ํ, ์ง๋ฌธ ๊ฒ์ํ ์นดํ ๊ณ ๋ฆฌ ๋ณ๋ก ์ํ๋ ํผ๋๋ฅผ ์์ฑํ๊ณ ์ฌ๋๋ค๊ณผ ์ํตํ ์ ์์ด์!
์ํ๋ ์ฌ์ฉ์๋ฅผ ํ๋ก์ฐํ๊ณ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฒ์๊ธ์ ํ์ธํ ์ ์์ด์!
๋ค์ํ ์ฌ๋๋ค๊ณผ ์ง์ ์ฑํ ์ ํตํด ์ ๋ณด๋ฅผ ๊ณต์ ํ ์ ์์ด์!
์บ ํ ํ ๋ฒ์ ์ํด ์บ ํ ์ฅ๋น๋ฅผ ๊ตฌ์ ํ๊ธฐ ๋ถ๋ด๋์ง ์๋์? ํน์, ์ง์ ๋ฐฉ์น๋์ด ์๋ ์บ ํ ์ฅ๋น๋ฅผ ํจ์จ์ ์ผ๋ก ํ์ฉํ๊ณ ์ถ์ผ์ ๊ฐ์? ์ํ๋ ์บ ํ ์ฅ๋น๋ฅผ ์ฐพ์๋ณด๊ณ ๋์ฌํด๋ณด์ธ์!
์ด์ ๋ ํ์ ์์ด์ง ๋์ ์บ ํ ์ฅ๋น๋ฅผ ํ๋งคํด๋ณด์ธ์!
์ฃผ๋ณ ์์ค, ๋ฐ๋ ค๋๋ฌผ ๋๋ฐ ์ฌ๋ถ ๋ฑ ์ํ๋ ์กฐ๊ฑด๊ณผ ํจ๊ป ๋์๊ฒ ๋ง๋ ์ต์ ์ ์บ ํ์ฅ์ ๊ฒ์ํด๋ณด์ธ์!
๋ฐฉ๋ฌธํ๋ ์บ ํ์ฅ์ ๋ํ ํ๊ธฐ๋ฅผ ๋จ๊ธฐ๊ณ , ๊ฐ๊ณ ์ถ์ ์บ ํ์ฅ์ ํ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ํ์ธํด๋ณด์ธ์!