From ac06a9b8b2c9adfb131d96e431cabf23745be8a0 Mon Sep 17 00:00:00 2001 From: Roland Date: Tue, 16 May 2023 14:59:35 -0600 Subject: [PATCH] Joining when sorting by size. --- modules/archive/lib.py | 3 +++ modules/archive/test/test_api.py | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/modules/archive/lib.py b/modules/archive/lib.py index 0c0bed9d..24fa18f9 100644 --- a/modules/archive/lib.py +++ b/modules/archive/lib.py @@ -382,6 +382,7 @@ ORDER_GROUP_BYS = { 'size': 'fg.size, fg.primary_path', '-size': 'fg.size, fg.primary_path', } +FILE_ORDERS = ['size', '-size'] def search_archives(search_str: str, domain: str, limit: int, offset: int, order: str, tag_names: List[str], @@ -409,6 +410,8 @@ def search_archives(search_str: str, domain: str, limit: int, offset: int, order try: order_by = ARCHIVE_ORDERS[order] group_by = f'{group_by}, {ORDER_GROUP_BYS[order]}' + if order in FILE_ORDERS: + joins = ['LEFT JOIN file_group fg ON fg.id = a.file_group_id'] except KeyError: raise InvalidOrderBy(f'Invalid order by: {order}') diff --git a/modules/archive/test/test_api.py b/modules/archive/test/test_api.py index b4467101..46d00fed 100644 --- a/modules/archive/test/test_api.py +++ b/modules/archive/test/test_api.py @@ -25,6 +25,11 @@ def test_archives_search_order(test_session, archive_directory, archive_factory, if not response.status_code == HTTPStatus.OK: raise AssertionError(str(response.json)) + data = {'search_str': None, 'order_by': order_by} + request, response = test_client.post('/api/archive/search', content=json.dumps(data)) + if not response.status_code == HTTPStatus.OK: + raise AssertionError(str(response.json)) + def test_archives_search(test_session, archive_directory, archive_factory, test_client): """Archives can be searched by their title and their contents."""