diff --git a/invokeai/app/api/routers/workflows.py b/invokeai/app/api/routers/workflows.py index f88f02b39a..f82f235dd8 100644 --- a/invokeai/app/api/routers/workflows.py +++ b/invokeai/app/api/routers/workflows.py @@ -88,7 +88,7 @@ async def list_workflows( default=WorkflowRecordOrderBy.Name, description="The attribute to order by" ), direction: SQLiteDirection = Query(default=SQLiteDirection.Ascending, description="The direction to order by"), - category: Optional[WorkflowCategory] = Query(default=None, description="The category of workflow to get"), + category: WorkflowCategory = Query(default=WorkflowCategory.User, description="The category of workflow to get"), query: Optional[str] = Query(default=None, description="The text to query by (matches name and description)"), ) -> PaginatedResults[WorkflowRecordListItemDTO]: """Gets a page of workflows""" diff --git a/invokeai/app/services/workflow_records/workflow_records_base.py b/invokeai/app/services/workflow_records/workflow_records_base.py index 7c79a592c1..9da830eaaf 100644 --- a/invokeai/app/services/workflow_records/workflow_records_base.py +++ b/invokeai/app/services/workflow_records/workflow_records_base.py @@ -41,9 +41,9 @@ class WorkflowRecordsStorageBase(ABC): self, order_by: WorkflowRecordOrderBy, direction: SQLiteDirection, + category: WorkflowCategory, page: int, per_page: Optional[int], - category: Optional[WorkflowCategory], query: Optional[str], ) -> PaginatedResults[WorkflowRecordListItemDTO]: """Gets many workflows.""" diff --git a/invokeai/app/services/workflow_records/workflow_records_sqlite.py b/invokeai/app/services/workflow_records/workflow_records_sqlite.py index a63da48189..061e572c21 100644 --- a/invokeai/app/services/workflow_records/workflow_records_sqlite.py +++ b/invokeai/app/services/workflow_records/workflow_records_sqlite.py @@ -127,9 +127,9 @@ class SqliteWorkflowRecordsStorage(WorkflowRecordsStorageBase): self, order_by: WorkflowRecordOrderBy, direction: SQLiteDirection, + category: WorkflowCategory, page: int = 0, per_page: Optional[int] = None, - category: Optional[WorkflowCategory] = None, query: Optional[str] = None, ) -> PaginatedResults[WorkflowRecordListItemDTO]: try: @@ -137,6 +137,7 @@ class SqliteWorkflowRecordsStorage(WorkflowRecordsStorageBase): # sanitize! assert order_by in WorkflowRecordOrderBy assert direction in SQLiteDirection + assert category in WorkflowCategory count_query = "SELECT COUNT(*) FROM workflow_library" main_query = """ SELECT @@ -148,26 +149,16 @@ class SqliteWorkflowRecordsStorage(WorkflowRecordsStorageBase): updated_at, opened_at FROM workflow_library + WHERE category = ? """ - main_params: list[int | str] = [] - count_params: list[int | str] = [] - - if category: - assert category in WorkflowCategory - main_query += " WHERE category = ?" - count_query += " WHERE category = ?" - main_params.append(category.value) - count_params.append(category.value) + main_params: list[int | str] = [category.value] + count_params: list[int | str] = [category.value] stripped_query = query.strip() if query else None if stripped_query: wildcard_query = "%" + stripped_query + "%" - if "WHERE" in main_query: - main_query += " AND (name LIKE ? OR description LIKE ?)" - count_query += " AND (name LIKE ? OR description LIKE ?)" - else: - main_query += " WHERE name LIKE ? OR description LIKE ?" - count_query += " WHERE name LIKE ? OR description LIKE ?" + main_query += " AND name LIKE ? OR description LIKE ? " + count_query += " AND name LIKE ? OR description LIKE ?;" main_params.extend([wildcard_query, wildcard_query]) count_params.extend([wildcard_query, wildcard_query]) diff --git a/invokeai/frontend/web/src/services/api/schema.ts b/invokeai/frontend/web/src/services/api/schema.ts index 0680b0609d..394bed3912 100644 --- a/invokeai/frontend/web/src/services/api/schema.ts +++ b/invokeai/frontend/web/src/services/api/schema.ts @@ -20050,7 +20050,7 @@ export interface operations { /** @description The direction to order by */ direction?: components["schemas"]["SQLiteDirection"]; /** @description The category of workflow to get */ - category?: components["schemas"]["WorkflowCategory"] | null; + category?: components["schemas"]["WorkflowCategory"]; /** @description The text to query by (matches name and description) */ query?: string | null; };