import asyncio from typing import List, Optional from datetime import datetime, timedelta, timezone from .models import ContentDirectory, ContentFolderDoc from common.constants.region import UserRegion from backend.document.document_manager import DocumentManager from .content_sharepoint_manager import ContentSharePointManager from backend.content.constants import ContentSource class ContentService: def __init__(self) -> None: pass async def retrieve_content_directories_for_folder( self, folder_name: str, region: UserRegion ) -> List[ContentDirectory]: folder = ( await ContentFolderDoc.find( ContentFolderDoc.folder_name == folder_name, ContentFolderDoc.region == region, ) .sort(-ContentFolderDoc.udpate_time) .first_or_none() ) if folder is None or folder.valid_thru.replace( tzinfo=timezone.utc ) < datetime.now(timezone.utc): folder = await ContentSharePointManager().retrieve_directories_for_folder( folder_name=folder_name, region=region ) return folder.content_directories if folder else None async def retrieve_content_as_media_data(self, document_id: str) -> Optional[str]: document_manager = DocumentManager() return await document_manager.retrieve_document_as_http_media(document_id)