diff --git a/app/db/base.py b/app/db/base.py index 860e542..dfdf7a2 100644 --- a/app/db/base.py +++ b/app/db/base.py @@ -1,3 +1,3 @@ -from sqlalchemy.ext.declarative import declarative_base - -Base = declarative_base() +# This module is used for SQLAlchemy session setup +# Import from base_class instead of defining Base here to avoid circular imports +from app.db.base_class import Base # noqa diff --git a/app/db/base_class.py b/app/db/base_class.py index 990c3e4..ab3c847 100644 --- a/app/db/base_class.py +++ b/app/db/base_class.py @@ -1,2 +1,11 @@ # Import all the models, so that Base has them before being # imported by Alembic +from sqlalchemy.ext.declarative import declarative_base + +Base = declarative_base() + +# Import models to register them with Base +from app.models.user import User # noqa +from app.models.product import Product # noqa +from app.models.order import Order, OrderItem # noqa +from app.models.cart import CartItem # noqa diff --git a/app/models/cart.py b/app/models/cart.py index b681592..55ea41b 100644 --- a/app/models/cart.py +++ b/app/models/cart.py @@ -2,7 +2,7 @@ from datetime import datetime from sqlalchemy import Column, DateTime, ForeignKey, Integer from sqlalchemy.orm import relationship -from app.db.base import Base +from app.db.base_class import Base class CartItem(Base): diff --git a/app/models/order.py b/app/models/order.py index b54cbf0..cfac23d 100644 --- a/app/models/order.py +++ b/app/models/order.py @@ -3,7 +3,7 @@ from enum import Enum as PyEnum from sqlalchemy import Column, DateTime, Enum, Float, ForeignKey, Integer, String from sqlalchemy.orm import relationship -from app.db.base import Base +from app.db.base_class import Base class OrderStatus(str, PyEnum): diff --git a/app/models/product.py b/app/models/product.py index 5e13afb..9271c4d 100644 --- a/app/models/product.py +++ b/app/models/product.py @@ -2,7 +2,7 @@ from datetime import datetime from sqlalchemy import Column, DateTime, Float, Integer, String, Text from sqlalchemy.orm import relationship -from app.db.base import Base +from app.db.base_class import Base class Product(Base): diff --git a/app/models/user.py b/app/models/user.py index a48e273..01a9983 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -2,7 +2,7 @@ from datetime import datetime from sqlalchemy import Boolean, Column, DateTime, Integer, String from sqlalchemy.orm import relationship -from app.db.base import Base +from app.db.base_class import Base class User(Base): diff --git a/migrations/env.py b/migrations/env.py index ec569ac..ddb7608 100644 --- a/migrations/env.py +++ b/migrations/env.py @@ -13,8 +13,9 @@ sys.path.insert(0, parent_dir) # Import models for alembic try: - from app.db.base_class import Base # noqa: E402 -except ModuleNotFoundError: + # Import Base and all models + from app.db.base_class import Base +except (ModuleNotFoundError, ImportError): # For container environments where paths might differ from sqlalchemy.ext.declarative import declarative_base