positioning.py 841 B

12345678910111213141516171819202122232425262728
  1. from typing import List
  2. from fastapi import APIRouter, HTTPException, Query
  3. from loguru import logger
  4. from app.controllers.location.ble.space import get_space_location
  5. from app.models.domain.location import PositionSpaceResponse
  6. from app.schemas.bluetooth import IBeaconBase
  7. router = APIRouter()
  8. @router.post(
  9. "/space/users/{user_id}/projects/{project_id}", response_model=PositionSpaceResponse
  10. )
  11. async def update_in_space(
  12. user_id: str, project_id: str, ibeacon_list: List[IBeaconBase]
  13. ):
  14. space_id = await get_space_location(project_id, ibeacon_list)
  15. logger.debug(f"{user_id} is in {space_id}")
  16. response = {"userId": user_id, "projectId": project_id}
  17. if space_id:
  18. response.update({"result": "success", "spaceId": space_id})
  19. else:
  20. response.update({"result": "failure"})
  21. return response