# app/modules/tenancy/routes/api/store_profile.py
"""
Store profile management endpoints.

Store Context: Uses token_store_id from JWT token (authenticated store API pattern).
The get_current_store_api dependency guarantees token_store_id is present.
"""

import logging

from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session

from app.api.deps import get_current_store_api
from app.core.database import get_db
from app.modules.tenancy.schemas.auth import UserContext
from app.modules.tenancy.schemas.store import StoreResponse, StoreUpdate
from app.modules.tenancy.services.store_service import store_service

store_profile_router = APIRouter(prefix="/profile")
logger = logging.getLogger(__name__)


@store_profile_router.get("", response_model=StoreResponse)
def get_store_profile(
    current_user: UserContext = Depends(get_current_store_api),
    db: Session = Depends(get_db),
):
    """Get current store profile information."""
    store = store_service.get_store_by_id(db, current_user.token_store_id)
    return store


@store_profile_router.put("", response_model=StoreResponse)
def update_store_profile(
    store_update: StoreUpdate,
    current_user: UserContext = Depends(get_current_store_api),
    db: Session = Depends(get_db),
):
    """Update store profile information."""
    # Service handles permission checking and raises InsufficientPermissionsException if needed
    return store_service.update_store(
        db, current_user.token_store_id, store_update, current_user
    )
