강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

고리오영감님의 프로필 이미지
고리오영감

작성한 질문수

[매일 완독 챌린지] 저자와 함께하는 <FastAPI로 기획에서 출시까지>

8.1~8.2절 : 호스트별 캘린더 API 구현하기 (p266~p298)

4주 1회차 과제 제출합니다.

해결된 질문

작성

·

23

0

저는 is_host 필드와 calendar 존재 여부를 둘 다 검증해야 한다고 판단했습니다.

왜 두 가지를 모두 사용해야 할까요?

우선 두 요소는 서로 다른 의미를 가지고 있다고 생각합니다.

  • is_host: 이 사용자가 호스트 자격이 있는가? (역할)

  • calendar 존재: 이 호스트가 실제로 운영 중인가? (상태)

현실로 비유하자면, is_host는 사업자등록증을 가지고 있는 상태이고, calendar가 있다는 건 실제로 가게를 오픈한 상태라고 볼 수 있습니다. 사업자등록증은 있지만 아직 가게를 열지 않은 사람도 있을 수 있잖아요?

그래서 둘 중 하나만 체크하면 문제가 생긴다고 봅니다.

만약 calendar 존재 여부만 체크한다면?

calendar만 보고 판단하면 권한 체계가 무너질 수 있습니다. 예를 들어 일반 사용자가 억지로 캘린더를 생성하면 호스트로 둔갑할 수 있는 보안 문제가 생기죠. 또 호스트가 일시적으로 캘린더를 삭제했다가 다시 만들 때마다 권한 관리가 복잡해집니다.

만약 is_host만 체크한다면?

반대로 is_host만 체크하면, 캘린더가 없는데도 예약 관련 API를 호출할 수 있게 되어서 500 에러가 발생할 수 있습니다. "호스트인데 캘린더는 없는" 이상한 상태를 어떻게 처리해야 할지도 애매해지고요.

두 가지를 순차적으로 검증하는 게 좋습니다

저는 이렇게 단계적으로 확인하는 게 맞다고 봅니다:

  1. 먼저 is_host로 호스트 자격이 있는지 확인

  2. 그 다음 calendar 존재로 실제 운영 가능한지 확인

이렇게 하면 사용자에게도 명확한 피드백을 줄 수 있어요. "호스트 권한이 없습니다" vs "캘린더를 먼저 생성해주세요" 처럼 무엇을 해야 하는지 정확히 알려줄 수 있죠.

미래 확장성도 고려했습니다

나중에 서비스가 커지면 호스트 상태를 더 세분화할 수도 있을 것 같아요:

  • 준비 중 호스트 (is_host=true, 캘린더 없음) → 대시보드 접근만 가능

  • 운영 중 호스트 (is_host=true, 캘린더 있음) → 모든 기능 사용 가능

  • 휴면 호스트 (is_host=true, 캘린더 비활성화) → 기존 예약 조회만 가능

이런 식으로 관리하려면 역할과 리소스를 분리해서 체크하는 게 필수라고 생각합니다.

성능 걱정은 없을까요?

is_host는 User 모델의 필드라서 추가 DB 쿼리가 필요 없고, calendar 조회도 어차피 해야 하는 작업이라 성능에 큰 영향은 없다고 봅니다.

답변 1

0

한날님의 프로필 이미지
한날
지식공유자

자격과 상태로 구분하는 정책이군요. 👍

그렇다면 is_host=False 는 캘린더 보유 여부와 무관하게 게스트로 분류하시는 거예요? 명료하네요. 🙂

고리오영감님의 프로필 이미지
고리오영감

작성한 질문수

질문하기