From 80b0c5eab4aef0892df1e3c154b4f3963332cf07 Mon Sep 17 00:00:00 2001 From: maryhipp Date: Tue, 15 Aug 2023 08:25:12 -0700 Subject: [PATCH] change from pin to star --- invokeai/app/api/routers/images.py | 27 +++++++++++++++++++ invokeai/app/services/image_record_storage.py | 26 +++++++++--------- invokeai/app/services/models/image_record.py | 14 +++++----- 3 files changed, 47 insertions(+), 20 deletions(-) diff --git a/invokeai/app/api/routers/images.py b/invokeai/app/api/routers/images.py index 21fd09e051..f31c075a50 100644 --- a/invokeai/app/api/routers/images.py +++ b/invokeai/app/api/routers/images.py @@ -286,3 +286,30 @@ async def delete_images_from_list( return DeleteImagesFromListResult(deleted_images=deleted_images) except Exception as e: raise HTTPException(status_code=500, detail="Failed to delete images") + + +@images_router.post("/star", operation_id="star_images_in_list") +async def star_images_in_list( + image_names: list[str] = Body(description="The list of names of images to star", embed=True), +): + try: + for image_name in image_names: + try: + ApiDependencies.invoker.services.images.update(image_name, changes=ImageRecordChanges(starred=True)) + except: + pass + except Exception as e: + raise HTTPException(status_code=500, detail="Failed to star images") + +@images_router.post("/unstar", operation_id="unstar_images_in_list") +async def unstar_images_in_list( + image_names: list[str] = Body(description="The list of names of images to unstar", embed=True), +): + try: + for image_name in image_names: + try: + ApiDependencies.invoker.services.images.update(image_name, changes=ImageRecordChanges(starred=False)) + except: + pass + except Exception as e: + raise HTTPException(status_code=500, detail="Failed to unstar images") \ No newline at end of file diff --git a/invokeai/app/services/image_record_storage.py b/invokeai/app/services/image_record_storage.py index d704a631a7..53d792a577 100644 --- a/invokeai/app/services/image_record_storage.py +++ b/invokeai/app/services/image_record_storage.py @@ -67,7 +67,7 @@ IMAGE_DTO_COLS = ", ".join( "created_at", "updated_at", "deleted_at", - "pinned" + "starred" ], ) ) @@ -140,7 +140,7 @@ class ImageRecordStorageBase(ABC): node_id: Optional[str], metadata: Optional[dict], is_intermediate: bool = False, - pinned: bool = False + starred: bool = False ) -> datetime: """Saves an image record.""" pass @@ -205,10 +205,10 @@ class SqliteImageRecordStorage(ImageRecordStorageBase): self._cursor.execute("PRAGMA table_info(images)") columns = [column[1] for column in self._cursor.fetchall()] - if "pinned" not in columns: + if "starred" not in columns: self._cursor.execute( """--sql - ALTER TABLE images ADD COLUMN pinned BOOLEAN DEFAULT FALSE; + ALTER TABLE images ADD COLUMN starred BOOLEAN DEFAULT FALSE; """ ) @@ -236,7 +236,7 @@ class SqliteImageRecordStorage(ImageRecordStorageBase): self._cursor.execute( """--sql - CREATE INDEX IF NOT EXISTS idx_images_pinned ON images(pinned); + CREATE INDEX IF NOT EXISTS idx_images_starred ON images(starred); """ ) @@ -339,15 +339,15 @@ class SqliteImageRecordStorage(ImageRecordStorageBase): (changes.is_intermediate, image_name), ) - # Change the image's `pinned`` state - if changes.pinned is not None: + # Change the image's `starred`` state + if changes.starred is not None: self._cursor.execute( f"""--sql UPDATE images - SET pinned = ? + SET starred = ? WHERE image_name = ?; """, - (changes.pinned, image_name), + (changes.starred, image_name), ) self._conn.commit() @@ -426,7 +426,7 @@ class SqliteImageRecordStorage(ImageRecordStorageBase): query_params.append(board_id) query_pagination = """--sql - ORDER BY images.pinned DESC, images.created_at DESC LIMIT ? OFFSET ? + ORDER BY images.starred DESC, images.created_at DESC LIMIT ? OFFSET ? """ # Final images query with pagination @@ -529,7 +529,7 @@ class SqliteImageRecordStorage(ImageRecordStorageBase): node_id: Optional[str], metadata: Optional[dict], is_intermediate: bool = False, - pinned: bool = False + starred: bool = False ) -> datetime: try: metadata_json = None if metadata is None else json.dumps(metadata) @@ -546,7 +546,7 @@ class SqliteImageRecordStorage(ImageRecordStorageBase): session_id, metadata, is_intermediate, - pinned + starred ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?); """, @@ -560,7 +560,7 @@ class SqliteImageRecordStorage(ImageRecordStorageBase): session_id, metadata_json, is_intermediate, - pinned, + starred, ), ) self._conn.commit() diff --git a/invokeai/app/services/models/image_record.py b/invokeai/app/services/models/image_record.py index 27cbea011f..e386c33d1f 100644 --- a/invokeai/app/services/models/image_record.py +++ b/invokeai/app/services/models/image_record.py @@ -39,8 +39,8 @@ class ImageRecord(BaseModelExcludeNull): description="The node ID that generated this image, if it is a generated image.", ) """The node ID that generated this image, if it is a generated image.""" - pinned: bool = Field(description="Whether this image is pinned.") - """Whether this image is pinned.""" + starred: bool = Field(description="Whether this image is starred.") + """Whether this image is starred.""" class ImageRecordChanges(BaseModelExcludeNull, extra=Extra.forbid): @@ -50,7 +50,7 @@ class ImageRecordChanges(BaseModelExcludeNull, extra=Extra.forbid): - `image_category`: change the category of an image - `session_id`: change the session associated with an image - `is_intermediate`: change the image's `is_intermediate` flag - - `pinned`: change whether the image is pinned + - `starred`: change whether the image is starred """ image_category: Optional[ImageCategory] = Field(description="The image's new category.") @@ -62,8 +62,8 @@ class ImageRecordChanges(BaseModelExcludeNull, extra=Extra.forbid): """The image's new session ID.""" is_intermediate: Optional[StrictBool] = Field(default=None, description="The image's new `is_intermediate` flag.") """The image's new `is_intermediate` flag.""" - pinned: Optional[StrictBool] = Field(default=None, description="The image's new `pinned` state") - """The image's new `pinned` state.""" + starred: Optional[StrictBool] = Field(default=None, description="The image's new `starred` state") + """The image's new `starred` state.""" class ImageUrlsDTO(BaseModelExcludeNull): @@ -118,7 +118,7 @@ def deserialize_image_record(image_dict: dict) -> ImageRecord: updated_at = image_dict.get("updated_at", get_iso_timestamp()) deleted_at = image_dict.get("deleted_at", get_iso_timestamp()) is_intermediate = image_dict.get("is_intermediate", False) - pinned = image_dict.get("pinned", False) + starred = image_dict.get("starred", False) return ImageRecord( image_name=image_name, @@ -132,5 +132,5 @@ def deserialize_image_record(image_dict: dict) -> ImageRecord: updated_at=updated_at, deleted_at=deleted_at, is_intermediate=is_intermediate, - pinned=pinned + starred=starred )