UNPKG

@gameroom/cli

Version:

A command line tool for Gameroom

44 lines (36 loc) 1.59 kB
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) }