@@ -59,14 +59,13 @@ export const listUsers = query({
5959 const limit = args . pagination . limit
6060 const cursor = args . pagination . cursor ?? null
6161
62- if ( args . emailFilter && args . emailFilter . length > 0 ) {
63- const start = args . emailFilter
64- const end = start + '\uffff'
62+ const emailFilter = args . emailFilter ?? ''
63+
64+ if ( emailFilter && emailFilter . length > 0 ) {
6565 // Prefix range over email using index
6666 return await ctx . db
6767 . query ( 'users' )
68- // .withIndex('by_email', (q) => q.gte('email', start))
69- . filter ( ( q ) => q . lt ( q . field ( 'email' ) , end ) )
68+ . withSearchIndex ( 'search_email' , ( q ) => q . search ( 'email' , emailFilter ) )
7069 . paginate ( {
7170 numItems : limit ,
7271 cursor,
@@ -91,20 +90,19 @@ export const countUsers = query({
9190
9291 const total = ( await ctx . db . query ( 'users' ) . collect ( ) ) . length
9392
94- if ( args . emailFilter && args . emailFilter . length > 0 ) {
95- const start = args . emailFilter
96- const end = start + '\uffff'
93+ const emailFilter = args . emailFilter ?? ''
94+
95+ if ( emailFilter && emailFilter . length > 0 ) {
9796 const filtered = (
9897 await ctx . db
9998 . query ( 'users' )
100- // .withIndex('by_email', (q) => q.gte('email', start))
101- . filter ( ( q ) => q . lt ( q . field ( 'email' ) , end ) )
99+ . withSearchIndex ( 'search_email' , ( q ) =>
100+ q . search ( 'email' , emailFilter )
101+ )
102102 . collect ( )
103103 ) . length
104104 return { total, filtered }
105105 }
106-
107- return { total, filtered : total }
108106 } ,
109107} )
110108
0 commit comments