UNPKG

@gameroom/cli

Version:

A command line tool for Gameroom

29 lines (21 loc) 1.56 kB
const pluralize = require('pluralize'), { getStorable, grGreen, isInteger, isUUID, prettyPrint } = require('../helpers'), { config, spinner } = require('../refs') module.exports = async ({ Model, resource, id, include, exclude }) => { if (pluralize.isPlural(resource)) resource = pluralize.singular(resource) spinner.text = `finding ${grGreen(resource)} ${id}` spinner.start() const prototype = new Model() let object = Object.keys(prototype).includes('index') && isInteger(id) ? await Model.get({ filter: { or: [ { key: 'index', value: parseInt(id) }, { key: 'identifier', comparison: 'like', value: id.slice(1, id.length) } ] } }) : Object.keys(prototype).includes('identifier') && !isUUID(id) ? await Model.get({ filter: { key: 'identifier', comparison: 'like', value: id.slice(1, id.length) } }) : await Model.find(id) object = !Array.isArray(object) ? object : isInteger(id) && object.find(i => i.index === parseInt(id)) ? object.find(i => i.index === parseInt(id)) : object if (include) !Array.isArray(object) ? Object.keys(object).map(k => !include.includes(k) ? delete object[k] : null) : object.map(i => Object.keys(i).map(k => !include.includes(k) ? delete i[k] : null)) if (exclude) !Array.isArray(object) ? exclude.map(e => delete object[e]) : object.map(i => exclude.map(e => delete i[e])) spinner.succeed(`found ${Array.isArray(object) ? `${object.length} ` : ''}${Array.isArray(object) && object.length !== 1 ? grGreen(pluralize(resource)) : grGreen(resource)}`).stop() prettyPrint(object) }