Model ์์ฑ ๊ณผ์
1
Entity ์ ์
๋จผ์ Entity๋ฅผ ์ ์ํด์ผ ํฉ๋๋ค.
user.entity.json
2
์๋ ํ์ ์์ฑ
Entity ์ ์ฅ ์ ์๋์ผ๋ก ํ์
ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.์์ฑ๋๋ ํ์ผ:
user.types.ts- TypeScript ํ์ ๊ณผ Zod ์คํค๋งsonamu.generated.ts- Base ์คํค๋ง์ Enumsonamu.generated.sso.ts- Subset ์ฟผ๋ฆฌ ํจ์
3
Model Scaffold ์์ฑ
Sonamu CLI๋ฅผ ์ฌ์ฉํ์ฌ Model ํ
ํ๋ฆฟ์ ์์ฑํฉ๋๋ค.๋๋ Sonamu UI์ Scaffolding ํญ์์ ์์ฑํ ์ ์์ต๋๋ค.
4
Model ์ปค์คํฐ๋ง์ด์ง
์์ฑ๋ Model์ ๋น์ฆ๋์ค ๋ก์ง์ ์ถ๊ฐํฉ๋๋ค.
Scaffold๋ก Model ์์ฑํ๊ธฐ
CLI ์ฌ์ฉ
Sonamu UI ์ฌ์ฉ
1
Scaffolding ํญ ์ด๊ธฐ
Sonamu UI(
http://localhost:1028/sonamu-ui)์์ Scaffolding ํญ์ ํด๋ฆญํฉ๋๋ค.2
Model ํ ํ๋ฆฟ ์ ํ
โModelโ ํ
ํ๋ฆฟ์ ์ ํํ๊ณ Entity๋ฅผ ์ง์ ํฉ๋๋ค.
3
์ต์ ์ค์
- Default Search Field: ๊ธฐ๋ณธ ๊ฒ์ ํ๋ (์:
email) - Default Order By: ๊ธฐ๋ณธ ์ ๋ ฌ (์:
id-desc) - Overwrite: ๊ธฐ์กด ํ์ผ ๋ฎ์ด์ฐ๊ธฐ ์ฌ๋ถ
4
์์ฑ ์คํ
โGenerateโ ๋ฒํผ์ ํด๋ฆญํ๋ฉด Model ํ์ผ์ด ์์ฑ๋ฉ๋๋ค.
๐ธ ํ์: Sonamu UI์ Scaffolding ํญ - Model ์์ฑ ํ๋ฉด
์์ฑ๋๋ Model ๊ตฌ์กฐ
Scaffold๋ก ์์ฑ๋ Model์ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ๋๋ค:user.model.ts
์์ฑ๋ ๋ฉ์๋ ์ค๋ช
Scaffold๊ฐ ์์ฑํ๋ ๊ธฐ๋ณธ ๋ฉ์๋๋ค์ ๋๋ค:1. findById
๋จ์ผ ๋ ์ฝ๋๋ฅผ ID๋ก ์กฐํํฉ๋๋ค.- Subset์ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ํ์ํ ํ๋๋ง ์กฐํ
- ๋ ์ฝ๋๊ฐ ์์ผ๋ฉด
NotFoundException๋ฐ์ @api๋ฐ์ฝ๋ ์ดํฐ๋ก HTTP ์๋ํฌ์ธํธ ์์ฑ
2. findOne
์กฐ๊ฑด์ ๋ง๋ ์ฒซ ๋ฒ์งธ ๋ ์ฝ๋๋ฅผ ์กฐํํฉ๋๋ค.- ๋ ์ฝ๋๊ฐ ์์ผ๋ฉด
null๋ฐํ (์์ธ ๋ฐ์ ์ํจ) - ๋ด๋ถ์ ์ผ๋ก
findMany๋ฅผ ํธ์ถํ์ฌnum: 1, page: 1์ฌ์ฉ
3. findMany
์ฌ๋ฌ ๋ ์ฝ๋๋ฅผ ์กฐ๊ฑด์ ๋ฐ๋ผ ์กฐํํฉ๋๋ค.- ํ์ด์ง๋ค์ด์
์ง์ (
num,page) - ๊ฒ์/ํํฐ๋ง (
search,keyword) - ์ ๋ ฌ (
orderBy) ListResultํ์ ์ผ๋ก{ rows, total }๋ฐํ
4. save
๋ ์ฝ๋๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ํฉ๋๋ค.- Upsert Builder ์ฌ์ฉ (Insert or Update)
- ๋ฐฐ์ด๋ก ์ฌ๋ฌ ๋ ์ฝ๋ ํ๋ฒ์ ์ฒ๋ฆฌ
- ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ด์ ์คํ
- ์์ฑ/์์ ๋ ID ๋ฐฐ์ด ๋ฐํ
5. del
๋ ์ฝ๋๋ฅผ ์ญ์ ํฉ๋๋ค.- ์ฌ๋ฌ ID๋ฅผ ๋ฐฐ์ด๋ก ๋ฐ์
- ํธ๋์ญ์ ์ผ๋ก ์คํ
guards: ["admin"]์ผ๋ก ๊ด๋ฆฌ์๋ง ์ญ์ ๊ฐ๋ฅ- ์ญ์ ๋ ๋ ์ฝ๋ ์ ๋ฐํ
์๋์ผ๋ก Model ์์ฑํ๊ธฐ
Scaffold๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ง์ ์์ฑํ ์๋ ์์ต๋๋ค.์ต์ ๊ตฌ์กฐ
๋ค์ด๋ฐ ๊ท์น
| ๊ตฌ๋ถ | ํจํด | ์์ |
|---|---|---|
| ํด๋์ค๋ช | {Entity}ModelClass | UserModelClass |
| Export๋ช | {Entity}Model | UserModel |
| ํ์ผ๋ช | {entity}.model.ts | user.model.ts |
Model ํ์ผ ์์น
Model ํ์ผ์ Entity์ ๊ฐ์ ๋๋ ํ ๋ฆฌ์ ์์นํฉ๋๋ค:Types ํ์ผ ์์ฑ
Model๊ณผ ํจ๊ป ์ฌ์ฉํ ํ๋ผ๋ฏธํฐ ํ์ ์ ์ ์ํฉ๋๋ค:user.types.ts
{Entity}ListParams: ๋ชฉ๋ก ์กฐํ์ฉ{Entity}SaveParams: ์์ฑ/์์ ์ฉ{Entity}{Action}Params: ํน์ ์ก์ ์ฉ (์:LoginParams)
Model ๋ฑ๋ก ํ์ธ
์์ฑ๋ Model์ด ์ ๋๋ก ๋ก๋๋๋์ง ํ์ธํฉ๋๋ค:api/src/application/sonamu.generated.ts