Skip to content

[FE/BE] 코드 에디터 viewer, editor 변경 #64

@Happysttim

Description

@Happysttim

🧾 이슈 개요

방장(Host)의 권한 변경 기능을 구현하며, DB 업데이트와 Redis 캐시 삭제(Evict) 전략을 적용하여 데이터 일관성을 유지합니다.

👤 사용자 시나리오

  1. 방장이 A 유저를 'viewer'에서 'editor'로 변경한다.
  2. 서버는 DBPt 테이블 role 컬럼을 'editor'로 업데이트한다. (트랜잭션 시작)
  3. DB 업데이트 성공 시, Redisroom:{id}:pt:{A}:role 키를 삭제한다. (Cache Invalidation)
  4. 변경 사항을 방의 모든 인원에게 소켓으로 알린다.
  5. 이후 A 유저의 권한 조회 요청이 들어오면 Redis에 값이 없으므로 DB에서 읽어와 다시 Redis에 셋팅(TTL 5m)한다.

✅ TODO

  • 권한 변경 API/소켓 핸들러 구현
  • DB 트랜잭션 처리: Pt 테이블 Update
  • Redis Cache Eviction: DEL room:{room_id}:pt:{pt_id}:role 구현
  • 권한 조회 로직 구현: Redis Get -> (Miss) -> DB Get & Redis Set (TTL 5m) -> Return
  • 예외 처리: DB 실패 시 롤백, Redis 삭제 실패 시 로그 기록 (TTL에 의존)

📌 Acceptance Criteria

  • 권한 변경 후 즉시 반영되어야 한다.
  • Redis 키를 강제로 삭제했을 때, 다음 조회 시 DB에서 올바른 값을 가져와 다시 캐싱해야 한다.
  • Editor 최대 인원(6명) 제한 로직이 포함되어야 한다.

💬 Remarks

  • 핵심 전략: "DB가 진실(Source of Truth)이고 Redis는 거들 뿐". 수정(Update) 시 Redis 값을 직접 바꾸려 하지 말고 삭제(Delete)하세요.

Metadata

Metadata

Assignees

Labels

BE백엔드 (NestJS, API) 관련 작업FE프론트엔드 (React) 관련 작업P1: High핵심 기능, MVP 필수 요건✨ Feature새로운 기능 추가

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions