arxplorer / src /model /source.py
Subhadeep Mandal
Fresh deploy
54eb2ce
Raw
History Blame Contribute Delete
1.08 kB
from typing import TYPE_CHECKING
from sqlalchemy import ForeignKey, Text, String, JSON
from sqlalchemy.orm import Mapped, mapped_column, relationship
from ..database.db import Base, TimestampMixin
class Source(Base, TimestampMixin):
__tablename__ = "source"
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
message_id: Mapped[int] = mapped_column(
ForeignKey("message.id"), nullable=False, index=True
)
source_text: Mapped[str | None] = mapped_column(Text, nullable=True)
source_type: Mapped[str | None] = mapped_column(String(50), nullable=True)
source_url: Mapped[str | None] = mapped_column(String(1024), nullable=True)
source_metadata: Mapped[dict | None] = mapped_column(JSON, nullable=True)
if TYPE_CHECKING:
from .message import Message # pragma: no cover
message: Mapped["Message"] = relationship("Message", back_populates="sources")
def __repr__(self) -> str:
return f"Source(id={self.id}, message_id={self.message_id}, source_url={self.source_url})"