Skip to main content
Sonamu는 Entity 변경 사항을 감지하여 자동으로 Migration 파일을 생성합니다.

생성 워크플로우

Entity 수정

JSON 파일 편집 필드, 타입, 인덱스

Sonamu UI

Generate 버튼 자동 비교 및 생성

Migration 확인

src/migrations/*.ts up/down 검토

실행

pnpm sonamu migrate DB 적용

Sonamu UI에서 생성하기

1. Entity 수정

먼저 Entity JSON 파일을 수정합니다:

2. Sonamu UI 열기

API 개발 서버를 실행한 뒤 브라우저에서 접속합니다. Sonamu UI는 별도 포트 없이 API 서버의 /sonamu-ui 경로에서 제공됩니다.

3. Generate 버튼 클릭

Entity 탭에서 Generate 버튼을 클릭합니다.

Generate 버튼 클릭

4. Migration 확인

자동으로 생성된 Migration 파일을 확인합니다:
Sonamu는 Entity와 현재 DB 스키마를 비교하여 차이점만 Migration으로 생성합니다.

생성되는 Migration 유형

새 테이블 생성

Entity 추가:
생성된 Migration:

컬럼 추가

Entity 변경:
생성된 Migration:

컬럼 삭제

Entity 변경:
생성된 Migration:
컬럼 삭제 주의!롤백 시 데이터가 복구되지 않습니다. 프로덕션에서는 신중하게 진행하세요.

컬럼 타입 변경

Entity 변경:
생성된 Migration:

인덱스 추가

Entity 변경:
생성된 Migration:
where는 PostgreSQL partial index predicate로 그대로 사용되는 raw SQL입니다. 사용자 입력을 조합하지 말고, stable한 컬럼 조건만 선언하세요. PostgreSQL introspection이 predicate를 괄호로 감싸 반환하는 경우에도 migration diff에서는 같은 조건으로 처리됩니다.

외래 키 추가

Entity 변경:
생성된 Migration:

복합 변경

여러 변경 사항이 있으면 여러 Migration이 생성됩니다: Entity 변경:
생성된 Migrations:
Sonamu는 변경 유형별로 Migration을 분리하여 관리하기 쉽게 합니다.

Migration 파일 이름 규칙

  • 타임스탬프: YYYYMMDDHHmmss
  • 작업: create, alter, foreign, drop
  • 테이블명: 언더스코어로 구분
  • 번호: 같은 작업이 여러 개면 add1, add2
예시:

생성 전 확인 사항

1. DB 연결 확인

2. 기존 Migration 상태 확인

3. Entity 동기화

수동 수정

자동 생성된 Migration을 수동으로 수정할 수 있습니다:
수동 수정 주의사항: - down 함수도 함께 수정 - 다음 Generate 시 덮어씌워질 수 있음 - 복잡한 로직은 별도 Migration으로 분리

특수 케이스

Generated 컬럼

데이터 마이그레이션

조건부 실행

다음 단계

마이그레이션 실행

migrate run으로 적용

롤백하기

변경 사항 되돌리기

동작 원리

자동 생성 이해하기

전략

안전한 마이그레이션