From 8c642f1732a4a0f1d60b586033c4c67d29acc595 Mon Sep 17 00:00:00 2001 From: John Davis Date: Thu, 17 Aug 2023 17:44:06 -0400 Subject: [PATCH] Improve get_filtered method --- .../repositories/tool_shed_repository.py | 28 +++++-------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/lib/galaxy/model/repositories/tool_shed_repository.py b/lib/galaxy/model/repositories/tool_shed_repository.py index 26907c1c6da0..91644c3e2ff0 100644 --- a/lib/galaxy/model/repositories/tool_shed_repository.py +++ b/lib/galaxy/model/repositories/tool_shed_repository.py @@ -1,5 +1,4 @@ from sqlalchemy import ( - and_, cast, Integer, select, @@ -16,24 +15,11 @@ class ToolShedRepositoryRepository(ModelRepository): def __init__(self, session: SessionType): super().__init__(session, ToolShedRepository) - def get_filtered(self, name, owner, changeset, deleted, uninstalled): - clause_list = [] - if name is not None: - clause_list.append(ToolShedRepository.name == name) - if owner is not None: - clause_list.append(ToolShedRepository.owner == owner) - if changeset is not None: - clause_list.append(ToolShedRepository.changeset_revision == changeset) - if deleted is not None: - clause_list.append(ToolShedRepository.deleted == deleted) - if uninstalled is not None: - clause_list.append(ToolShedRepository.uninstalled == uninstalled) - - stmt = ( - select(ToolShedRepository) - .order_by(ToolShedRepository.name) - .order_by(cast(ToolShedRepository.ctx_rev, Integer).desc()) - ) - if len(clause_list) > 0: - stmt = stmt.filter(and_(*clause_list)) + def get_filtered(self, **kwd): + stmt = select(ToolShedRepository) + for key, value in kwd.items(): + if value is not None: + column = ToolShedRepository.table.c[key] + stmt = stmt.filter(column == value) + stmt = stmt.order_by(ToolShedRepository.name).order_by(cast(ToolShedRepository.ctx_rev, Integer).desc()) return self.session.scalars(stmt).all() # type:ignore[union-attr]