Source code for pihole_lib.models.search

"""Search models."""

from pydantic import Field

from pihole_lib.models.base import StrictModel, TimedResponse
from pihole_lib.models.lists import PiHoleList


[docs] class SearchResultCounts(StrictModel): """Search result counts.""" exact: int = Field(..., description="Number of exact matches") regex: int = Field(..., description="Number of regex matches")
[docs] class SearchGravityCounts(StrictModel): """Search gravity result counts.""" allow: int = Field(..., description="Number of allow list matches") block: int = Field(..., description="Number of block list matches")
[docs] class SearchResults(StrictModel): """Search results summary.""" domains: SearchResultCounts = Field(..., description="Domain search result counts") gravity: SearchGravityCounts = Field( ..., description="Gravity search result counts" ) total: int = Field(..., description="Total number of results")
[docs] class SearchParameters(StrictModel): """Search parameters used.""" N: int = Field(..., description="Maximum number of results returned") partial: bool = Field(..., description="Whether partial matching was used") domain: str = Field(..., description="Domain that was searched for") debug: bool = Field(..., description="Whether debug information was included")
[docs] class SearchData(StrictModel): """Search data container.""" domains: list[PiHoleList] = Field(..., description="List of domain matches") gravity: list[PiHoleList] = Field(..., description="List of gravity matches") results: SearchResults = Field(..., description="Search result summary") parameters: SearchParameters = Field(..., description="Search parameters used")
[docs] class SearchResponse(TimedResponse): """Response for domain search operations.""" search: SearchData = Field(..., description="Search data and results")