Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Route/Endpoint
- ```
- @router.post("/events/search_by_name/", response_model=SearchEventResultWithCnt)
- async def search_events_by_name1(
- partial_name: PartialName,
- coord:List[float],
- event_container=Depends(get_container),
- current_user: Optional[User]=Depends(get_optional_current_user),
- file_container=Depends(get_file_container),
- user_specific_container=Depends(get_user_specific_container),
- page: int=0
- ):
- if current_user is not None:
- # #print(current_user)
- await add_recent_search(current_user.id, partial_name.partial_name, user_specific_container)
- eventsRes = await search_events_by_name(partial_name, coord, event_container, file_container, page)
- total_count = eventsRes['cnt']
- events = eventsRes['results']
- # Create the result list with the required fields
- result = [
- {
- "id": event["id"],
- "name": event["event_name"],
- "description": event["event_description"],
- "type": event.get("event_type"),
- "thumbnail": {
- "file_name": event.get("thumbnail", {}).get("fileName") or event.get("thumbnail", {}).get("file_name"),
- "file_url": event.get("thumbnail", {}).get("fileUrl") or event.get("thumbnail", {}).get("file_url"),
- "file_type": event.get("thumbnail", {}).get("fileType") or event.get("thumbnail", {}).get("file_type"),
- } if event.get("thumbnail") else None,
- "distance":str(event["distance"]) + "km"
- }
- for event in events
- ]
- # #print(len(result))
- return {
- "cnt": total_count,
- "results": result
- }
- ```
- # Controller
- ```
- async def search_events_by_name(
- partialname: PartialName,
- coord:List[float],
- event_container,
- file_container , page
- ):
- query = """
- SELECT * FROM c
- WHERE CONTAINS(LOWER(c.event_name), LOWER(@partial_name))
- """
- params = [
- {"name": "@partial_name", "value": partialname.partial_name.lower()} # Convert the search term to lowercase
- ]
- events = list(event_container.query_items(
- query=query,
- parameters=params,
- enable_cross_partition_query=True
- ))
- # Fetch and attach the thumbnail (first image file) for each event
- for event in events:
- event['distance']=event_distance(event['location']['geo_tag']['latitude'],event['location']['geo_tag']['longitude'],coord[0],coord[1])
- #print(events)
- total_count = len(events)
- items_per_page = 15
- start_index = page * items_per_page
- end_index = start_index + items_per_page
- paginated_events = events[start_index:end_index]
- return {
- "cnt": total_count,
- "results": paginated_events
- }
- ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement