From 8ebf2a5d5d126e6ef9b89109124adf2a5e9e293d Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 16 Jun 2021 15:14:41 +0200 Subject: Refactor live manager --- server/lib/live/live-quota-store.ts | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 server/lib/live/live-quota-store.ts (limited to 'server/lib/live/live-quota-store.ts') diff --git a/server/lib/live/live-quota-store.ts b/server/lib/live/live-quota-store.ts new file mode 100644 index 000000000..8ceccde98 --- /dev/null +++ b/server/lib/live/live-quota-store.ts @@ -0,0 +1,48 @@ +class LiveQuotaStore { + + private static instance: LiveQuotaStore + + private readonly livesPerUser = new Map() + + private constructor () { + } + + addNewLive (userId: number, liveId: number) { + if (!this.livesPerUser.has(userId)) { + this.livesPerUser.set(userId, []) + } + + const currentUserLive = { liveId, size: 0 } + const livesOfUser = this.livesPerUser.get(userId) + livesOfUser.push(currentUserLive) + } + + removeLive (userId: number, liveId: number) { + const newLivesPerUser = this.livesPerUser.get(userId) + .filter(o => o.liveId !== liveId) + + this.livesPerUser.set(userId, newLivesPerUser) + } + + addQuotaTo (userId: number, liveId: number, size: number) { + const lives = this.livesPerUser.get(userId) + const live = lives.find(l => l.liveId === liveId) + + live.size += size + } + + getLiveQuotaOf (userId: number) { + const currentLives = this.livesPerUser.get(userId) + if (!currentLives) return 0 + + return currentLives.reduce((sum, obj) => sum + obj.size, 0) + } + + static get Instance () { + return this.instance || (this.instance = new this()) + } +} + +export { + LiveQuotaStore +} -- cgit v1.2.3