Files
MediaManager/media_manager/indexer/service.py
2025-06-08 17:51:47 +02:00

32 lines
1.0 KiB
Python

from media_manager.indexer import log, indexers
from media_manager.indexer.schemas import IndexerQueryResultId, IndexerQueryResult
from media_manager.indexer.repository import IndexerRepository
class IndexerService:
def __init__(self, indexer_repository: IndexerRepository):
self.repository = indexer_repository
def get_result(self, result_id: IndexerQueryResultId) -> IndexerQueryResult:
return self.repository.get_result(result_id=result_id)
def search(self, query: str) -> list[IndexerQueryResult]:
"""
Search for results using the indexers based on a query.
:param query: The search query.
:param db: The database session.
:return: A list of search results.
"""
log.debug(f"Searching for: {query}")
results = []
for indexer in indexers:
results.extend(indexer.search(query))
for result in results:
self.repository.save_result(result=result)
log.debug(f"Found torrents: {results}")
return results