from typing import Optional from sqlalchemy.orm import Session from sqlalchemy import exc from models.car import Car from schemas.car import CarCreate, CarSchema def create_car(db: Session, car_data: CarCreate) -> Car: """ Creates a new car in the database. Args: db (Session): The database session. car_data (CarCreate): The data for the car to create. Returns: Car: The newly created car object. """ try: db_car = Car(name=car_data.name, year=car_data.year) db.add(db_car) db.commit() db.refresh(db_car) return db_car except exc.IntegrityError: db.rollback() raise ValueError("Car name already exists") def get_car_by_name(db: Session, name: str) -> Optional[CarSchema]: """ Retrieves a car by its name. Args: db (Session): The database session. name (str): The name of the car to retrieve. Returns: Optional[CarSchema]: The car schema object if found, otherwise None. """ car = db.query(Car).filter(Car.name == name).first() if car: return CarSchema.from_orm(car) return None