User Balance base logic component for EdenJS
@edenjs/balance
creates user balance logic, users will have the field balance
which will hold an on-site balance.
npm i --save @edenjs/balance
No configuration is required for this module
BalanceEntry
Usage
BalanceEntry model consits of a single entry for each change on a users balance.
// load model
const BalanceEntry = model('balanceEntry');
// get first entry
const entry = await BalanceEntry.findOne();
// data used in frontend
const data = await entry.sanitise();
Balance change hook allows us to prevent/change a balance transaction on a user based on parameters.
this.eden.pre('balance.change', (data) => {
// extract variables
const { user, direction, amount, payment, current } = data;
// prevent balance change by setting prevent : true
data.prevent = true;
data.complete = true;
});
balance
Usage
Balance helper applies balance changes to users automatically.
// user model
const User = model('user');
// balance helper
const balanceHelper = helper('balance');
const balanceUser = await User.findOne();
const didAdd = await balanceHelper.add(balanceUser, 10); // add 10 to users account
const didSubtract = await balanceHelper.subtract(balanceUser, 10); // subtract 10 from users account