Fix database migration error related to app module imports

- Fixed circular import issue between base.py and base_class.py
- Updated base_class.py to define Base directly and import models
- Refactored base.py to import Base from base_class.py
- Updated all models to import Base from base_class.py
- Enhanced error handling in migrations/env.py to catch ImportError
This commit is contained in:
Automated Action 2025-06-12 17:46:42 +00:00
parent 120794996d
commit f14ce141af
7 changed files with 19 additions and 9 deletions

View File

@ -1,3 +1,3 @@
from sqlalchemy.ext.declarative import declarative_base # This module is used for SQLAlchemy session setup
# Import from base_class instead of defining Base here to avoid circular imports
Base = declarative_base() from app.db.base_class import Base # noqa

View File

@ -1,2 +1,11 @@
# Import all the models, so that Base has them before being # Import all the models, so that Base has them before being
# imported by Alembic # 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

View File

@ -2,7 +2,7 @@ from datetime import datetime
from sqlalchemy import Column, DateTime, ForeignKey, Integer from sqlalchemy import Column, DateTime, ForeignKey, Integer
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from app.db.base import Base from app.db.base_class import Base
class CartItem(Base): class CartItem(Base):

View File

@ -3,7 +3,7 @@ from enum import Enum as PyEnum
from sqlalchemy import Column, DateTime, Enum, Float, ForeignKey, Integer, String from sqlalchemy import Column, DateTime, Enum, Float, ForeignKey, Integer, String
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from app.db.base import Base from app.db.base_class import Base
class OrderStatus(str, PyEnum): class OrderStatus(str, PyEnum):

View File

@ -2,7 +2,7 @@ from datetime import datetime
from sqlalchemy import Column, DateTime, Float, Integer, String, Text from sqlalchemy import Column, DateTime, Float, Integer, String, Text
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from app.db.base import Base from app.db.base_class import Base
class Product(Base): class Product(Base):

View File

@ -2,7 +2,7 @@ from datetime import datetime
from sqlalchemy import Boolean, Column, DateTime, Integer, String from sqlalchemy import Boolean, Column, DateTime, Integer, String
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from app.db.base import Base from app.db.base_class import Base
class User(Base): class User(Base):

View File

@ -13,8 +13,9 @@ sys.path.insert(0, parent_dir)
# Import models for alembic # Import models for alembic
try: try:
from app.db.base_class import Base # noqa: E402 # Import Base and all models
except ModuleNotFoundError: from app.db.base_class import Base
except (ModuleNotFoundError, ImportError):
# For container environments where paths might differ # For container environments where paths might differ
from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.ext.declarative import declarative_base