@gameroom/cli
Version:
A command line tool for Gameroom
44 lines (36 loc) • 1.59 kB
JavaScript
const { models: { Changelog } } = require('@gameroom/kit'),
{ getStorable, grGreen, prettyPrint } = require('../helpers'),
{ spinner } = require('../refs')
module.exports = async ({ id }) => {
spinner.text = `resurrecting ${id}`
spinner.start()
let changelogs
try {
changelogs = await Changelog.get({ filter: { and: [
{ key: 'changeable_id', value: id },
{ key: 'after', value: null }
] } })
} catch(err) {}
if (!changelogs || changelogs.length === 0) return spinner.fail(`found no delete ${grGreen('changelogs')} for ${id}`).stop()
const { before, changeable_id, changeable_type } = changelogs.pop()
const Model = getStorable(changeable_type)
try {
// will throw error if it doesnt exist
await Model.find(changeable_id)
return spinner.fail(`${grGreen(changeable_type.toLowerCase())} ${id} isn't deleted`).stop()
} catch(err) {}
// fixes
// api will set created_at and updated_at
if (before.started_at) before.started_at = new Date(before.started_at)
if (before.started_correction) before.started_correction = new Date(before.started_correction)
if (before.ended_at) before.ended_at = new Date(before.ended_at)
if (before.ended_correction) before.ended_correction = new Date(before.ended_correction)
let resurrection
try {
resurrection = await Model.create(before)
} catch(err) {
return spinner.fail(`error resurrecting ${grGreen(changeable_type.toLowerCase())} ${id} ${err}`).stop()
}
spinner.succeed(`resurrected ${grGreen(changeable_type.toLowerCase())} ${id}`).stop()
prettyPrint(resurrection)
}