/*jshint laxcomma: true, smarttabs: true, node: true*/
'use strict';
/**
* Default querystring parameter validator for API Endpoints
* @module tastypie/lib/resource/validator/querystring
* @author Eric Satterwhite
* @since 0.0.1
* @requires joi
*/
var joi = require( 'joi' );
module.exports = joi.object().keys({
/**
* @readonly
* @memberof module:tastypie/lib/resource/validator/querystring
* @property {Number} limit Limits the number for results per page of data. Default is `25`
**/
limit:joi.number().min(0).default(25).description("the number of records to return"),
/**
* @readonly
* @memberof module:tastypie/lib/resource/validator/querystring
* @property {Number} offset starting page number for listing endpoints Default is `0`
**/
offset:joi.number().min(0).default(0).description("the starting page number"),
/**
* @readonly
* @memberof module:tastypie/lib/resource/validator/querystring
* @property {String} format ad hoc serialization formats. Allows `json`, `xml`, `jsonp`
**/
format:joi.string().alphanum().allow('json','xml','jsonp'),
/**
* @readonly
* @memberof module:tastypie/lib/resource/validator/querystring
* @property {String} callback Used for jsonp callback methods
**/
callback:joi.string().alphanum().description('query parameter used to force a jsonp response'),
/**
* @readonly
* @memberof module:tastypie/lib/resource/validator/querystring
* @property {String} order used to sort collections of resources
**/
orderby: joi.alternatives().try(
joi.string().optional().description('name of a field to sort the results by')
,joi.array( ).items( joi.string() ).optional().description('name of a field to sort the results by')
)
}).unknown();