@gameroom/cli
Version:
A command line tool for Gameroom
29 lines (21 loc) • 1.56 kB
JavaScript
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)
}