# FastAPI, 의존성 주입, HTTP 예외 처리용 클래스 임포트
from fastapi import APIRouter, Depends, HTTPException
# SQLAlchemy 세션 타입 임포트
from sqlalchemy.orm import Session
# DB 세션 제공 함수(get_db) 임포트
from db.another_db.mariaDB import get_db
# 요청 본문 검증용 Pydantic 모델(UserCreate) 임포트
from schemas.requests.user_create import UserCreate
# 실제 사용자 생성 로직(create_user) 임포트
from crud.user.user_crud import create_user
# ─────────────────────────────────────────────────────────────────────────────
# 라우터 인스턴스 생성
# ─────────────────────────────────────────────────────────────────────────────
router = APIRouter()
# ─────────────────────────────────────────────────────────────────────────────
# 경로 정의: POST /signup
# ─────────────────────────────────────────────────────────────────────────────
@router.post('/signup')
def signup(
user: UserCreate, # 요청 본문 → UserCreate 모델로 자동 파싱/검증
db: Session = Depends(get_db) # DB 세션 → get_db() 의존성 주입
):
"""
회원가입 엔드포인트
:param user: 이메일, 비밀번호 등을 담은 UserCreate 모델
:param db: SQLAlchemy DB 세션
:return: 생성된 사용자 ID 및 이메일
"""
# ─────────────────────────────────────────────────────────────────────────
# 1) 사용자 생성
# - 비밀번호 해싱, 중복 검사 등 CRUD 로직 수행
# ─────────────────────────────────────────────────────────────────────────
try:
db_user = create_user(db, user)
except ValueError as e:
# 중복 이메일 등 비즈니스 로직 에러 처리
raise HTTPException(status_code=400, detail=str(e))
# ─────────────────────────────────────────────────────────────────────────
# 2) 응답 반환
# - ID, 이메일만 노출 (민감 정보 제외)
# ─────────────────────────────────────────────────────────────────────────
return {
"id": db_user.id,
"email": db_user.email
}