UNPKG

@gameroom/cli

Version:

A command line tool for Gameroom

50 lines (45 loc) 1.9 kB
const cosmetic = require('cosmetic'), { calculateGamePrices, difference, dollarString, grGreen, readCSVFile, timeout, writeCSVFile } = require('../../helpers'), { Price_Charting } = require('../../models'), { spinner } = require('../../refs'), { models: { Price, Product } } = require('@gameroom/kit'), PRICE_CHARTING = cosmetic.cyan('price charting'), TRUE = 'true', FALSE = 'false' module.exports = async ({ path }) => { if (!process.env.PRICE_CHARTING_TOKEN) throw new Error('missing price charting env keys') spinner.info(`importing ${PRICE_CHARTING} ratio csv @ ${new Date().toLocaleString()}`) spinner.text = `parsing ${path}` const lines = await readCSVFile(path) spinner.info(`parsed ${lines.length} lines`) let products_updated = 0 for (const [i, p] of lines.entries()) { spinner.text = `checking ${grGreen('product')} group ${i}/${lines.length}` // check for ratio and difference if (p.ratio === '0' || p.current_ratio === p.ratio) continue const ids = p.product_ids.split(', ') for (const id of ids) { // get product let product try { product = await Product.find(id) } catch(err) { spinner.warn(`error finding ${grGreen('product')} ${id}: ${err}`) continue } // update product const { properties } = product properties.price_game_plus_ratio = parseFloat(p.ratio).toFixed(2) try { await Product.update({ id, properties }) products_updated++ spinner.succeed(`updated ${grGreen('product')} ${id} ratio ${p.ratio}`) } catch(err) { spinner.warn(`error updating ${grGreen('product')} ${id}: ${err}`) } } } spinner.info(`total: ${lines.length}`) spinner.succeed(`products updated: ${products_updated}`) spinner.succeed(`completed ${PRICE_CHARTING} ratio import @ ${new Date().toLocaleString()}`).stop() }