Nexus / app /models /request_log.py
abc1181's picture
Add SQLite support, TTS/STT endpoints, db_utils helper
67b8c4a
Raw
History Blame Contribute Delete
2.43 kB
from sqlalchemy import text, Index, Integer, Float, Text, func, column
from sqlalchemy.orm import Mapped, mapped_column
from app.models.base import Base
class RequestLog(Base):
__tablename__ = "request_logs"
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
request_id: Mapped[str | None] = mapped_column(Text, unique=True, nullable=True)
provider: Mapped[str | None] = mapped_column(Text, nullable=True)
model: Mapped[str | None] = mapped_column(Text, nullable=True)
endpoint: Mapped[str | None] = mapped_column(Text, nullable=True)
key_id: Mapped[int | None] = mapped_column(Integer, nullable=True)
hub_key_id: Mapped[int | None] = mapped_column(Integer, nullable=True)
tokens_in: Mapped[int] = mapped_column(Integer, default=0)
tokens_out: Mapped[int] = mapped_column(Integer, default=0)
cost: Mapped[float] = mapped_column(Float, default=0)
latency_ms: Mapped[int] = mapped_column(Integer, default=0)
status_code: Mapped[int] = mapped_column(Integer, default=200)
error: Mapped[str | None] = mapped_column(Text, nullable=True)
cached: Mapped[int] = mapped_column(Integer, default=0)
cache_type: Mapped[str | None] = mapped_column(Text, nullable=True)
streaming: Mapped[int] = mapped_column(Integer, default=0)
fallback_count: Mapped[int] = mapped_column(Integer, default=0)
ip: Mapped[str | None] = mapped_column(Text, nullable=True)
session_id: Mapped[str | None] = mapped_column(Text, nullable=True)
injection_flagged: Mapped[int] = mapped_column(Integer, default=0)
has_images: Mapped[int] = mapped_column(Integer, default=0)
ab_variant: Mapped[str | None] = mapped_column(Text, nullable=True)
cache_read_tokens: Mapped[int] = mapped_column(Integer, default=0)
cache_write_tokens: Mapped[int] = mapped_column(Integer, default=0)
timestamp: Mapped[str] = mapped_column(Text, server_default=text("CURRENT_TIMESTAMP"))
__table_args__ = (
Index("idx_request_logs_timestamp", "timestamp"),
Index("idx_request_logs_provider", "provider"),
Index("idx_request_logs_model", "model"),
Index("idx_request_logs_session", "session_id"),
Index("idx_request_logs_key_ts", "key_id", "timestamp"),
Index(
"idx_request_logs_ts_status",
"timestamp",
postgresql_where=column("error").is_(None),
),
)