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
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

View File

@ -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

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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