""" Trading journal models. """ import enum from datetime import datetime from sqlalchemy import ( Column, Integer, String, Numeric, DateTime, Date, Text, Enum as SQLEnum, ForeignKey, ) from sqlalchemy.orm import relationship from app.core.database import Base class TradeType(str, enum.Enum): BUY = "buy" SELL = "sell" class JournalStatus(str, enum.Enum): OPEN = "open" CLOSED = "closed" class TradeJournal(Base): __tablename__ = "trade_journals" id = Column(Integer, primary_key=True, index=True) user_id = Column(Integer, ForeignKey("users.id"), nullable=False, index=True) stock_code = Column(String(20), nullable=False, index=True) stock_name = Column(String(100)) trade_type = Column(SQLEnum(TradeType), nullable=False) entry_price = Column(Numeric(12, 2)) target_price = Column(Numeric(12, 2)) stop_loss_price = Column(Numeric(12, 2)) exit_price = Column(Numeric(12, 2)) entry_date = Column(Date, nullable=False, index=True) exit_date = Column(Date) quantity = Column(Integer) profit_loss = Column(Numeric(14, 2)) profit_loss_pct = Column(Numeric(8, 4)) entry_reason = Column(Text) exit_reason = Column(Text) scenario = Column(Text) lessons_learned = Column(Text) emotional_state = Column(Text) strategy_id = Column(Integer) status = Column(SQLEnum(JournalStatus), default=JournalStatus.OPEN, index=True) created_at = Column(DateTime, default=datetime.utcnow) updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) user = relationship("User", backref="trade_journals")