69 lines
1.7 KiB
Python
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"
|