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