Skip to content

Commit

Permalink
Discord Economy Super v1.6.8
Browse files Browse the repository at this point in the history
- Fixed bugs.
- Fixed typings bugs.
- Bank balance caching!
- Fixed the hard crash in MongoDB version when trying to obtain a balance data for the user from the cache.
- Added an `updateMany` alias for `updateSpecified` method in `CacheManager`.
  • Loading branch information
shadowplay1 committed Oct 24, 2022
1 parent 0d6be3b commit d3f0498
Show file tree
Hide file tree
Showing 8 changed files with 114 additions and 45 deletions.
14 changes: 8 additions & 6 deletions mongodb/src/cached/CachedItem.js
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,9 @@ class CachedItem {
)
}

if (!result) return null
if (!result) {
return null
}

if (this.baseConstructor.name == 'ShopItem') {
return result.map(item =>
Expand Down Expand Up @@ -208,8 +210,8 @@ class CachedItem {
const rawUser = await this._database.fetch(`${id.guildID}.${id.memberID}`)

const balanceObject = {
money: rawUser.money,
bank: rawUser.bank,
money: rawUser?.money,
bank: rawUser?.bank,
}

balanceCache[id.memberID] = balanceObject
Expand Down Expand Up @@ -303,7 +305,7 @@ class CachedItem {
), 'INVALID_CACHING_IDENTIFIERS')
}

delete this.cache[id.guildID][id.memberID]
delete this.cache[id.guildID]?.[id.memberID]
break

case 'CooldownItem':
Expand All @@ -315,7 +317,7 @@ class CachedItem {
), 'INVALID_CACHING_IDENTIFIERS')
}

delete this.cache[id.guildID][id.memberID]
delete this.cache[id.guildID]?.[id.memberID]
break

case 'EconomyGuild':
Expand Down Expand Up @@ -368,4 +370,4 @@ module.exports = CachedItem
* @typedef {Object} DataIdentifier
* @property {string} guildID Guild ID.
* @property {string} memberID Member ID.
*/
*/
12 changes: 10 additions & 2 deletions mongodb/src/cached/CachedItems.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
const CachedItem = require('./CachedItem')


const EconomyGuild = require('../classes/EconomyGuild')
const EconomyUser = require('../classes/EconomyUser')

const CooldownItem = require('../classes/CooldownItem')

const BalanceItem = require('../classes/BalanceItem')
const BankBalanceItem = require('../classes/BankBalanceItem')

const ShopItem = require('../classes/ShopItem')
const InventoryItem = require('../classes/InventoryItem')
Expand Down Expand Up @@ -36,6 +37,12 @@ class CachedBalance extends CachedItem {
}
}

class CachedBank extends CachedItem {
constructor(userID, guildID, options, database, cache) {
super(BankBalanceItem, [userID, guildID], options, database, cache)
}
}

