| """ |
| MediGenius — models/message.py |
| SQLAlchemy ORM model for chat messages. |
| """ |
|
|
| from datetime import datetime |
| from typing import Dict |
|
|
| from sqlalchemy import Column, DateTime, Integer, String, Text |
| from sqlalchemy.orm import declarative_base |
|
|
| Base = declarative_base() |
|
|
|
|
| class Message(Base): |
| """Persisted chat message (user or assistant turn).""" |
|
|
| __tablename__ = "messages" |
|
|
| id = Column(Integer, primary_key=True, autoincrement=True) |
| session_id = Column(String(255), nullable=False, index=True) |
| role = Column(String(50), nullable=False) |
| content = Column(Text, nullable=False) |
| source = Column(String(255), nullable=True) |
| timestamp = Column(DateTime, default=datetime.utcnow, nullable=False) |
|
|
| def to_dict(self) -> Dict: |
| return { |
| "id": self.id, |
| "session_id": self.session_id, |
| "role": self.role, |
| "content": self.content, |
| "source": self.source, |
| "timestamp": self.timestamp.isoformat() if self.timestamp else None, |
| } |
|
|