@south torrent can you rewrite this query to be improved?
export const getParts = query({
args: {
locationId: v.id('locations'),
factoryId: v.id('factories'),
machineClassId: v.id('machineClasses'),
name: v.string(),
},
async handler(ctx, args) {
// Filter by machineClassId
if (args.machineClassId) {
return ctx.db
.query('parts')
.withIndex('by_locationId', (q) => q.eq('locationId', args.locationId))
.filter((q) => q.eq(q.field('machineClassId'), args.machineClassId))
.collect()
}
// Filter by factoryId
if (args.factoryId) {
return ctx.db
.query('parts')
.withIndex('by_locationId', (q) => q.eq('locationId', args.locationId))
.filter((q) => q.eq(q.field('factoryId'), args.factoryId))
.collect()
}
// Optional search by name
if (args.name) {
return ctx.db
.query('parts')
.withSearchIndex('by_name', (q) => q.search('name', args.name))
.filter((q) => q.eq(q.field('factoryId'), args.factoryId))
.collect()
}
},
})