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