base structs as agreed upon
This commit is contained in:
		@@ -10,6 +10,10 @@ from typing import List
 | 
				
			|||||||
app = FastAPI()
 | 
					app = FastAPI()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TODO: needs a global variable to store the landmarks accross function calls
 | 
				
			||||||
 | 
					# linked_tour = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Assuming frontend is calling like this : 
 | 
					# Assuming frontend is calling like this : 
 | 
				
			||||||
#"http://127.0.0.1:8000/process?param1={param1}¶m2={param2}"
 | 
					#"http://127.0.0.1:8000/process?param1={param1}¶m2={param2}"
 | 
				
			||||||
@app.post("/optimizer_coords/{start_lat}/{start_lon}/{finish_lat}/{finish_lon}")
 | 
					@app.post("/optimizer_coords/{start_lat}/{start_lon}/{finish_lat}/{finish_lon}")
 | 
				
			||||||
@@ -51,10 +55,21 @@ def main1(start_lat: float, start_lon: float, preferences: Preferences = Body(..
 | 
				
			|||||||
    # Second stage optimization
 | 
					    # Second stage optimization
 | 
				
			||||||
    refined_tour = refine_optimization(landmarks, base_tour, max_walking_time*60+detour, True)
 | 
					    refined_tour = refine_optimization(landmarks, base_tour, max_walking_time*60+detour, True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # TODO: should look something like this 
 | 
				
			||||||
 | 
					    # # set time to reach and transform into fully functional linked list
 | 
				
			||||||
 | 
					    # linked_tour += link(refined_tour)
 | 
				
			||||||
 | 
					    # return {
 | 
				
			||||||
 | 
					    #     'city_name': 'Paris',
 | 
				
			||||||
 | 
					    #     'n_stops': len(linked_tour),
 | 
				
			||||||
 | 
					    #     'first_landmark_uuid': linked_tour[0].uuid,
 | 
				
			||||||
 | 
					    # }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    return refined_tour
 | 
					    return refined_tour
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# input city, country in the form of 'Paris, France'
 | 
					# input city, country in the form of 'Paris, France'
 | 
				
			||||||
@app.post("/test2/{city_country}")
 | 
					@app.post("/test2/{city_country}")
 | 
				
			||||||
def test2(city_country: str, preferences: Preferences = Body(...)) -> List[Landmark]:
 | 
					def test2(city_country: str, preferences: Preferences = Body(...)) -> List[Landmark]:
 | 
				
			||||||
@@ -67,4 +82,9 @@ def test2(city_country: str, preferences: Preferences = Body(...)) -> List[Landm
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@app.get("/landmark/{landmark_uuid}")
 | 
				
			||||||
 | 
					def get_landmark(landmark_uuid: str) -> Landmark:
 | 
				
			||||||
 | 
					    #cherche dans linked_tour et retourne le landmark correspondant
 | 
				
			||||||
 | 
					    pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,20 +1,30 @@
 | 
				
			|||||||
from typing import Optional
 | 
					from typing import Optional
 | 
				
			||||||
from pydantic import BaseModel
 | 
					from pydantic import BaseModel, Field
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from .landmarktype import LandmarkType
 | 
					from .landmarktype import LandmarkType
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from uuid import uuid4
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Output to frontend
 | 
					# Output to frontend
 | 
				
			||||||
class Landmark(BaseModel) :
 | 
					class Landmark(BaseModel) :
 | 
				
			||||||
 | 
					    # Unique ID of a given landmark
 | 
				
			||||||
 | 
					    uuid: str = Field(default_factory=uuid4)                    # TODO implement this ASAP
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    # Properties of the landmark
 | 
				
			||||||
    name : str
 | 
					    name : str
 | 
				
			||||||
    type: LandmarkType      # De facto mapping depending on how the query was executed with overpass. Should still EXACTLY correspond to the preferences
 | 
					    type: LandmarkType      # De facto mapping depending on how the query was executed with overpass. Should still EXACTLY correspond to the preferences
 | 
				
			||||||
    location : tuple
 | 
					    location : tuple
 | 
				
			||||||
    osm_type : str
 | 
					    osm_type : str
 | 
				
			||||||
    osm_id : int
 | 
					    osm_id : int
 | 
				
			||||||
    attractiveness : int
 | 
					    attractiveness : int
 | 
				
			||||||
    must_do : bool
 | 
					 | 
				
			||||||
    n_tags : int
 | 
					    n_tags : int
 | 
				
			||||||
    time_to_reach : Optional[int] = 0
 | 
					    image_url : Optional[str] = None                            # TODO future
 | 
				
			||||||
 | 
					    description : Optional[str] = None                          # TODO future
 | 
				
			||||||
 | 
					    duration : Optional[int] = 0                                # TODO future
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    # Additional properties depending on specific tour
 | 
				
			||||||
 | 
					    must_do : bool
 | 
				
			||||||
 | 
					    is_secondary : Optional[bool] = False                       # TODO future   
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					    time_to_reach_next : Optional[int] = 0                      # TODO fix this in existing code
 | 
				
			||||||
 | 
					    next_uuid : Optional[str] = None                            # TODO implement this ASAP
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user