YoPassIt
YoPassIt12h ago

Advanced Sorting, Filtering and Pagination Help

I'm implementing the search functionality for a table in my database, and because of Convex DB's lack of advanced filtering/sorting, I'm sort of forced to .collect() the entire indexed table into memory and do the filtering/sorting via JS. Because of this also, I must do pagination in memory as I can't get the next set of results without doing all the filtering/sorting. Does anyone have any advice for this specific use case?
3 Replies
Convex Bot
Convex Bot12h ago
Thanks for posting in <#1088161997662724167>. Reminder: If you have a Convex Pro account, use the Convex Dashboard to file support tickets. - Provide context: What are you trying to achieve, what is the end-user interaction, what are you seeing? (full error message, command output, etc.) - Use search.convex.dev to search Docs, Stack, and Discord all at once. - Additionally, you can post your questions in the Convex Community's <#1228095053885476985> channel to receive a response from AI. - Avoid tagging staff unless specifically instructed. Thank you!
YoPassIt
YoPassItOP12h ago
args: {
workspaceId: zid('workspaces'),
searchTerm: z
.string()
.transform((st) => st.trim().toLowerCase())
.optional(),
statusFilter: z
.array(z.enum(['compliant', 'warning', 'overdue']))
.optional()
.default([]),
sortBy: z.enum(['name', 'status']).optional().default('name'),
sortDirection: z.enum(['asc', 'desc']).optional().default('asc'),
page: z.number().min(1).optional().default(1),
pageSize: z.number().min(5).max(100).optional().default(20),
},
args: {
workspaceId: zid('workspaces'),
searchTerm: z
.string()
.transform((st) => st.trim().toLowerCase())
.optional(),
statusFilter: z
.array(z.enum(['compliant', 'warning', 'overdue']))
.optional()
.default([]),
sortBy: z.enum(['name', 'status']).optional().default('name'),
sortDirection: z.enum(['asc', 'desc']).optional().default('asc'),
page: z.number().min(1).optional().default(1),
pageSize: z.number().min(5).max(100).optional().default(20),
},
YoPassIt
YoPassItOP12h ago

Did you find this page helpful?