| 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); |
|
|