Spaces:
Running
Running
Added image embedding as playground and roll backed for create_album end point to not use k mean clustring
cbab173
| """SQLModel database models""" | |
| from sqlmodel import SQLModel, Field | |
| from typing import Optional | |
| from datetime import datetime | |
| import json | |
| class Photo(SQLModel, table=True): | |
| """Photo metadata model""" | |
| id: Optional[int] = Field(default=None, primary_key=True) | |
| filename: str = Field(index=True) | |
| filepath: str # Full path to stored image | |
| tags: str = Field(default="[]") # JSON string of tags | |
| caption: str = Field(default="") | |
| description: str = Field(default="") | |
| embedding: Optional[str] = Field(default=None) # JSON string of embedding vector | |
| created_at: datetime = Field(default_factory=datetime.utcnow) | |
| def get_tags(self) -> list[str]: | |
| """Parse tags from JSON string""" | |
| try: | |
| return json.loads(self.tags) | |
| except: | |
| return [] | |
| def set_tags(self, tags: list[str]): | |
| """Store tags as JSON string""" | |
| self.tags = json.dumps(tags) | |
| def get_embedding(self) -> Optional[list[float]]: | |
| """Parse embedding from JSON string""" | |
| try: | |
| if self.embedding: | |
| return json.loads(self.embedding) | |
| except: | |
| pass | |
| return None | |
| def set_embedding(self, embedding: list[float]): | |
| """Store embedding as JSON string""" | |
| self.embedding = json.dumps(embedding) |