Spaces:
Sleeping
Sleeping
| from datetime import datetime | |
| from typing import Optional, List | |
| from bson import ObjectId | |
| class PDFFile: | |
| """PDF file model for MongoDB.""" | |
| collection_name = "files" | |
| def __init__( | |
| self, | |
| user_id: str, | |
| filename: str, | |
| original_filename: str, | |
| file_path: str, | |
| file_size: int, | |
| file_type: str = "application/pdf", | |
| created_at: Optional[datetime] = None, | |
| _id: Optional[ObjectId] = None | |
| ): | |
| self._id = _id or ObjectId() | |
| self.user_id = user_id | |
| self.filename = filename | |
| self.original_filename = original_filename | |
| self.file_path = file_path | |
| self.file_size = file_size | |
| self.file_type = file_type | |
| self.created_at = created_at or datetime.utcnow() | |
| def to_dict(self) -> dict: | |
| """Convert file to dictionary for MongoDB insertion.""" | |
| return { | |
| "_id": self._id, | |
| "user_id": self.user_id, | |
| "filename": self.filename, | |
| "original_filename": self.original_filename, | |
| "file_path": self.file_path, | |
| "file_size": self.file_size, | |
| "file_type": self.file_type, | |
| "created_at": self.created_at | |
| } | |
| def from_dict(cls, data: dict) -> "PDFFile": | |
| """Create PDFFile instance from MongoDB document.""" | |
| return cls( | |
| _id=data.get("_id"), | |
| user_id=data.get("user_id"), | |
| filename=data.get("filename"), | |
| original_filename=data.get("original_filename"), | |
| file_path=data.get("file_path"), | |
| file_size=data.get("file_size"), | |
| file_type=data.get("file_type"), | |
| created_at=data.get("created_at") | |
| ) | |
| def id(self) -> str: | |
| """Get string representation of file ID.""" | |
| return str(self._id) | |
| class MergedPDF: | |
| """Merged PDF file model for MongoDB.""" | |
| collection_name = "merged_files" | |
| def __init__( | |
| self, | |
| user_id: str, | |
| filename: str, | |
| file_path: str, | |
| file_size: int, | |
| source_file_ids: List[str], | |
| created_at: Optional[datetime] = None, | |
| _id: Optional[ObjectId] = None | |
| ): | |
| self._id = _id or ObjectId() | |
| self.user_id = user_id | |
| self.filename = filename | |
| self.file_path = file_path | |
| self.file_size = file_size | |
| self.source_file_ids = source_file_ids | |
| self.created_at = created_at or datetime.utcnow() | |
| def to_dict(self) -> dict: | |
| """Convert merged file to dictionary for MongoDB insertion.""" | |
| return { | |
| "_id": self._id, | |
| "user_id": self.user_id, | |
| "filename": self.filename, | |
| "file_path": self.file_path, | |
| "file_size": self.file_size, | |
| "source_file_ids": self.source_file_ids, | |
| "created_at": self.created_at | |
| } | |
| def from_dict(cls, data: dict) -> "MergedPDF": | |
| """Create MergedPDF instance from MongoDB document.""" | |
| return cls( | |
| _id=data.get("_id"), | |
| user_id=data.get("user_id"), | |
| filename=data.get("filename"), | |
| file_path=data.get("file_path"), | |
| file_size=data.get("file_size"), | |
| source_file_ids=data.get("source_file_ids"), | |
| created_at=data.get("created_at") | |
| ) | |
| def id(self) -> str: | |
| """Get string representation of merged file ID.""" | |
| return str(self._id) | |