Utility functions to pipe api query string into datasource commands.
install via npm
npm install api-query --save
npm install sequelize-provider --save
# bind utility to local variable
let apiQuery = require( 'api-query' );
# utility requires a provider to perform actual datasource manipulations using a specific tech stack, only sequelize-provider is available as of now
let actionProvider = require( 'sequelize-provider' );
# list operation in an array
const operators = [ apiQuery.optr.FILTER, apiQuery.optr.BATCH, apiQuery.optr.SORT, apiQuery.optr.FIELD ];
# package provider + allowed operators
const config = { actionProvider, operators };
- apiQuery.optr.FILTER : allows query strings to control which data are returned by the api.
- apiQuery.optr.BATCH : allows query strings to group results into pages.
- apiQuery.optr.SORT : allows query strings to order results.
- apiQuery.optr.FIELD : allows query strings to get distince values for field(s) specified.
let packData = actionProvider.pack( main_sequalize_model, [<relarted_sequelize_models>] );
- main_sequalize_model : sequelize model whose find methods will be used by the utils to fetch data
- [<relarted_sequelize_models>] : array of models directly related to the main model
let results = apiQuery.start( packData, apiQueryParameters, config );
- packData : formatted data, readable by the provider used
- apiQueryParameters : object representaion of query parameter
- config : object used to control the utility
# Single filter
http://api/route?fltr_field1=value1
# multiple filter
http://api/route?fltr_field1=value1&fltr_field2=value2
http://api/route?limit=3&offset=2
# single field ascending
http://api/route?sort=+field1
# single field descending
http://api/route?sort=-field1
# multiple field descending
http://api/route?sort=+field1,-field2
# single field distinct
http://api/route?field=field1
# multipl field distinct
http://api/route?field=field1,field2