From 4fdf59f9f7138cf2c149dea24305f698b4236147 Mon Sep 17 00:00:00 2001 From: FrederikBaerentsen Date: Tue, 20 Jan 2026 13:38:37 +0100 Subject: [PATCH] fix(database): fixed front page database query --- bricktracker/part_list.py | 4 +++- bricktracker/sql/schema/integrity_delete_orphaned_parts.sql | 4 ++-- .../sql/schema/integrity_delete_parts_missing_set.sql | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/bricktracker/part_list.py b/bricktracker/part_list.py index 32e738e..7081ed0 100644 --- a/bricktracker/part_list.py +++ b/bricktracker/part_list.py @@ -289,7 +289,9 @@ class BrickPartList(BrickRecordList[BrickPart]): if current_app.config['RANDOM']: order = 'RANDOM()' else: - order = '"bricktracker_parts"."rowid" DESC' + # Since bricktracker_parts has a composite primary key, it doesn't have a rowid + # Order by id DESC (which are UUIDs with timestamps) to get recent parts + order = '"combined"."id" DESC, "combined"."part" ASC' context = {} if current_app.config.get('HIDE_SPARE_PARTS', False): diff --git a/bricktracker/sql/schema/integrity_delete_orphaned_parts.sql b/bricktracker/sql/schema/integrity_delete_orphaned_parts.sql index 89a132e..3dc4829 100644 --- a/bricktracker/sql/schema/integrity_delete_orphaned_parts.sql +++ b/bricktracker/sql/schema/integrity_delete_orphaned_parts.sql @@ -1,8 +1,8 @@ -- Delete orphaned parts (bricktracker_parts records without parent rebrickable_parts) DELETE FROM bricktracker_parts -WHERE rowid IN ( - SELECT bp.rowid +WHERE (id, figure, part, color, spare) IN ( + SELECT bp.id, bp.figure, bp.part, bp.color, bp.spare FROM bricktracker_parts bp WHERE NOT EXISTS ( SELECT 1 FROM rebrickable_parts rp WHERE rp.part = bp.part AND rp.color_id = bp.color diff --git a/bricktracker/sql/schema/integrity_delete_parts_missing_set.sql b/bricktracker/sql/schema/integrity_delete_parts_missing_set.sql index 7640505..a1ce087 100644 --- a/bricktracker/sql/schema/integrity_delete_parts_missing_set.sql +++ b/bricktracker/sql/schema/integrity_delete_parts_missing_set.sql @@ -1,8 +1,8 @@ -- Delete parts that reference non-existent sets DELETE FROM bricktracker_parts -WHERE rowid IN ( - SELECT bp.rowid +WHERE (id, figure, part, color, spare) IN ( + SELECT bp.id, bp.figure, bp.part, bp.color, bp.spare FROM bricktracker_parts bp WHERE NOT EXISTS ( SELECT 1 FROM bricktracker_sets bs WHERE bs.id = bp.id