From f5c7ceb85029240899ad32c286e2c434d6a26daf Mon Sep 17 00:00:00 2001 From: Polianin Nikita Date: Tue, 11 Jun 2024 00:26:51 +0300 Subject: [PATCH] fix: change cache service to component --- src/pages/setup/cache/cache.component.html | 81 ++++++++++++++++++++++ src/services/cache.service.ts | 65 ----------------- 2 files changed, 81 insertions(+), 65 deletions(-) create mode 100644 src/pages/setup/cache/cache.component.html delete mode 100644 src/services/cache.service.ts diff --git a/src/pages/setup/cache/cache.component.html b/src/pages/setup/cache/cache.component.html new file mode 100644 index 0000000..6723dd1 --- /dev/null +++ b/src/pages/setup/cache/cache.component.html @@ -0,0 +1,81 @@ +

Настройка кэша

+
+

+ На этой странице вы можете выбрать и настроить параметры кэширования для приложения. +

+

+ Укажите тип кэша, например, Redis, и настройте параметры подключения, чтобы улучшить производительность и снизить + нагрузку на базу данных. +

+ +
+

+ Выберите базу данных для хранения кэша: +

+ + + База данных + + Redis + Memcached + + + +
+ @if (database && database !== "memcached") { +
+ + Сервер + + + @if (databaseForm.get('server')?.hasError('required')) { + + Сервер является обязательным + + } + + @if (databaseForm.get('server')?.hasError('pattern')) { + + Сервер должен содержать доменное имя сервера или ip адрес IPv4 или IPv6 + + } + + + + Порт + + + @if (databaseForm.get('port')?.hasError('required')) { + + Порт является обязательным + + } + + @if (databaseForm.get('port')?.hasError('pattern')) { + + Порт должен содержать цифры НЕ начиная с цифры 0 и далее не менее 2 цифр + + } + + + + Пароль + + + + + } +
+
diff --git a/src/services/cache.service.ts b/src/services/cache.service.ts deleted file mode 100644 index 7409523..0000000 --- a/src/services/cache.service.ts +++ /dev/null @@ -1,65 +0,0 @@ -import {Injectable} from '@angular/core'; - -interface CacheEntry { - data: T; - expiry: number; -} - -@Injectable({ - providedIn: 'root' -}) -export class CacheService { - private handleQuotaExceeded(): void { - const keys: string[] = []; - const expiries: number[] = []; - - for (let i = 0; i < localStorage.length; i++) { - const key = localStorage.key(i); - if (!key) continue; - - const cacheEntry = JSON.parse(localStorage.getItem(key) as string) as CacheEntry; - keys.push(key); - expiries.push(cacheEntry.expiry); - } - - // Удаляем самый старый элемент - const oldestIndex = expiries.indexOf(Math.min(...expiries)); - localStorage.removeItem(keys[oldestIndex]); - } - - private isQuotaExceededError(e: unknown): e is DOMException { - return e instanceof DOMException && ( - e.name === 'QuotaExceededError' || - e.name === 'NS_ERROR_DOM_QUOTA_REACHED' - ); - } - - set(key: string, data: T, ttl: number): void { - const expiry = Date.now() + ttl; - const cacheEntry: CacheEntry = {data, expiry}; - - try { - localStorage.setItem(key, JSON.stringify(cacheEntry)); - } catch (e) { - if (this.isQuotaExceededError(e)) { - this.handleQuotaExceeded(); - localStorage.setItem(key, JSON.stringify(cacheEntry)); - } else { - throw e; - } - } - } - - get(key: string): T | null { - const cached = localStorage.getItem(key); - if (!cached) return null; - - const cacheEntry = JSON.parse(cached) as CacheEntry; - if (Date.now() > cacheEntry.expiry) { - localStorage.removeItem(key); - return null; - } - - return cacheEntry.data; - } -}