28 lines
1.9 KiB
Markdown
28 lines
1.9 KiB
Markdown
# bibimbap dev 더미 seed 청사진
|
|
|
|
현실적 경로 = **dev 스키마에 psql 직접 INSERT**. UI 경유는 CSRF + 세션 + (게임) WebGL 업로드를
|
|
강제해 고비용. DB 직삽은 CSRF/세션/중복선검사를 우회하되 FK·CHECK·UNIQUE idx 는 그대로 적용됨.
|
|
|
|
기성 산출물: `db/seed-dev.sql` (멱등, NOT EXISTS 가드) + `db/seed-dev-teardown.sql` (정리).
|
|
적용: `docker exec -i bibimbap-db psql -U bibimbap -d bibimbap -v ON_ERROR_STOP=1 < db/seed-dev.sql`
|
|
DB: 가동 컨테이너 `bibimbap-db` (postgres:16, 호스트 5433), db/user `bibimbap`, schema `dev`.
|
|
|
|
## INSERT 순서 (FK 의존)
|
|
1. `users` (status='ACTIVE', role='USER', is_delete=false)
|
|
2. `user_auth_identities` (PBKDF2 password_hash — `mem:bibimbap-auth-pbkdf2-not-bcrypt`; provider='email')
|
|
3. `games` (user_id FK, name NOT NULL, is_visible=true, is_delete=false → 목록/상세 표시; sort_order=MAX+1)
|
|
4. `game_reviews` (game_id, user_id, rating 1~5 CHECK, body)
|
|
5. `game_comments` (game_id, user_id nullable, nickname, content)
|
|
|
|
## 핵심 제약 (코드 교차확인 필요 — schema.sql 은 비권위 복원본)
|
|
- **`game_reviews` 부분 UNIQUE `(game_id, user_id) WHERE is_delete IS NOT TRUE`**
|
|
→ 한 게임에 더미 리뷰 N개 = **더미 유저 N명** 필요. 한 유저로 N리뷰 불가.
|
|
- `game_reviews`/`games` 조회는 `users` JOIN → 작성자명은 `users.display_name` 에서 옴.
|
|
- `game_comments` 조회는 users JOIN 안 함 → **작성자명은 `nickname` 컬럼을 직접 채워야** 표시됨
|
|
(`GameCommentsMapper.listGameComments`).
|
|
- 게임 `webgl_path`/`thumbnail_url` NULL 안전 — `game-detail.jsp:13-21` 가 빈 src 로 처리.
|
|
- "리뷰 작성 테스트" 하려면 로그인 계정은 해당 게임에 리뷰 0건이어야 함
|
|
(`getActiveReviewByGameAndUser` 중복검사, GameReviewController.java:103-105).
|
|
|
|
근거 세션: .atp/work-session/20260618-121419.
|