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

1""" 

2LLM provider and model management. 

3""" 

4 

5from sqlalchemy import JSON, Column, Integer, String, UniqueConstraint 

6from sqlalchemy_utc import UtcDateTime, utcnow 

7 

8from .base import Base 

9 

10 

11class ProviderModel(Base): 

12 """ 

13 Cache available models from all LLM providers. 

14 """ 

15 

16 __tablename__ = "provider_models" 

17 

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) 

24 

25 # Composite unique constraint to prevent duplicates 

26 __table_args__ = ( 

27 UniqueConstraint("provider", "model_key", name="uix_provider_model"), 

28 ) 

29 

30 def __repr__(self): 

31 return ( 

32 f"<ProviderModel(provider={self.provider}, model={self.model_key})>" 

33 )