@gameroom/cli
Version:
A command line tool for Gameroom
40 lines (32 loc) • 1.66 kB
JavaScript
const cosmetic = require('cosmetic'),
Table = require('tabley'),
{ models: { Changelog, User } } = require('@gameroom/kit'),
{ join, resolve } = require('path'),
{ correctionStatus, dateAddDays, dateLocaleString, dateString, getAll, grGreen, printTable, writeCSVFile } = require('../../helpers'),
{ spinner } = require('../../refs')
module.exports = async({ id, email, first, last, verbose }) => {
spinner.start()
spinner.info(`generating ${grGreen('deletes')} report`)
const filters = []
if (id) filters.push({ key: 'id', value: id })
if (email) filters.push({ key: 'email', value: email })
if (first) filters.push({ key: 'first_name', value: first })
if (last) filters.push({ key: 'last_name', value: last })
spinner.text = `getting ${grGreen('users')}`
const users = await getAll(User, {
filter: { and: filters },
sort: [{ last_name: 1 }]
})
spinner.info(`got ${users.length} ${grGreen('users')}`)
for (const user of users) {
spinner.text = `getting ${grGreen('user')} ${user.last_name}, ${user.first_name} ${grGreen('changelogs')}`
const filter = { and: [
{ key: 'user_id', value: user.id },
{ key: 'after', value: null }
] }
const changelogs = await getAll(Changelog, { filter })
spinner.info(`${grGreen('user')} ${user.last_name}, ${user.first_name} has ${changelogs.length} delete ${grGreen('changelogs')}`)
if (verbose) for (const c of changelogs) spinner.info(`deleted ${grGreen(c.changeable_type.toLowerCase())} ${c.changeable_id} @ ${cosmetic.magenta(c.created_at.toLocaleString())}`)
}
spinner.succeed(`generated ${grGreen('timecards')} report `).stop()
}