diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-10-06 00:46:53 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-10-06 00:46:53 +0200 |
| commit | c915f91fbe8d97201d813c792f4e1fe8c4401e15 (patch) | |
| tree | 7b341e4d7548205776557437bd2245ec59bf0a57 /src/lib/server/services/references.ts | |
| parent | f7366834ee41bbb4ac8a9a252224241a884af41b (diff) | |
fix: make grocery and reference ordering deterministic
Every list query lacked a tiebreak, so rows sharing a sort key (same-ms
createdAt inserts, tied or NULL quality scores) came back in unspecified
order and bestRef flipped between loads. Add explicit tiebreaks: items
createdAt desc, id desc (newest first); references qualityScore desc,
id asc (first inserted wins ties). Categories were already total
(order, name unique).
Pin the rules with service tests.
Diffstat (limited to 'src/lib/server/services/references.ts')
| -rw-r--r-- | src/lib/server/services/references.ts | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lib/server/services/references.ts b/src/lib/server/services/references.ts index 99ba487..c5b6630 100644 --- a/src/lib/server/services/references.ts +++ b/src/lib/server/services/references.ts @@ -1,6 +1,6 @@ import { db as defaultDb } from '$lib/server/db'; import { references } from '$lib/server/db/schema'; -import { eq, desc } from 'drizzle-orm'; +import { eq, desc, asc } from 'drizzle-orm'; import type { AppDatabase } from './groceries'; import type { Reference } from './types'; @@ -12,7 +12,7 @@ export async function loadForGrocery( .select() .from(references) .where(eq(references.groceryId, groceryId)) - .orderBy(desc(references.qualityScore)); + .orderBy(desc(references.qualityScore), asc(references.id)); } export async function add( |
