Skip to content

DB 스키마

⚠️ 이 문서는 안내용. 실제 스키마 문서는 db-schema/ 디렉토리 (tbls 자동 생성).

어디서 보나

재생성

스키마 변경(마이그레이션 추가) 시 로컬 DB에 마이그레이션 적용 후 레포 루트에서 스크립트 실행:

bash
# 마이그레이션 적용 (백엔드 재시작 시 Goose가 자동, 또는 직접):
cd backend && APP_ENV=local goose -dir cmd/server/migrations postgres "$DATABASE_URL" up
cd ..    # 레포 루트로

# 문서 재생성
./scripts/regen-db-schema.sh

스크립트는 tbls doc --rm-dist 실행 후, README 의 cross-schema Enums 섹션을 제거한다. (tbls 가 PostgreSQL 의 모든 스키마 enum 을 긁어오는 한계 때문 — disableOutputSchema: true 로 schema.json 까지는 막을 수 있지만 README enum 섹션은 별도 정리 필요.)

설정 파일: .tbls.yml 스크립트: scripts/regen-db-schema.sh

데이터소스

  • 로컬 PostgreSQL (postgres://dartbrief:dartbrief@localhost:5432/local)
  • 스키마: dartbrief
  • 제외: goose_db_version (마이그레이션 메타 테이블)

prod DB가 아닌 로컬 DB를 기준으로 한 이유:

  • 마이그레이션이 적용된 시점의 스키마를 그대로 반영 (prod와 동일해야 정상)
  • prod 의존성 없음 → CI/오프라인에서도 재생성 가능

한계

  • tbls는 컬럼 코멘트(COMMENT ON COLUMN)를 그대로 가져오는데, 현재 마이그레이션에는 코멘트가 없어 표가 비어있음
  • 의미를 보려면 docs/spec/domain-*.md 의 "데이터 모델" 섹션 참조