from fastapi import APIRouter, Depends from app.deps import SessionDep, require_bot, telegram_owner from app.schemas import BotCartAdd, BotOrderCreate, CartOut, DialogIn, DialogOut, OrderOut from app.services import ( add_item, checkout, clear_dialog, get_dialog, load_cart, remove_item, save_dialog, ) router = APIRouter(prefix="/internal", dependencies=[Depends(require_bot)]) @router.post("/cart/items", response_model=CartOut) async def bot_add_item(body: BotCartAdd, db: SessionDep) -> CartOut: return await add_item( db, owner_key=telegram_owner(body.telegram_user_id), product_id=body.product_id, qty=body.qty, ) @router.get("/cart/{telegram_user_id}", response_model=CartOut) async def bot_cart(telegram_user_id: int, db: SessionDep) -> CartOut: return await load_cart(db, telegram_owner(telegram_user_id)) @router.delete("/cart/{telegram_user_id}/{product_id}", response_model=CartOut) async def bot_remove(telegram_user_id: int, product_id: int, db: SessionDep) -> CartOut: return await remove_item(db, owner_key=telegram_owner(telegram_user_id), product_id=product_id) @router.get("/dialog/{telegram_user_id}", response_model=DialogOut | None) async def bot_get_dialog(telegram_user_id: int, db: SessionDep) -> DialogOut | None: return await get_dialog(db, telegram_user_id) @router.put("/dialog/{telegram_user_id}", response_model=DialogOut) async def bot_put_dialog(telegram_user_id: int, body: DialogIn, db: SessionDep) -> DialogOut: return await save_dialog(db, telegram_user_id, body.step, body.name) @router.delete("/dialog/{telegram_user_id}", status_code=204) async def bot_delete_dialog(telegram_user_id: int, db: SessionDep) -> None: await clear_dialog(db, telegram_user_id) @router.post("/orders", response_model=OrderOut) async def bot_order(body: BotOrderCreate, db: SessionDep) -> OrderOut: return await checkout( db, owner_key=telegram_owner(body.telegram_user_id), customer_name=body.customer_name, customer_phone=body.customer_phone, )