Advertisement
Guest User

Untitled

a guest
Sep 9th, 2024
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.79 KB | None | 0 0
  1. #Route/Endpoint
  2.  
  3. ```
  4. @router.post("/events/search_by_name/", response_model=SearchEventResultWithCnt)
  5. async def search_events_by_name1(
  6. partial_name: PartialName,
  7. coord:List[float],
  8. event_container=Depends(get_container),
  9. current_user: Optional[User]=Depends(get_optional_current_user),
  10. file_container=Depends(get_file_container),
  11. user_specific_container=Depends(get_user_specific_container),
  12. page: int=0
  13. ):
  14. if current_user is not None:
  15. # #print(current_user)
  16. await add_recent_search(current_user.id, partial_name.partial_name, user_specific_container)
  17.  
  18. eventsRes = await search_events_by_name(partial_name, coord, event_container, file_container, page)
  19.  
  20. total_count = eventsRes['cnt']
  21. events = eventsRes['results']
  22. # Create the result list with the required fields
  23. result = [
  24. {
  25. "id": event["id"],
  26. "name": event["event_name"],
  27. "description": event["event_description"],
  28. "type": event.get("event_type"),
  29. "thumbnail": {
  30. "file_name": event.get("thumbnail", {}).get("fileName") or event.get("thumbnail", {}).get("file_name"),
  31. "file_url": event.get("thumbnail", {}).get("fileUrl") or event.get("thumbnail", {}).get("file_url"),
  32. "file_type": event.get("thumbnail", {}).get("fileType") or event.get("thumbnail", {}).get("file_type"),
  33. } if event.get("thumbnail") else None,
  34. "distance":str(event["distance"]) + "km"
  35. }
  36. for event in events
  37. ]
  38. # #print(len(result))
  39. return {
  40. "cnt": total_count,
  41. "results": result
  42. }
  43. ```
  44.  
  45. # Controller
  46.  
  47. ```
  48. async def search_events_by_name(
  49. partialname: PartialName,
  50. coord:List[float],
  51. event_container,
  52. file_container , page
  53. ):
  54. query = """
  55. SELECT * FROM c
  56. WHERE CONTAINS(LOWER(c.event_name), LOWER(@partial_name))
  57. """
  58.  
  59. params = [
  60. {"name": "@partial_name", "value": partialname.partial_name.lower()} # Convert the search term to lowercase
  61. ]
  62.  
  63. events = list(event_container.query_items(
  64. query=query,
  65. parameters=params,
  66. enable_cross_partition_query=True
  67. ))
  68.  
  69. # Fetch and attach the thumbnail (first image file) for each event
  70. for event in events:
  71. event['distance']=event_distance(event['location']['geo_tag']['latitude'],event['location']['geo_tag']['longitude'],coord[0],coord[1])
  72.  
  73. #print(events)
  74. total_count = len(events)
  75. items_per_page = 15
  76. start_index = page * items_per_page
  77. end_index = start_index + items_per_page
  78. paginated_events = events[start_index:end_index]
  79.  
  80. return {
  81. "cnt": total_count,
  82. "results": paginated_events
  83. }
  84. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement