matinsn2000's picture
boilerplate for api gateways
c6706bd
raw
history blame
1.3 kB
"""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="")
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)