Files
MediaManager-maxdorninger/media_manager/indexer/repository.py
maxDorninger ee9575bb2b format files
2025-07-10 01:31:48 +02:00

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