From 14599e90a34c1074af1383b1caa7d8df933b4967 Mon Sep 17 00:00:00 2001 From: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com> Date: Mon, 27 Jan 2025 11:41:01 -0800 Subject: [PATCH] fix: keep initial id order in `get_entries_full()` (#736) * fix: keep initial id order in `get_entries_full()` * fix: correct variable names --- tagstudio/src/core/library/alchemy/library.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tagstudio/src/core/library/alchemy/library.py b/tagstudio/src/core/library/alchemy/library.py index a1a9d4ab..102e4cf5 100644 --- a/tagstudio/src/core/library/alchemy/library.py +++ b/tagstudio/src/core/library/alchemy/library.py @@ -21,6 +21,7 @@ from sqlalchemy import ( ColumnExpressionArgument, Engine, NullPool, + ScalarResult, and_, asc, create_engine, @@ -486,9 +487,11 @@ class Library: ), ) statement = statement.distinct() + entries: ScalarResult[Entry] | list[Entry] = session.execute(statement).scalars() + entries = entries.unique() # type: ignore - entries = session.execute(statement).scalars() - entries = entries.unique() + entry_order_dict = {e_id: order for order, e_id in enumerate(entry_ids)} + entries = sorted(entries, key=lambda e: entry_order_dict[e.id]) for entry in entries: yield entry