adding filters to my-listing (listingnumber), updated/new label

This commit is contained in:
2025-09-12 14:25:47 -05:00
parent d48cd7aa1d
commit 571cfb0e61
7 changed files with 187 additions and 17 deletions

View File

@@ -152,9 +152,33 @@ export class BusinessListingService {
case 'creationDateLast':
query.orderBy(desc(sql`${businesses_json.data}->>'created'`));
break;
default:
// Keine spezifische Sortierung, Standardverhalten kann hier eingefügt werden
default: {
// NEU (created < 14 Tage) > UPDATED (updated < 14 Tage) > Rest
const recencyRank = sql`
CASE
WHEN ((${businesses_json.data}->>'created')::timestamptz >= (now() - interval '14 days')) THEN 2
WHEN ((${businesses_json.data}->>'updated')::timestamptz >= (now() - interval '14 days')) THEN 1
ELSE 0
END
`;
// Innerhalb der Gruppe:
// NEW → created DESC
// UPDATED → updated DESC
// Rest → created DESC
const groupTimestamp = sql`
CASE
WHEN ((${businesses_json.data}->>'created')::timestamptz >= (now() - interval '14 days'))
THEN (${businesses_json.data}->>'created')::timestamptz
WHEN ((${businesses_json.data}->>'updated')::timestamptz >= (now() - interval '14 days'))
THEN (${businesses_json.data}->>'updated')::timestamptz
ELSE (${businesses_json.data}->>'created')::timestamptz
END
`;
query.orderBy(desc(recencyRank), desc(groupTimestamp), desc(sql`(${businesses_json.data}->>'created')::timestamptz`));
break;
}
}
// Paginierung
query.limit(length).offset(start);