freeleaps-service-hub/apps/content/backend/content/content_service.py
2025-01-30 16:57:57 +00:00

38 lines
1.4 KiB
Python

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)