From 99c79741d82f9b4568ff79c1854e3c9feef23051 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 04:34:37 +0000 Subject: [PATCH] Changes Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com> --- src/routes/contacts.index.tsx | 41 ++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/src/routes/contacts.index.tsx b/src/routes/contacts.index.tsx index c011b16..0a17e9a 100644 --- a/src/routes/contacts.index.tsx +++ b/src/routes/contacts.index.tsx @@ -47,10 +47,45 @@ function ContactsIndex() { const load = async () => { setLoading(true); + // Paginate to bypass Supabase's 1000-row default limit + const fetchAllContacts = async () => { + const pageSize = 1000; + let from = 0; + const all: any[] = []; + while (true) { + const { data, error } = await supabase + .from("contacts") + .select("*") + .order("name") + .range(from, from + pageSize - 1); + if (error) return { data: all, error }; + if (!data || data.length === 0) break; + all.push(...data); + if (data.length < pageSize) break; + from += pageSize; + } + return { data: all, error: null as any }; + }; + const fetchAllLinks = async (table: "case_contacts" | "client_contacts") => { + const pageSize = 1000; + let from = 0; + const all: any[] = []; + while (true) { + const { data, error } = await supabase + .from(table) + .select("contact_id") + .range(from, from + pageSize - 1); + if (error || !data || data.length === 0) break; + all.push(...data); + if (data.length < pageSize) break; + from += pageSize; + } + return { data: all }; + }; const [{ data, error }, { data: cc }, { data: clc }] = await Promise.all([ - supabase.from("contacts").select("*").order("name"), - supabase.from("case_contacts").select("contact_id"), - supabase.from("client_contacts").select("contact_id"), + fetchAllContacts(), + fetchAllLinks("case_contacts"), + fetchAllLinks("client_contacts"), ]); if (error) toast.error(error.message); const caseCounts = new Map();