Skip to main content
SonamuλŠ” Entity μ •μ˜λ‘œλΆ€ν„° λ‹€μ–‘ν•œ νƒ€μž…μ„ μžλ™ μƒμ„±ν•©λ‹ˆλ‹€. Base νƒ€μž…λΏλ§Œ μ•„λ‹ˆλΌ API νŒŒλΌλ―Έν„°, Subset νƒ€μž…, Enum 등이 μžλ™μœΌλ‘œ μƒμ„±λ˜μ–΄ μ™„λ²½ν•œ νƒ€μž… μ•ˆμ „μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

생성 νƒ€μž… κ°œμš”

Base νƒ€μž…

Entity의 κΈ°λ³Έ νƒ€μž… User, Post, Comment

Subset νƒ€μž…

λΆ€λΆ„ 쑰회 νƒ€μž… UserA, UserP, UserSS

Params νƒ€μž…

API νŒŒλΌλ―Έν„° νƒ€μž… ListParams, SaveParams

Enum νƒ€μž…

Enumκ³Ό 헬퍼 ν•¨μˆ˜ UserRole, userRoleLabel

Base νƒ€μž…

Entity의 λͺ¨λ“  ν•„λ“œλ₯Ό ν¬ν•¨ν•˜λŠ” κΈ°λ³Έ νƒ€μž…μž…λ‹ˆλ‹€.
νŠΉμ§•:
  • Relation의 HasMany, ManyToManyλŠ” μ œμ™Έ
  • BelongsToOne, OneToOne(hasJoinColumn)은 {name}_id ν˜•νƒœλ‘œ 포함
  • Virtual ν•„λ“œλŠ” νƒ€μž…λ§Œ μ •μ˜, 값은 Enhancerμ—μ„œ 계산

Subset νƒ€μž…

Entity의 λΆ€λΆ„ ν•„λ“œλ§Œ ν¬ν•¨ν•˜λŠ” νƒ€μž…μž…λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:

ListParams νƒ€μž…

λͺ©λ‘ 쑰회 API의 νŒŒλΌλ―Έν„° νƒ€μž…μž…λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:
zArrayable: 단일 κ°’κ³Ό 배열을 λͺ¨λ‘ ν—ˆμš©ν•˜λŠ” ν—¬νΌμž…λ‹ˆλ‹€.

SaveParams νƒ€μž…

μ €μž₯ API의 νŒŒλΌλ―Έν„° νƒ€μž…μž…λ‹ˆλ‹€.
νŠΉμ§•:
  • id만 optional, λ‚˜λ¨Έμ§€ ν•„λ“œλŠ” ν•„μˆ˜
  • idκ°€ 있으면 UPDATE, μ—†μœΌλ©΄ INSERT
  • λ°°μ—΄λ‘œ μ—¬λŸ¬ λ ˆμ½”λ“œ λ™μ‹œ μ €μž₯ κ°€λŠ₯

Enum νƒ€μž…

Entity의 Enum이 μžλ™μœΌλ‘œ μƒμ„±λ©λ‹ˆλ‹€.
μ‚¬μš© μ˜ˆμ‹œ:

μ»€μŠ€ν…€ Params νƒ€μž…

Modelμ—μ„œ μΆ”κ°€ APIλ₯Ό λ§Œλ“€ λ•Œ μ»€μŠ€ν…€ νŒŒλΌλ―Έν„° νƒ€μž…μ„ μ •μ˜ν•©λ‹ˆλ‹€.
μžλ™ 생성:

Action Params νƒ€μž…

νŠΉμ • μ•‘μ…˜μ„ μœ„ν•œ νŒŒλΌλ―Έν„° νƒ€μž…μž…λ‹ˆλ‹€.

ListResult νƒ€μž…

λͺ©λ‘ 쑰회 결과의 νƒ€μž…μž…λ‹ˆλ‹€.
sonamu.shared.ts
μ‚¬μš© μ˜ˆμ‹œ:
쑰건뢀 νƒ€μž…: ListResultλŠ” TypeScript의 쑰건뢀 νƒ€μž…μ„ ν™œμš©ν•˜μ—¬ queryMode에 따라 λ‹€λ₯Έ νƒ€μž…μ„ λ°˜ν™˜ν•©λ‹ˆλ‹€.

νƒ€μž… 내보내기

μƒμ„±λœ νƒ€μž…μ€ μžλ™μœΌλ‘œ exportλ©λ‹ˆλ‹€.
sonamu.generated.ts
μ‚¬μš©:

νƒ€μž… μœ ν‹Έλ¦¬ν‹°

Sonamuκ°€ μ œκ³΅ν•˜λŠ” μœ μš©ν•œ νƒ€μž… μœ ν‹Έλ¦¬ν‹°μž…λ‹ˆλ‹€.

zArrayable

단일 κ°’κ³Ό 배열을 λͺ¨λ‘ ν—ˆμš©ν•˜λŠ” νƒ€μž…μž…λ‹ˆλ‹€.

DistributiveOmit

일반 Omit보닀 Union νƒ€μž…μ—μ„œ μ•ˆμ „ν•©λ‹ˆλ‹€.

νƒ€μž… 생성 μ»€μŠ€ν„°λ§ˆμ΄μ§•

μžλ™ μƒμ„±λœ νƒ€μž…μ„ ν™•μž₯ν•˜κ±°λ‚˜ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Params ν™•μž₯

user.types.ts

Subset νƒ€μž… ν™•μž₯

user.types.ts

쑰건뢀 νƒ€μž… 생성

user.types.ts

μ‹€μ „ μ˜ˆμ‹œ

μ‹€μ œ ν”„λ‘œμ νŠΈμ—μ„œ 생성 νƒ€μž…μ„ ν™œμš©ν•˜λŠ” μ˜ˆμ‹œμž…λ‹ˆλ‹€.

λ‹€μŒ 단계

E2E Type Safety

μ—”λ“œνˆ¬μ—”λ“œ νƒ€μž… μ•ˆμ „μ„± μ΄ν•΄ν•˜κΈ°

Zod Validation

Zod둜 λŸ°νƒ€μž„ κ²€μ¦ν•˜κΈ°

Entity Types

Entity νƒ€μž… λ³€ν™˜ μžμ„Ένžˆ 보기

Model

Modelμ—μ„œ νƒ€μž… μ‚¬μš©ν•˜κΈ°