mirror of
https://github.com/maxdorninger/MediaManager.git
synced 2026-04-19 08:03:27 +02:00
34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
import logging
|
|
|
|
from sqlalchemy.orm import Session
|
|
|
|
from media_manager.indexer.models import IndexerQueryResult
|
|
from media_manager.indexer.schemas import (
|
|
IndexerQueryResultId,
|
|
IndexerQueryResult as IndexerQueryResultSchema,
|
|
)
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
class IndexerRepository:
|
|
def __init__(self, db: Session):
|
|
self.db = db
|
|
|
|
def get_result(self, result_id: IndexerQueryResultId) -> IndexerQueryResultSchema:
|
|
return IndexerQueryResultSchema.model_validate(
|
|
self.db.get(IndexerQueryResult, result_id)
|
|
)
|
|
|
|
def save_result(self, result: IndexerQueryResultSchema) -> IndexerQueryResultSchema:
|
|
log.debug("Saving indexer query result: %s", result)
|
|
|
|
result_data = result.model_dump()
|
|
result_data["download_url"] = str(
|
|
result.download_url
|
|
) # this is the needful, because sqlalchemy is too dumb to handle the HttpUrl type
|
|
|
|
self.db.add(IndexerQueryResult(**result_data))
|
|
self.db.commit()
|
|
return result
|