Skip to main content
SonamuλŠ” Entity μ •μ˜ ν•˜λ‚˜λ‘œ ν΄λΌμ΄μ–ΈνŠΈλΆ€ν„° μ„œλ²„, λ°μ΄ν„°λ² μ΄μŠ€κΉŒμ§€ μ™„λ²½ν•œ νƒ€μž… μ•ˆμ „μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€. 이 λ¬Έμ„œλŠ” νƒ€μž…μ΄ μ–΄λ–»κ²Œ 전체 μŠ€νƒμ„ κ΄€ν†΅ν•˜λŠ”μ§€ μ„€λͺ…ν•©λ‹ˆλ‹€.

νƒ€μž… 흐름 κ°œμš”

컴파일 νƒ€μž„

TypeScript둜 νƒ€μž… 체크 개발 쀑 μ—λŸ¬ λ°©μ§€

λŸ°νƒ€μž„

Zod둜 μ‹€μ œ 데이터 검증 잘λͺ»λœ 데이터 차단

λ°μ΄ν„°λ² μ΄μŠ€

PostgreSQL μ œμ•½μ‘°κ±΄ 데이터 무결성 보μž₯

API 경계

Request/Response 검증 μ•ˆμ „ν•œ 데이터 κ΅ν™˜

λ ˆμ΄μ–΄λ³„ νƒ€μž… μ•ˆμ „μ„±

1. Entity β†’ TypeScript

Entity μ •μ˜κ°€ TypeScript νƒ€μž…μœΌλ‘œ λ³€ν™˜λ©λ‹ˆλ‹€.
νƒ€μž… μ•ˆμ „μ„± 보μž₯:

2. Entity β†’ Zod μŠ€ν‚€λ§ˆ

Entity μ •μ˜κ°€ Zod μŠ€ν‚€λ§ˆλ‘œ λ³€ν™˜λ˜μ–΄ λŸ°νƒ€μž„ 검증을 μ œκ³΅ν•©λ‹ˆλ‹€.

3. Entity β†’ PostgreSQL

Entity μ •μ˜κ°€ PostgreSQL ν…Œμ΄λΈ” μŠ€ν‚€λ§ˆλ‘œ λ³€ν™˜λ©λ‹ˆλ‹€.
λ°μ΄ν„°λ² μ΄μŠ€ μ œμ•½μ‘°κ±΄:

API λ ˆμ΄μ–΄ νƒ€μž… μ•ˆμ „μ„±

Model β†’ API Client

Model의 λ©”μ„œλ“œκ°€ νƒ€μž… μ•ˆμ „ν•œ API ν΄λΌμ΄μ–ΈνŠΈλ‘œ λ³€ν™˜λ©λ‹ˆλ‹€.

Request 검증

API μš”μ²­μ€ Zod μŠ€ν‚€λ§ˆλ‘œ μžλ™ κ²€μ¦λ©λ‹ˆλ‹€.
Fastify λΌμš°ν„°μ—μ„œ
검증 μ‹€νŒ¨ μ‹œ:

Response νƒ€μž…

API 응닡도 νƒ€μž… μ•ˆμ „ν•©λ‹ˆλ‹€.

TanStack Query νƒ€μž… μ•ˆμ „μ„±

TanStack Query hooks도 μ™„λ²½ν•œ νƒ€μž… μ•ˆμ „μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

Subset νƒ€μž… μ•ˆμ „μ„±

Subset 쿼리도 μ™„λ²½ν•œ νƒ€μž… 좔둠을 μ œκ³΅ν•©λ‹ˆλ‹€.

전체 μŠ€νƒ νƒ€μž… 흐름 μ˜ˆμ‹œ

μ‹€μ œ CRUD μž‘μ—…μ—μ„œ νƒ€μž…μ΄ μ–΄λ–»κ²Œ 흐λ₯΄λŠ”μ§€ λ³΄μ—¬μ€λ‹ˆλ‹€.
1

1. Entity μ •μ˜

user.entity.json
생성: TypeScript νƒ€μž…, Zod μŠ€ν‚€λ§ˆ, PostgreSQL μŠ€ν‚€λ§ˆ
2

2. Model μž‘μ„±

user.model.ts
생성: API ν΄λΌμ΄μ–ΈνŠΈ, TanStack Query hooks
3

3. ν”„λ‘ νŠΈμ—”λ“œ μ‚¬μš©

UserForm.tsx
검증: 컴파일 νƒ€μž„ (TypeScript) + λŸ°νƒ€μž„ (Zod)
4

4. API μš”μ²­

검증: Zod μŠ€ν‚€λ§ˆλ‘œ λŸ°νƒ€μž„ 검증
5

5. λ°μ΄ν„°λ² μ΄μŠ€ μ €μž₯

검증: PostgreSQL μ œμ•½μ‘°κ±΄
6

6. 응닡 λ°˜ν™˜

νƒ€μž… μΆ”λ‘ : API ν΄λΌμ΄μ–ΈνŠΈκ°€ λ°˜ν™˜ νƒ€μž… 보μž₯

νƒ€μž… 뢈일치 λ°©μ§€

Sonamu의 E2E νƒ€μž… μ•ˆμ „μ„±μ€ ν”ν•œ νƒ€μž… 뢈일치 문제λ₯Ό λ°©μ§€ν•©λ‹ˆλ‹€.
문제: APIκ°€ μ˜ˆμƒκ³Ό λ‹€λ₯Έ νƒ€μž… λ°˜ν™˜Sonamu ν•΄κ²°:
문제: ν΄λΌμ΄μ–ΈνŠΈκ°€ 잘λͺ»λœ νŒŒλΌλ―Έν„° 전솑Sonamu ν•΄κ²°:
문제: ν•˜λ“œμ½”λ”©λœ λ¬Έμžμ—΄μ΄ Enumκ³Ό 뢈일치Sonamu ν•΄κ²°:
문제: nullable ν•„λ“œλ₯Ό null 체크 없이 μ‚¬μš©Sonamu ν•΄κ²°:

νƒ€μž… μ•ˆμ „μ„± 검증

νƒ€μž… μ•ˆμ „μ„±μ΄ μ œλŒ€λ‘œ μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

컴파일 νƒ€μž„ 검증

λŸ°νƒ€μž„ 검증

λ‹€μŒ 단계

Zod Validation

Zod 검증 상세 κ°€μ΄λ“œ

Entity Types

Entity νƒ€μž… λ³€ν™˜ μ΄ν•΄ν•˜κΈ°

Generated Types

생성 νƒ€μž… ν™œμš©ν•˜κΈ°

Testing

νƒ€μž… μ•ˆμ „ν•œ ν…ŒμŠ€νŠΈ μž‘μ„±ν•˜κΈ°