class CachedShop extends CachedItem {
constructor(guildID, options, database, cache) {
super(ShopItem, [guildID], options, database, cache)
Expand All @@ -59,7 +66,8 @@ module.exports = {
CachedUsers,
CachedCooldowns,
CachedBalance,
CachedBank,
CachedShop,
CachedInventory,
CachedHistory
}
}
18 changes: 3 additions & 15 deletions mongodb/src/classes/BalanceItem.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,5 @@
const BalanceManager = require('../managers/BalanceManager')

const CacheManager = require('../managers/CacheManager')
const DatabaseManager = require('../managers/DatabaseManager')


/**
* Balance item class.
*/
Expand All @@ -16,9 +12,8 @@ class BalanceItem {
* @param {EconomyOptions} ecoOptions Economy configuration.
* @param {BalanceObject} balanceObject User balance object.
* @param {DatabaseManager} database Database manager.
* @param {CacheManager} cache Cache manager.
*/
constructor(memberID, guildID, ecoOptions, balanceObject, database, cache) {
constructor(memberID, guildID, ecoOptions, balanceObject, database) {

/**
* Member ID.
Expand All @@ -39,17 +34,10 @@ class BalanceItem {
this.money = balanceObject.money

/**
* User's bank balance.
* User balance object.
* @type {number}
*/
this.bank = balanceObject.bank

/**
* Balance Manager.
* @type {BalanceManager}
* @private
*/
this._balance = new BalanceManager(ecoOptions, database, cache)
}
}

Expand All @@ -61,4 +49,4 @@ class BalanceItem {
* @property {number} bank User's bank balance.
*/

module.exports = BalanceItem
module.exports = BalanceItem
45 changes: 45 additions & 0 deletions mongodb/src/classes/BankBalanceItem.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
const DatabaseManager = require('../managers/DatabaseManager')

/**
* Bank balance item class.
*/
class BankBalanceItem {

/**
* User bank balance class.
* @param {string} memberID Member ID.
* @param {string} guildID Guild ID.
* @param {EconomyOptions} ecoOptions Economy configuration.
* @param {BalanceObject} bankBalanceObject User bank balance object.
* @param {DatabaseManager} database Database manager.
*/
constructor(memberID, guildID, ecoOptions, bankBalanceObject, database) {

/**
* Member ID.
* @type {string}
*/
this.memberID = memberID

/**
* Guild ID.
* @type {string}
*/
this.guildID = guildID

/**
* User bank balance object.
* @type {number}
*/
this.balance = bankBalanceObject.balance
}
}


/**
* Bank balance object.
* @typedef {Object} BankBalanceObject
* @property {number} balance User's bank balance.
*/

module.exports = BankBalanceItem
16 changes: 2 additions & 14 deletions mongodb/src/classes/CooldownItem.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
const CooldownManager = require('../managers/CooldownManager')

const DatabaseManager = require('../managers/DatabaseManager')
const CacheManager = require('../managers/CacheManager')


Expand All @@ -16,9 +13,8 @@ class CooldownItem {
* @param {EconomyOptions} ecoOptions Economy configuration.
* @param {CooldownsObject} cooldownsObject User cooldowns object.
* @param {DatabaseManager} database Database manager.
* @param {CacheManager} cache Cache manager.
*/
constructor(memberID, guildID, ecoOptions, cooldownsObject, database, cache) {
constructor(memberID, guildID, ecoOptions, cooldownsObject, database) {

/**
* Member ID.
Expand Down Expand Up @@ -50,14 +46,6 @@ class CooldownItem {
* @type {number}
*/
this.weekly = cooldownsObject.weekly


/**
* Cooldown Manager.
* @type {CooldownManager}
* @private
*/
this._cooldowns = new CooldownManager(ecoOptions, database, cache)
}
}

Expand All @@ -70,4 +58,4 @@ class CooldownItem {
* @property {number} weekly Weekly cooldown.
*/

module.exports = CooldownItem
module.exports = CooldownItem
12 changes: 9 additions & 3 deletions mongodb/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -226,9 +226,10 @@ class Economy extends Emitter {
this.init().then(async status => {
if (status) {
const usersCache = {}

const cooldownsCache = {}

const balanceCache = {}
const bankBalanceCache = {}

const inventoryCache = {}
const historyCache = {}
Expand Down Expand Up @@ -256,13 +257,18 @@ class Economy extends Emitter {
bank: userObject.bank,
}

bankBalanceCache[userID] = {
balance: userObject.bank
}

inventoryCache[userID] = userObject.inventory
historyCache[userID] = userObject.history

this.cache.users.set(guildID, usersCache)

this.cache.cooldowns.set(guildID, cooldownsCache)

this.cache.balance.set(guildID, balanceCache)
this.cache.bank.set(guildID, bankBalanceCache)

this.cache.inventory.set(guildID, inventoryCache)
this.cache.history.set(guildID, historyCache)
Expand Down Expand Up @@ -808,4 +814,4 @@ class Economy extends Emitter {
* The Economy class.
* @type {Economy}
*/
module.exports = Economy
module.exports = Economy
6 changes: 3 additions & 3 deletions mongodb/src/managers/BankManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ class BankManager extends Emitter {

await this.database.set(`${guildID}.${memberID}.bank`, Number(amount))

this.cache.users.update({
this.cache.updateMany(['bank', 'users'], {
guildID,
memberID,
})
Expand Down Expand Up @@ -142,7 +142,7 @@ class BankManager extends Emitter {

await this.database.add(`${guildID}.${memberID}.bank`, Number(amount))

this.cache.users.update({
this.cache.updateMany(['bank', 'users'], {
guildID,
memberID,
})
Expand Down Expand Up @@ -184,7 +184,7 @@ class BankManager extends Emitter {

await this.database.subtract(`${guildID}.${memberID}.bank`, Number(amount))

this.cache.users.update({
this.cache.updateMany(['bank', 'users'], {
guildID,
memberID,
})
Expand Down
36 changes: 34 additions & 2 deletions mongodb/src/managers/CacheManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ const {
CachedUsers,
CachedCooldowns,
CachedBalance,
CachedBank,
CachedShop,
CachedHistory,
CachedInventory
Expand Down Expand Up @@ -34,6 +35,12 @@ class CacheManager {
*/
this.balance = new CachedBalance(null, null, options, database, this)

/**
* Cached bank balance.
* @type {CachedBank}
*/
this.bank = new CachedBank(null, null, options, database, this)

/**
* Cached cooldowns.
* @type {CachedCooldowns}
Expand Down Expand Up @@ -78,10 +85,16 @@ class CacheManager {

await this.guilds.update(id)
await this.users.update(id)

await this.cooldowns.update(id)

await this.balance.update(id)
await this.bank.update(id)

await this.shop.update(id)
await this.history.update(id)
await this.inventory.update(id)

await this.history.update(id)
}

/**
Expand All @@ -91,11 +104,16 @@ class CacheManager {
clearAll() {
this.guilds.clear()
this.users.clear()

this.cooldowns.clear()

this.balance.clear()
this.bank.clear()

this.shop.clear()
this.history.clear()
this.inventory.clear()

this.history.clear()
}

/**
Expand All @@ -121,6 +139,20 @@ class CacheManager {
return result
}

/**
* Updates the specified cached items.
*
* This method is an alias for `CacheManager.updateSpecified()` method.
* @param {CacheItemName[]} cacheItemNames
* Names of the cache items to update.
*
* @param {DataIdentifier} id Identifiers object (memberID, guildID) to get value from cache.
* @returns {Promise<void[]>}
*/
updateMany(cacheItemNames, id) {
return this.updateSpecified(cacheItemNames, id)
}

/**
* Clears the specified cached items.
* @param {CacheItemName[]} cacheItemNames
Expand Down

0 comments on commit d3f0498

Please sign in to comment.