| name | add-migration |
| description | Generates numbered SQL migration files for tables, indexes, and views. Use when adding or modifying database schema. |
| disable-model-invocation | true |
| user-invocable | true |
| argument-hint | <설명_snake_case> [테이블명|기능명] |
| allowed-tools | Read, Grep, Write, Bash(podman *) |
DB 마이그레이션 추가 워크플로우
$ARGUMENTS 마이그레이션을 생성합니다.
1단계: 다음 번호 결정
ls migrations/ | sort | tail -1
현재 마지막 번호 + 1을 사용합니다.
2단계: 마이그레이션 파일 생성
위치: migrations/<번호>_$ARGUMENTS[0].sql
작성 규칙
CREATE TABLE IF NOT EXISTS <테이블명> (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE INDEX IF NOT EXISTS idx_<테이블>_<컬럼>
ON <테이블> (<컬럼>);
체크포인트
3단계: 적용 및 검증
# 1. 마이그레이션 적용
podman exec -i trader-timescaledb psql -U trader -d trader -f /dev/stdin < migrations/<번호>_$ARGUMENTS[0].sql
# 2. 테이블 확인
podman exec trader-timescaledb psql -U trader -d trader -c "\dt <테이블명>"
# 3. 스키마 확인
podman exec trader-timescaledb psql -U trader -d trader -c "\d <테이블명>"
검증 실패 시
- 에러 메시지에서 원인 파악 (syntax error, duplicate, constraint 등)
- 마이그레이션
.sql 파일 수정
DROP TABLE IF EXISTS 후 재적용하여 검증 반복
4단계: Rust 모델 연동 (필요시)
해당 테이블에 대한 Rust 구조체가 필요한 경우:
crates/trader-core/src/domain/ 또는 해당 crate에 모델 추가
sqlx::FromRow derive 추가
- Repository 함수 구현
5단계: docs 갱신
docs/migration_guide.md에 새 마이그레이션 정보 추가.