mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
feat(api): add optional search_term query param to image list to search metadata
This commit is contained in:
parent
5d1f6db414
commit
d579aefb3e
@ -323,6 +323,7 @@ async def list_image_dtos(
|
|||||||
limit: int = Query(default=10, description="The number of images per page"),
|
limit: int = Query(default=10, description="The number of images per page"),
|
||||||
order_dir: SQLiteDirection = Query(default=SQLiteDirection.Descending, description="The order of sort"),
|
order_dir: SQLiteDirection = Query(default=SQLiteDirection.Descending, description="The order of sort"),
|
||||||
starred_first: bool = Query(default=True, description="Whether to sort by starred images first"),
|
starred_first: bool = Query(default=True, description="Whether to sort by starred images first"),
|
||||||
|
search_term: Optional[str] = Query(default=None, description="The term to search for"),
|
||||||
) -> OffsetPaginatedResults[ImageDTO]:
|
) -> OffsetPaginatedResults[ImageDTO]:
|
||||||
"""Gets a list of image DTOs"""
|
"""Gets a list of image DTOs"""
|
||||||
|
|
||||||
@ -335,6 +336,7 @@ async def list_image_dtos(
|
|||||||
categories,
|
categories,
|
||||||
is_intermediate,
|
is_intermediate,
|
||||||
board_id,
|
board_id,
|
||||||
|
search_term
|
||||||
)
|
)
|
||||||
|
|
||||||
return image_dtos
|
return image_dtos
|
||||||
|
@ -44,6 +44,7 @@ class ImageRecordStorageBase(ABC):
|
|||||||
categories: Optional[list[ImageCategory]] = None,
|
categories: Optional[list[ImageCategory]] = None,
|
||||||
is_intermediate: Optional[bool] = None,
|
is_intermediate: Optional[bool] = None,
|
||||||
board_id: Optional[str] = None,
|
board_id: Optional[str] = None,
|
||||||
|
search_term: Optional[str] = None,
|
||||||
) -> OffsetPaginatedResults[ImageRecord]:
|
) -> OffsetPaginatedResults[ImageRecord]:
|
||||||
"""Gets a page of image records."""
|
"""Gets a page of image records."""
|
||||||
pass
|
pass
|
||||||
|
@ -151,6 +151,7 @@ class SqliteImageRecordStorage(ImageRecordStorageBase):
|
|||||||
categories: Optional[list[ImageCategory]] = None,
|
categories: Optional[list[ImageCategory]] = None,
|
||||||
is_intermediate: Optional[bool] = None,
|
is_intermediate: Optional[bool] = None,
|
||||||
board_id: Optional[str] = None,
|
board_id: Optional[str] = None,
|
||||||
|
search_term: Optional[str] = None,
|
||||||
) -> OffsetPaginatedResults[ImageRecord]:
|
) -> OffsetPaginatedResults[ImageRecord]:
|
||||||
try:
|
try:
|
||||||
self._lock.acquire()
|
self._lock.acquire()
|
||||||
@ -211,6 +212,13 @@ class SqliteImageRecordStorage(ImageRecordStorageBase):
|
|||||||
"""
|
"""
|
||||||
query_params.append(board_id)
|
query_params.append(board_id)
|
||||||
|
|
||||||
|
# Search term condition
|
||||||
|
if search_term:
|
||||||
|
query_conditions += """--sql
|
||||||
|
AND json_extract(images.metadata, '$') LIKE ?
|
||||||
|
"""
|
||||||
|
query_params.append(f'%{search_term}%')
|
||||||
|
|
||||||
if starred_first:
|
if starred_first:
|
||||||
query_pagination = f"""--sql
|
query_pagination = f"""--sql
|
||||||
ORDER BY images.starred DESC, images.created_at {order_dir.value} LIMIT ? OFFSET ?
|
ORDER BY images.starred DESC, images.created_at {order_dir.value} LIMIT ? OFFSET ?
|
||||||
|
@ -123,6 +123,7 @@ class ImageServiceABC(ABC):
|
|||||||
categories: Optional[list[ImageCategory]] = None,
|
categories: Optional[list[ImageCategory]] = None,
|
||||||
is_intermediate: Optional[bool] = None,
|
is_intermediate: Optional[bool] = None,
|
||||||
board_id: Optional[str] = None,
|
board_id: Optional[str] = None,
|
||||||
|
search_term: Optional[str] = None
|
||||||
) -> OffsetPaginatedResults[ImageDTO]:
|
) -> OffsetPaginatedResults[ImageDTO]:
|
||||||
"""Gets a paginated list of image DTOs."""
|
"""Gets a paginated list of image DTOs."""
|
||||||
pass
|
pass
|
||||||
|
@ -214,6 +214,7 @@ class ImageService(ImageServiceABC):
|
|||||||
categories: Optional[list[ImageCategory]] = None,
|
categories: Optional[list[ImageCategory]] = None,
|
||||||
is_intermediate: Optional[bool] = None,
|
is_intermediate: Optional[bool] = None,
|
||||||
board_id: Optional[str] = None,
|
board_id: Optional[str] = None,
|
||||||
|
search_term: Optional[str] = None
|
||||||
) -> OffsetPaginatedResults[ImageDTO]:
|
) -> OffsetPaginatedResults[ImageDTO]:
|
||||||
try:
|
try:
|
||||||
results = self.__invoker.services.image_records.get_many(
|
results = self.__invoker.services.image_records.get_many(
|
||||||
@ -225,6 +226,7 @@ class ImageService(ImageServiceABC):
|
|||||||
categories,
|
categories,
|
||||||
is_intermediate,
|
is_intermediate,
|
||||||
board_id,
|
board_id,
|
||||||
|
search_term
|
||||||
)
|
)
|
||||||
|
|
||||||
image_dtos = [
|
image_dtos = [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user