Automated Action f14ce141af 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
2025-06-12 17:46:42 +00:00

48 lines
1.6 KiB
Python

from datetime import datetime
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_class import Base
class OrderStatus(str, PyEnum):
PENDING = "pending"
PAID = "paid"
SHIPPED = "shipped"
DELIVERED = "delivered"
CANCELLED = "cancelled"
class Order(Base):
__tablename__ = "orders"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
status = Column(Enum(OrderStatus), default=OrderStatus.PENDING, nullable=False)
total_amount = Column(Float, nullable=False)
shipping_address = Column(String, nullable=False)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# Relationships
user = relationship("User", back_populates="orders")
items = relationship(
"OrderItem", back_populates="order", cascade="all, delete-orphan"
)
class OrderItem(Base):
__tablename__ = "order_items"
id = Column(Integer, primary_key=True, index=True)
order_id = Column(Integer, ForeignKey("orders.id"), nullable=False)
product_id = Column(Integer, ForeignKey("products.id"), nullable=False)
quantity = Column(Integer, nullable=False)
unit_price = Column(Float, nullable=False)
created_at = Column(DateTime, default=datetime.utcnow)
# Relationships
order = relationship("Order", back_populates="items")
product = relationship("Product", back_populates="order_items")