bibimbap/.serena/memories/bibimbap-dev-seed-blueprint.md

1.9 KiB

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.