feat: add market value catalog sorting
Quality / test (push) Canceled after 0s

This commit is contained in:
2026-09-10 03:04:10 -04:00
parent c9ad3a11af
commit 81705af6e3
6 changed files with 22 additions and 2 deletions
@@ -161,6 +161,16 @@ export function createListingRepository(db) {
}
const offset = (page - 1) * limit;
const marketValue = sql`COALESCE(
(SELECT ${marketValueOverrides.valueMinor}
FROM ${marketValueOverrides}
WHERE ${marketValueOverrides.inventoryItemId} = ${inventoryItems.id}
ORDER BY ${marketValueOverrides.createdAt} DESC LIMIT 1),
(SELECT ${marketValuations.valueMinor}
FROM ${marketValuations}
WHERE ${marketValuations.inventoryItemId} = ${inventoryItems.id}
ORDER BY ${marketValuations.calculatedAt} DESC LIMIT 1)
)`;
const sortOrder =
sort === "updated"
? desc(listings.updatedAt)
@@ -168,6 +178,10 @@ export function createListingRepository(db) {
? products.name
: sort === "name_desc"
? desc(products.name)
: sort === "market_low"
? sql`${marketValue} ASC NULLS LAST`
: sort === "market_high"
? sql`${marketValue} DESC NULLS LAST`
: sort === "price_low"
? listings.askingPriceMinor
: sort === "price_high"
@@ -67,8 +67,8 @@ export function createSearchQuery({
throw new Error("minPriceMinor must be <= maxPriceMinor");
}
if (!["recent", "updated", "name_asc", "name_desc", "price_low", "price_high"].includes(sort)) {
throw new Error("sort must be recent, updated, name_asc, name_desc, price_low, or price_high");
if (!["recent", "updated", "name_asc", "name_desc", "price_low", "price_high", "market_low", "market_high"].includes(sort)) {
throw new Error("sort must be recent, updated, name_asc, name_desc, price_low, price_high, market_low, or market_high");
}
return {