Добавлены модели для внешней рекламы и кэша склада WB в схему Prisma. Обновлены компоненты AdvertisingTab и WBWarehouseDashboard для работы с новыми данными. Реализованы GraphQL запросы и мутации для управления внешней рекламой и кэшем склада. Оптимизирована логика отображения статистики и добавлены новые функции для работы с рекламой.
This commit is contained in:
30
src/lib/click-storage.ts
Normal file
30
src/lib/click-storage.ts
Normal file
@ -0,0 +1,30 @@
|
||||
// Общее хранилище кликов для всех API роутов
|
||||
class ClickStorage {
|
||||
private static instance: ClickStorage
|
||||
private storage = new Map<string, number>()
|
||||
|
||||
static getInstance(): ClickStorage {
|
||||
if (!ClickStorage.instance) {
|
||||
ClickStorage.instance = new ClickStorage()
|
||||
}
|
||||
return ClickStorage.instance
|
||||
}
|
||||
|
||||
recordClick(linkId: string): number {
|
||||
const currentClicks = this.storage.get(linkId) || 0
|
||||
const newClicks = currentClicks + 1
|
||||
this.storage.set(linkId, newClicks)
|
||||
console.log(`Click recorded for ${linkId}: ${newClicks} total`)
|
||||
return newClicks
|
||||
}
|
||||
|
||||
getClicks(linkId: string): number {
|
||||
return this.storage.get(linkId) || 0
|
||||
}
|
||||
|
||||
getAllClicks(): Record<string, number> {
|
||||
return Object.fromEntries(this.storage)
|
||||
}
|
||||
}
|
||||
|
||||
export const clickStorage = ClickStorage.getInstance()
|
Reference in New Issue
Block a user