""" FastAPI dependencies. Provides database sessions, settings, and common dependencies. """ import os from functools import lru_cache from typing import Generator import django from django.conf import settings as django_settings # Initialize Django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mpr.settings") django.setup() from mpr.media_assets.models import MediaAsset, TranscodeJob, TranscodePreset @lru_cache def get_settings(): """Get Django settings.""" return django_settings def get_asset(asset_id: str) -> MediaAsset: """Get asset by ID or raise 404.""" from fastapi import HTTPException try: return MediaAsset.objects.get(id=asset_id) except MediaAsset.DoesNotExist: raise HTTPException(status_code=404, detail="Asset not found") def get_preset(preset_id: str) -> TranscodePreset: """Get preset by ID or raise 404.""" from fastapi import HTTPException try: return TranscodePreset.objects.get(id=preset_id) except TranscodePreset.DoesNotExist: raise HTTPException(status_code=404, detail="Preset not found") def get_job(job_id: str) -> TranscodeJob: """Get job by ID or raise 404.""" from fastapi import HTTPException try: return TranscodeJob.objects.get(id=job_id) except TranscodeJob.DoesNotExist: raise HTTPException(status_code=404, detail="Job not found")