const casual = require('casual')
const faker = require('faker')
const _ = require('lodash')
const endpoint = require("@runkit/runkit/json-endpoint/1.0.0")
const range = (from, to) => to
? Array.from({length: Math.round(to) - Math.round(from)}, (__, i) => i + Math.round(from))
: Array.from({length: Math.round(from)}, (__,i) => i)
const cities = ['Zoeyport', 'Royton', 'West Brisaburgh', 'West Elyssamouth', 'Letaview', 'Cleoland', 'Theresaland']
const occupations = [ 'strategist', 'coordinator', 'engineer', 'supervisor', 'planner', 'designer', 'producer', 'specialist' ]
const people = range(2500).map(i => {
let name = casual.full_name
let company = faker.company.companyName(0)
return {
name,
age: _.random(20, 70),
occupation: _.sample(occupations),
city: _.sample(cities),
phone: faker.phone.phoneNumberFormat(1),
email: name.toLowerCase().split(' ').join('.') + '@' +
company.toLowerCase().replace(/\s*/g,'') + '.' + faker.internet.domainSuffix(),
company
}
})
endpoint(module.exports, incoming => {
const query = incoming.query || {}
let data = people
// User wants all people
if (query.all) return data
// Query filtering
if (query.city) data = data.filter(p => p.city === query.city)
if (query.occupation) data = data.filter(p => p.occupation === query.occupation)
if (query.younger && parseInt(query.younger) == query.younger) {
data = data.filter(p => p.age < parseInt(query.younger))
}
if (query.older && parseInt(query.older) == query.older) {
data = data.filter(p => p.age > parseInt(query.older))
}
// Pagination and response
if (query.page) return data.slice(query.page*50, (query.page + 1)*50)
else return data.slice(0,50)
})