from typing import Optional, Dict from dataclasses import dataclass, field from datetime import datetime from bs4 import Tag from utils.typings import BoardPath @dataclass class Attachment: url: str source_url: str source_filename: Optional[str] = None source_suffix: Optional[str] = None hash: Optional[str] = None error: Optional[str] = None @dataclass class Post: id: int boardId: str boardPath: BoardPath authorId: Optional[str] = None authorName: Optional[str] = None category: Optional[str] = None title: Optional[str] = None body: Optional[Tag] = None attachments: Dict[str, Attachment] = field(default_factory=lambda: {}) created_at: Optional[datetime] = None