multiple media upload and smartphone preview
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
"""Pydantic models for database entities."""
|
||||
from datetime import datetime, date
|
||||
from datetime import datetime, date, timezone
|
||||
from enum import Enum
|
||||
from typing import Optional, Dict, Any, List
|
||||
from uuid import UUID
|
||||
@@ -312,6 +312,16 @@ class ApiUsageLog(DBModel):
|
||||
created_at: Optional[datetime] = None
|
||||
|
||||
|
||||
class MediaItem(BaseModel):
|
||||
"""Single media item (image or video) for a post."""
|
||||
type: str # "image" | "video"
|
||||
url: str
|
||||
order: int
|
||||
content_type: str # MIME type (e.g., 'image/jpeg', 'video/mp4')
|
||||
uploaded_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
|
||||
metadata: Optional[Dict[str, Any]] = None
|
||||
|
||||
|
||||
class GeneratedPost(DBModel):
|
||||
"""Generated post model."""
|
||||
id: Optional[UUID] = None
|
||||
@@ -327,7 +337,9 @@ class GeneratedPost(DBModel):
|
||||
approved_at: Optional[datetime] = None
|
||||
published_at: Optional[datetime] = None
|
||||
post_type_id: Optional[UUID] = None
|
||||
# Image
|
||||
# Media (multi-media support)
|
||||
media_items: List[MediaItem] = Field(default_factory=list)
|
||||
# DEPRECATED: Image (kept for backward compatibility)
|
||||
image_url: Optional[str] = None
|
||||
# Scheduling fields
|
||||
scheduled_at: Optional[datetime] = None
|
||||
@@ -335,6 +347,11 @@ class GeneratedPost(DBModel):
|
||||
# Metadata for additional info (e.g., LinkedIn post URL, auto-posting status)
|
||||
metadata: Optional[Dict[str, Any]] = None
|
||||
|
||||
@property
|
||||
def has_media(self) -> bool:
|
||||
"""Check if post has any media items."""
|
||||
return len(self.media_items) > 0
|
||||
|
||||
|
||||
# ==================== LICENSE KEY MODELS ====================
|
||||
|
||||
|
||||
Reference in New Issue
Block a user