UNPKG

@gameroom/cli

Version:

A command line tool for Gameroom

45 lines (43 loc) 2 kB
const axios = require('axios'), cosmetic = require('cosmetic'), { tryRepeatedly } = require('../../helpers'), { shopify, spinner } = require('../../refs') module.exports = class Inventory { constructor(data) { if (!data) data = {} this.available = data.available || 0, this.inventory_item_id = data.inventory_item_id || null this.location_id = data.location_id || null this.disconnect_if_necessary = true // updated_at read only } async clean() { return Object.keys(this).reduce((a, i) => this[i] ? { ...a, [i]: this[i] } : a, {}) } static async fromUnitAndPriceAndStore(unit, price, store) { return new Inventory({ available: unit.quantity, inventory_item_id: price.properties.shopify_inventory_id, location_id: store.shopify_id }) } static async delete({ inventory_item_id, location_id }) { const result = await tryRepeatedly(() => shopify.delete('/inventory_levels.json', { params: { inventory_item_id, location_id } }), (err) => spinner.warn(`error deleting ${cosmetic.green('shopify inventory_level')} ${inventory_item_id} ${err}`)) return result } static async get(inventory_item_id) { const result = await tryRepeatedly(() => shopify.get('/inventory_levels.json', { params: { inventory_item_ids: inventory_item_id } }), (err) => spinner.warn(`error getting ${cosmetic.green('shopify inventory_levels')} for ${inventory_item_id} ${err}`)) return result && result.data && result.data.inventory_levels ? result.data.inventory_levels.reduce((a, i) => [...a, new Inventory(i)], []) : [] } async delete() { return Inventory.delete(this) } async save() { const result = await tryRepeatedly(() => shopify.post('/inventory_levels/set.json', this), (err) => spinner.warn(`error saving ${cosmetic.green('shopify inventory_level')} for ${this.inventory_item_id} ${err}`)) return result && result.data && result.data.inventory_level ? result.data.inventory_level : null } }