feat: Add helper functions for Route
This commit is contained in:
parent
36835eaa29
commit
51e3b12c1e
90
helpers/route_helpers.py
Normal file
90
helpers/route_helpers.py
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
from typing import List, Optional
|
||||||
|
from sqlalchemy.orm import Session
|
||||||
|
from models.route import Route
|
||||||
|
from schemas.route import RouteCreate, RouteSchema
|
||||||
|
from uuid import UUID
|
||||||
|
|
||||||
|
def get_route_by_id(db: Session, route_id: UUID) -> Optional[Route]:
|
||||||
|
"""
|
||||||
|
Get a route by its ID.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
db (Session): SQLAlchemy database session.
|
||||||
|
route_id (UUID): The ID of the route to retrieve.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Optional[Route]: The route object if found, None otherwise.
|
||||||
|
"""
|
||||||
|
return db.query(Route).filter(Route.id == route_id).first()
|
||||||
|
|
||||||
|
def get_all_routes(db: Session) -> List[Route]:
|
||||||
|
"""
|
||||||
|
Get all routes from the database.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
db (Session): SQLAlchemy database session.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
List[Route]: A list of all route objects.
|
||||||
|
"""
|
||||||
|
return db.query(Route).all()
|
||||||
|
|
||||||
|
def create_route(db: Session, route_data: RouteCreate) -> Route:
|
||||||
|
"""
|
||||||
|
Create a new route in the database.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
db (Session): SQLAlchemy database session.
|
||||||
|
route_data (RouteCreate): The data to create a new route.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Route: The newly created route object.
|
||||||
|
"""
|
||||||
|
new_route = Route(**route_data.dict())
|
||||||
|
db.add(new_route)
|
||||||
|
db.commit()
|
||||||
|
db.refresh(new_route)
|
||||||
|
return new_route
|
||||||
|
|
||||||
|
def update_route(db: Session, route_id: UUID, route_data: RouteSchema) -> Optional[Route]:
|
||||||
|
"""
|
||||||
|
Update an existing route in the database.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
db (Session): SQLAlchemy database session.
|
||||||
|
route_id (UUID): The ID of the route to update.
|
||||||
|
route_data (RouteSchema): The updated data for the route.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Optional[Route]: The updated route object if found, None otherwise.
|
||||||
|
"""
|
||||||
|
route = get_route_by_id(db, route_id)
|
||||||
|
if route:
|
||||||
|
route.name = route_data.name
|
||||||
|
route.description = route_data.description
|
||||||
|
route.origin = route_data.origin
|
||||||
|
route.destination = route_data.destination
|
||||||
|
route.distance = route_data.distance
|
||||||
|
route.duration = route_data.duration
|
||||||
|
db.commit()
|
||||||
|
db.refresh(route)
|
||||||
|
return route
|
||||||
|
return None
|
||||||
|
|
||||||
|
def delete_route(db: Session, route_id: UUID) -> bool:
|
||||||
|
"""
|
||||||
|
Delete a route from the database.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
db (Session): SQLAlchemy database session.
|
||||||
|
route_id (UUID): The ID of the route to delete.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
bool: True if the route was deleted successfully, False otherwise.
|
||||||
|
"""
|
||||||
|
route = get_route_by_id(db, route_id)
|
||||||
|
if route:
|
||||||
|
db.delete(route)
|
||||||
|
db.commit()
|
||||||
|
return True
|
||||||
|
return False
|
Loading…
x
Reference in New Issue
Block a user