|  |  | @ -19,10 +19,10 @@ class PokemonList: | 
			
		
	
		
		
			
				
					
					|  |  |  |     def sort_by_name(self, reverse=False): |  |  |  |     def sort_by_name(self, reverse=False): | 
			
		
	
		
		
			
				
					
					|  |  |  |         with Session(self.engine) as session: |  |  |  |         with Session(self.engine) as session: | 
			
		
	
		
		
			
				
					
					|  |  |  |             if reverse: |  |  |  |             if reverse: | 
			
		
	
		
		
			
				
					
					|  |  |  |                 result = session.query(Pokemon).where(Pokemon.end_time > datetime.now() + self.timedelta)\ |  |  |  |                 result = session.query(Pokemon).where(Pokemon.visited.is_(False), Pokemon.end_time > datetime.now() + self.timedelta)\ | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                         .order_by(desc(Pokemon.name)) |  |  |  |                         .order_by(desc(Pokemon.name)) | 
			
		
	
		
		
			
				
					
					|  |  |  |             else: |  |  |  |             else: | 
			
		
	
		
		
			
				
					
					|  |  |  |                 result = session.query(Pokemon).where(Pokemon.end_time > datetime.now() + self.timedelta)\ |  |  |  |                 result = session.query(Pokemon).where(Pokemon.visited.is_(False), Pokemon.end_time > datetime.now() + self.timedelta)\ | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                         .order_by(Pokemon.name) |  |  |  |                         .order_by(Pokemon.name) | 
			
		
	
		
		
			
				
					
					|  |  |  |             session.commit() |  |  |  |             session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  |             session.close() |  |  |  |             session.close() | 
			
		
	
	
		
		
			
				
					|  |  | @ -31,10 +31,10 @@ class PokemonList: | 
			
		
	
		
		
			
				
					
					|  |  |  |     def sort_by_cp(self, reverse=False): |  |  |  |     def sort_by_cp(self, reverse=False): | 
			
		
	
		
		
			
				
					
					|  |  |  |         with Session(self.engine) as session: |  |  |  |         with Session(self.engine) as session: | 
			
		
	
		
		
			
				
					
					|  |  |  |             if reverse: |  |  |  |             if reverse: | 
			
		
	
		
		
			
				
					
					|  |  |  |                 result = session.query(Pokemon).where(Pokemon.end_time > datetime.now() + self.timedelta) \ |  |  |  |                 result = session.query(Pokemon).where(Pokemon.visited.is_(False), Pokemon.end_time > datetime.now() + self.timedelta) \ | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                     .order_by(desc(Pokemon.cp)) |  |  |  |                     .order_by(desc(Pokemon.cp)) | 
			
		
	
		
		
			
				
					
					|  |  |  |             else: |  |  |  |             else: | 
			
		
	
		
		
			
				
					
					|  |  |  |                 result = session.query(Pokemon).where(Pokemon.end_time > datetime.now() + self.timedelta) \ |  |  |  |                 result = session.query(Pokemon).where(Pokemon.visited.is_(False), Pokemon.end_time > datetime.now() + self.timedelta) \ | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                     .order_by(Pokemon.cp) |  |  |  |                     .order_by(Pokemon.cp) | 
			
		
	
		
		
			
				
					
					|  |  |  |             session.commit() |  |  |  |             session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  |             session.close() |  |  |  |             session.close() | 
			
		
	
	
		
		
			
				
					|  |  | @ -43,10 +43,10 @@ class PokemonList: | 
			
		
	
		
		
			
				
					
					|  |  |  |     def sort_by_level(self, reverse=False): |  |  |  |     def sort_by_level(self, reverse=False): | 
			
		
	
		
		
			
				
					
					|  |  |  |         with Session(self.engine) as session: |  |  |  |         with Session(self.engine) as session: | 
			
		
	
		
		
			
				
					
					|  |  |  |             if reverse: |  |  |  |             if reverse: | 
			
		
	
		
		
			
				
					
					|  |  |  |                 result = session.query(Pokemon).where(Pokemon.end_time > datetime.now() + self.timedelta) \ |  |  |  |                 result = session.query(Pokemon).where(Pokemon.visited.is_(False), Pokemon.end_time > datetime.now() + self.timedelta) \ | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                     .order_by(desc(Pokemon.level)) |  |  |  |                     .order_by(desc(Pokemon.level)) | 
			
		
	
		
		
			
				
					
					|  |  |  |             else: |  |  |  |             else: | 
			
		
	
		
		
			
				
					
					|  |  |  |                 result = session.query(Pokemon).where(Pokemon.end_time > datetime.now() + self.timedelta) \ |  |  |  |                 result = session.query(Pokemon).where(Pokemon.visited.is_(False), Pokemon.end_time > datetime.now() + self.timedelta) \ | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |                     .order_by(Pokemon.level) |  |  |  |                     .order_by(Pokemon.level) | 
			
		
	
		
		
			
				
					
					|  |  |  |             session.commit() |  |  |  |             session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  |             session.close() |  |  |  |             session.close() | 
			
		
	
	
		
		
			
				
					|  |  | @ -54,14 +54,14 @@ class PokemonList: | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     def sort_by_distance(self, location: Location, reverse=False): |  |  |  |     def sort_by_distance(self, location: Location, reverse=False): | 
			
		
	
		
		
			
				
					
					|  |  |  |         with Session(self.engine) as session: |  |  |  |         with Session(self.engine) as session: | 
			
		
	
		
		
			
				
					
					|  |  |  |             result = session.query(Pokemon).where(Pokemon.end_time > datetime.now() + self.timedelta) |  |  |  |             result = session.query(Pokemon).where(Pokemon.visited.is_(False), Pokemon.end_time > datetime.now() + self.timedelta) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             session.commit() |  |  |  |             session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  |             session.close() |  |  |  |             session.close() | 
			
		
	
		
		
			
				
					
					|  |  |  |         return sorted(result.all(), key=lambda pokemon: location.distance(pokemon.location), reverse=reverse) |  |  |  |         return sorted(result.all(), key=lambda pokemon: location.distance(pokemon.location), reverse=reverse) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     def search_by_name(self, query: str): |  |  |  |     def search_by_name(self, query: str): | 
			
		
	
		
		
			
				
					
					|  |  |  |         with Session(self.engine) as session: |  |  |  |         with Session(self.engine) as session: | 
			
		
	
		
		
			
				
					
					|  |  |  |             result = session.query(Pokemon).where(Pokemon.end_time > datetime.now() + self.timedelta) |  |  |  |             result = session.query(Pokemon).where(Pokemon.visited.is_(False), Pokemon.end_time > datetime.now() + self.timedelta) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             session.commit() |  |  |  |             session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  |             session.close() |  |  |  |             session.close() | 
			
		
	
		
		
			
				
					
					|  |  |  |         return list(filter(lambda pokemon: partial_ratio(query.lower(), pokemon.name) >= 80, result.all())) |  |  |  |         return list(filter(lambda pokemon: partial_ratio(query.lower(), pokemon.name) >= 80, result.all())) | 
			
		
	
	
		
		
			
				
					|  |  | @ -73,3 +73,13 @@ class PokemonList: | 
			
		
	
		
		
			
				
					
					|  |  |  |             session.commit() |  |  |  |             session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  |             session.close() |  |  |  |             session.close() | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     def visit_pokemon(self, pokemon: Pokemon): | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         with Session(self.engine) as session: | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             new_pokemon = session.query(Pokemon).where(Pokemon.name == pokemon.name, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                                        Pokemon.location == pokemon.location, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                                        Pokemon.start_time == pokemon.start_time, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                                        Pokemon.end_time == pokemon.end_time).one() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             new_pokemon.visited = True | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             session.commit() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             session.close() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |