Have not found an answer on if this is possible. I am passing an object with filters as keys/values.
ex.
const filters = {
'id': 12,
'first_name': john
}
function findBy(filter) {
return db('quotes')
.where(filter)
.orderBy('id');
}
I am trying to set each where clause to be case insensitive with whereILike(). Does anyone have a solution they can recommend?
Found the solution for this:
https://knexjs.org/#Builder-modify
return db('quotes')
.modify(function(queryBuilder) {
if (filter.id) {
queryBuilder.where('id', filter.id);
}
if (filter.first_name) {
queryBuilder.where('first_name', 'ilike', `%${filter.first_name}%`);
}
if (filter.email) {
queryBuilder.where('email', 'ilike', `%${filter.email}%`);
}
if (filter.active) {
queryBuilder.where('is_complete', filter.active);
}
if (filter.is_archived) {
queryBuilder.where('is_archived', filter.is_archived);
}
})
.orderBy('id');