freeleaps-service-hub/apps/content/backend/content/models.py

69 lines
1.7 KiB
Python

from datetime import datetime
from typing import List, Optional
from .constants import ContentSource, ContentMediaType, ContentDataFormat
from enum import IntEnum
from common.constants.region import UserRegion
from beanie import Document
from pydantic import BaseModel
class ContentDirectory(BaseModel):
content_name: str
cover_document_id: Optional[str] = None
summary_text: Optional[str] = ""
summary_text_new: Optional[str] = ""
title_text: Optional[str] = ""
title_text_new: Optional[str] = ""
content_link: Optional[str] = None
content_html: Optional[str] = None
content_html_new: Optional[str] = None
content_text: Optional[str] = None
content_text_new: Optional[str] = None
content_document_id: Optional[str] = None
hover_document_id: Optional[str] = None
class MediaType(IntEnum):
UNKNOWN = 0
PDF = 1
PNG = 2
TXT = 3
class DataFormat(IntEnum):
RAW = 0
BASED64 = 1
class ContentFolderDoc(Document):
folder_name: str
content_directories: List[ContentDirectory]
udpate_time: datetime
update_source: ContentSource
valid_thru: datetime
region: UserRegion = UserRegion.ZH_CN
class Settings:
name = "content_folder"
indexes = [
[("folder_name", 1), ("region", 1)], # Compound index
[("udpate_time", -1)], # Descending index for udpate_time
]
class DocumentDoc(Document):
document_id: Optional[str]
file_name: str
created_by: str
create_time: datetime
updated_by: str
update_time: datetime
location: Optional[str]
version_number: int
media_type: MediaType
data_format: DataFormat
is_deleted: Optional[bool] = False
class Settings:
name = "document"