from datetime import datetime from enum import Enum from typing import Any from sqlalchemy import ( Column, DateTime, ForeignKey, Integer, String, ) from sqlalchemy.dialects.postgresql import ENUM from sqlalchemy.orm import declarative_base from sqlalchemy.types import Boolean from app.models.base import Base from app.utils.utility import to_dict class RoleType(Enum): USER = "USER" BOT = "BOT" class Message(Base): __tablename__ = "Messages" id = Column(Integer, primary_key=True) chatId = Column(Integer, ForeignKey("Chats.id"), nullable=False) userId = Column(Integer, ForeignKey("Users.userId"), nullable=False) roleType = Column(ENUM(RoleType, name="role_type_enum"), nullable=False) # Enum for "user" or "bot" text = Column(String, nullable=False) timestamp = Column(DateTime, default=datetime.now) isActive = Column(Boolean, default=True) def dict(self) -> dict[str, Any]: return to_dict(self)