35 lines
1.1 KiB
Python
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
|
|
} |