Coverage for src / local_deep_research / database / models / user_news_search_history.py: 86%
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"""Database model for storing user-specific news search history.
3This model tracks all news searches performed by users, allowing for
4personalized search history that is properly isolated per user account.
5"""
7from sqlalchemy import Column, Integer, String, Text
8from sqlalchemy_utc import UtcDateTime, utcnow
10from .base import Base
13class UserNewsSearchHistory(Base):
14 """Stores news search queries performed by users.
16 Each record represents a single search performed on the news page,
17 tracking the query, when it was performed, and how many results were found.
18 """
20 __tablename__ = "user_news_search_history"
22 id = Column(Integer, primary_key=True)
24 # Search details
25 query = Column(Text, nullable=False)
26 search_type = Column(
27 String(50), nullable=False, default="filter"
28 ) # filter, deep, table
29 result_count = Column(Integer, default=0)
31 # Timestamps
32 created_at = Column(
33 UtcDateTime, nullable=False, default=utcnow(), index=True
34 )
36 def __repr__(self):
37 return f"<UserNewsSearchHistory(query='{self.query[:30]}...', type={self.search_type})>"
39 def to_dict(self):
40 """Convert to dictionary for API responses."""
41 return {
42 "id": self.id,
43 "query": self.query,
44 "type": self.search_type,
45 "timestamp": self.created_at.isoformat(),
46 "resultCount": self.result_count,
47 }