2025-05-23 22:03:39 +02:00

35 lines
1.1 KiB
Python

from datetime import datetime
from typing import Optional, List, Dict, Any
from pydantic import BaseModel, Field, HttpUrl
from bson import ObjectId
from src.db.models.team import PyObjectId
class ImageModel(BaseModel):
"""Database model for an image"""
id: Optional[PyObjectId] = Field(default_factory=PyObjectId, alias="_id")
filename: str
original_filename: str
file_size: int
content_type: str
storage_path: str
public_url: Optional[HttpUrl] = None
team_id: PyObjectId
uploader_id: PyObjectId
upload_date: datetime = Field(default_factory=datetime.utcnow)
last_accessed: Optional[datetime] = None
description: Optional[str] = None
tags: List[str] = []
metadata: Dict[str, Any] = {}
# Fields for image understanding and semantic search
embedding_id: Optional[str] = None
embedding_model: Optional[str] = None
has_embedding: bool = False
class Config:
allow_population_by_field_name = True
arbitrary_types_allowed = True
json_encoders = {
ObjectId: str
}