Skip to content

Commit

Permalink
Factor out db access from lib manager method
Browse files Browse the repository at this point in the history
  • Loading branch information
jdavcs committed Apr 15, 2024
1 parent 415f733 commit b5692e8
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 6 deletions.
8 changes: 2 additions & 6 deletions lib/galaxy/managers/libraries.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,6 @@
Tuple,
)

from sqlalchemy import (
false,
select,
)
from sqlalchemy.exc import (
MultipleResultsFound,
NoResultFound,
Expand All @@ -28,6 +24,7 @@
)
from galaxy.model.base import transaction
from galaxy.model.db.libraries import (
get_libraries_by_name,
get_libraries_for_admins,
get_libraries_for_nonadmins,
get_library_ids,
Expand Down Expand Up @@ -358,8 +355,7 @@ def get_containing_library_from_library_dataset(trans, library_dataset) -> Optio
while folder.parent:
folder = folder.parent
# We have folder set to the library's root folder, which has the same name as the library
stmt = select(Library).where(Library.deleted == false()).where(Library.name == folder.name)
for library in trans.sa_session.scalars(stmt):
for library in get_libraries_by_name(trans.sa_session, folder.name):
# Just to double-check
if library.root_folder == folder:
return library
Expand Down
5 changes: 5 additions & 0 deletions lib/galaxy/model/db/libraries.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,8 @@ def get_libraries_for_nonadmins(session, restricted_library_ids, accessible_rest
)
stmt = stmt.order_by(asc(func.lower(Library.name)))
return session.scalars(stmt)


def get_libraries_by_name(session, name):
stmt = select(Library).where(Library.deleted == false()).where(Library.name == name)
return session.scalars(stmt)
11 changes: 11 additions & 0 deletions test/unit/data/db/test_libraries.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from galaxy.model.db.libraries import (
get_libraries_by_name,
get_libraries_for_admins,
get_libraries_for_nonadmins,
get_library_ids,
Expand Down Expand Up @@ -87,3 +88,13 @@ def test_get_libraries_for_admins_non_admins__ordering(session, make_library):
assert libs == expected
libs = get_libraries_for_nonadmins(session, [], []).all()
assert libs == expected


def test_get_libraries_by_name(session, make_library):
make_library(name="a")
l2 = make_library(name="b")
l3 = make_library(name="b") # intentional duplicate
l3.deleted = True # should not be returned

libs = get_libraries_by_name(session, "b").all()
assert libs == [l2]

0 comments on commit b5692e8

Please sign in to comment.