diff --git a/alembic/versions/20250414_212405_0ac9306b_update_car.py b/alembic/versions/20250414_212405_0ac9306b_update_car.py new file mode 100644 index 0000000..d83f556 --- /dev/null +++ b/alembic/versions/20250414_212405_0ac9306b_update_car.py @@ -0,0 +1,21 @@ +"""add year column to cars table +Revision ID: 2f8c9a7d5b42 +Revises: 2f6a3c5d1e88 +Create Date: 2023-05-30 15:21:37.844438 +""" +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision = '2f8c9a7d5b42' +down_revision = '2f6a3c5d1e88' +branch_labels = None +depends_on = None + +def upgrade(): + table_name = "cars" + op.add_column(table_name, sa.Column('year', sa.Integer(), nullable=False)) + +def downgrade(): + table_name = "cars" + op.drop_column(table_name, 'year') \ No newline at end of file diff --git a/endpoints/cars.post.py b/endpoints/cars.post.py index f7bbf4a..3b9e6ed 100644 --- a/endpoints/cars.post.py +++ b/endpoints/cars.post.py @@ -1,16 +1,15 @@ -from fastapi import APIRouter, status +from fastapi import APIRouter, Depends +from sqlalchemy.orm import Session +from core.database import get_db from schemas.car import CarCreate, CarSchema from helpers.car_helpers import create_car -from sqlalchemy.orm import Session -from fastapi import Depends -from core.database import get_db router = APIRouter() -@router.post("/cars", status_code=status.HTTP_201_CREATED, response_model=CarSchema) +@router.post("/cars", status_code=201, response_model=CarSchema) async def create_new_car( car_data: CarCreate, db: Session = Depends(get_db) ): - new_car = create_car(db=db, car_data=car_data) + new_car = create_car(db, car_data) return new_car \ No newline at end of file diff --git a/helpers/car_helpers.py b/helpers/car_helpers.py index 82bea6c..1367aac 100644 --- a/helpers/car_helpers.py +++ b/helpers/car_helpers.py @@ -16,7 +16,7 @@ def create_car(db: Session, car_data: CarCreate) -> Car: Car: The newly created car object. """ try: - db_car = Car(**car_data.dict()) + db_car = Car(name=car_data.name, year=car_data.year) # Added 'year' field db.add(db_car) db.commit() db.refresh(db_car) diff --git a/models/car.py b/models/car.py index a6970ac..86c854d 100644 --- a/models/car.py +++ b/models/car.py @@ -1,4 +1,4 @@ -from sqlalchemy import Column, String +from sqlalchemy import Column, String, Integer from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.sql import func from core.database import Base @@ -9,5 +9,6 @@ class Car(Base): id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) name = Column(String, nullable=False, unique=True, index=True) + year = Column(Integer, nullable=False) # Added 'year' field created_at = Column(func.now()) updated_at = Column(func.now(), onupdate=func.now()) \ No newline at end of file diff --git a/schemas/car.py b/schemas/car.py index e6e5a4f..b3be7a6 100644 --- a/schemas/car.py +++ b/schemas/car.py @@ -5,12 +5,14 @@ import uuid class CarBase(BaseModel): name: str = Field(..., description="Name of the car") + year: int = Field(..., description="Year of the car") class CarCreate(CarBase): pass class CarUpdate(CarBase): name: Optional[str] = Field(None, description="Name of the car") + year: Optional[int] = Field(None, description="Year of the car") class CarSchema(CarBase): id: uuid.UUID