Coverage for src / local_deep_research / database / models / providers.py: 93%
14 statements
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 00:51 +0000
« prev ^ index » next coverage.py v7.12.0, created at 2026-01-11 00:51 +0000
1"""
2LLM provider and model management.
3"""
5from sqlalchemy import JSON, Column, Integer, String, UniqueConstraint
6from sqlalchemy_utc import UtcDateTime, utcnow
8from .base import Base
11class ProviderModel(Base):
12 """
13 Cache available models from all LLM providers.
14 """
16 __tablename__ = "provider_models"
18 id = Column(Integer, primary_key=True, index=True)
19 provider = Column(String(50), nullable=False, index=True)
20 model_key = Column(String(255), nullable=False)
21 model_label = Column(String(255), nullable=False)
22 model_metadata = Column(JSON, nullable=True) # For additional model info
23 last_updated = Column(UtcDateTime, server_default=utcnow(), nullable=False)
25 # Composite unique constraint to prevent duplicates
26 __table_args__ = (
27 UniqueConstraint("provider", "model_key", name="uix_provider_model"),
28 )
30 def __repr__(self):
31 return (
32 f"<ProviderModel(provider={self.provider}, model={self.model_key})>"
33 )