querycraft-to-function
v0.0.13
Published
Data query abstraction layer
Downloads
4
Readme
QueryCraft-To-Function-To-Function
Converts a QueryCraft Filter Builder object into a function to filter arrays of objects.
Installation
npm install --save 'querycraft-to-function'
Examples
Suppose we have a collection of data that satisfies the interface
interface contact {
id: string
'list': { id: string }[]
firstName: string
lastName: string
email: string
createdAt: Date
customFields: { id: string, value: number }[]
assignedTo?: string
}
If we want a query the describes the logic:-
first 50 items where
fistName is bob
lastName is doyle OR is not set
assignedTo is anything
list has an item where id is item1
sorted (in ascending order) by the value property of the customField where id is custom1
created less than 5 days ago
We can build build it as easily as:-
import { FilterBuilder, eq, lt, neq, any, find, where } from 'querycraft'
import apply from 'querycraft-to-function'
const contacts: contact[] = [ ... ]
const filter = new FilterBuilder()
.where('firstName', eq('bob'))
.where('list', find(where('id', eq('ite,1'))))
.where('lastName', any([
eq('doyle'),
eq(null)
]))
.where('createdAt', lt({ daysAgo: 5 }))
.where('assignedTo', neq(null))
.setSortFieldId('customFields', 'custom1', 'value')
.setSortDirection('ASC')
.setLimit(50)
console.log(apply(filter, contacts))
// -> filtered list of contacts