49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from src.db.models.media import MediaFile
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class MediaFileResponse(BaseModel):
|
|
id: str
|
|
created_date: datetime
|
|
last_modified_date: datetime
|
|
version: int
|
|
title: Optional[str]
|
|
file_name: Optional[str]
|
|
cloud_link: Optional[str]
|
|
url: Optional[str]
|
|
review: bool = False
|
|
should_download: bool = False
|
|
|
|
def file_to_response(mediafile: MediaFile) -> MediaFileResponse:
|
|
response: MediaFileResponse = MediaFileResponse(
|
|
id=mediafile.id,
|
|
created_date=mediafile.created_date,
|
|
last_modified_date=mediafile.last_modified_date,
|
|
version=mediafile.version,
|
|
title=mediafile.title,
|
|
file_name=mediafile.file_name,
|
|
cloud_link=mediafile.cloud_link,
|
|
url=mediafile.url,
|
|
review=mediafile.review,
|
|
should_download=mediafile.should_download
|
|
)
|
|
return response
|
|
|
|
|
|
class Link(BaseModel):
|
|
url: str
|
|
|
|
def set_file(model: MediaFileResponse, mediafile: MediaFile) -> None:
|
|
mediafile.file_name = model.file_name
|
|
mediafile.cloud_link = model.cloud_link
|
|
if model.url is not None:
|
|
mediafile.url = model.url
|
|
if model.title is not None:
|
|
mediafile.title = model.title
|
|
mediafile.last_modified_date = datetime.now()
|
|
mediafile.review = model.review
|
|
mediafile.should_download = model.should_download
|