const mongoose = require('mongoose'); const balanceSchema = require('./schema/balance'); const { getMultiplier } = require('./tx'); balanceSchema.statics.check = async function ({ user, model, valueKey, tokenType, amount, debug }) { const multiplier = getMultiplier({ valueKey, tokenType, model }); const tokenCost = amount * multiplier; const { tokenCredits: balance } = (await this.findOne({ user }, 'tokenCredits').lean()) ?? {}; if (debug) { console.log('balance check', { user, model, valueKey, tokenType, amount, debug, balance, multiplier, }); } if (!balance) { return { canSpend: false, balance: 0, tokenCost, }; } if (debug) { console.log('balance check', { tokenCost }); } return { canSpend: balance >= tokenCost, balance, tokenCost }; }; module.exports = mongoose.model('Balance', balanceSchema);