Skip to content

Commit

Permalink
Improve get_filtered method
Browse files Browse the repository at this point in the history
  • Loading branch information
jdavcs committed Aug 17, 2023
1 parent a73f140 commit 8c642f1
Showing 1 changed file with 7 additions and 21 deletions.
28 changes: 7 additions & 21 deletions lib/galaxy/model/repositories/tool_shed_repository.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from sqlalchemy import (
and_,
cast,
Integer,
select,
Expand All @@ -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]

0 comments on commit 8c642f1

Please sign in to comment.