Skip to content

Commit 06684c3

Browse files
committed
with email search
1 parent 0dd553c commit 06684c3

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

convex/schema.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ const schema = defineSchema({
3232
v.union(...validCapabilities.map((cap) => v.literal(cap)))
3333
),
3434
adsDisabled: v.optional(v.boolean()),
35+
}).searchIndex('search_email', {
36+
searchField: 'email',
3537
}),
3638
// .index('by_email', ['email']),
3739
})

convex/users.ts

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)