Feature/add error handling for redis connections (#2179)

* Add error handling

* Update changelog
pull/2183/head
Thomas Kaul 1 year ago committed by GitHub
parent 5fe07cb85f
commit d9ced885e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased ## Unreleased
### Added
- Added error handling for the _Redis_ connections to keep the app running if the connection fails
### Fixed ### Fixed
- Fixed the missing values in the holdings table - Fixed the missing values in the holdings table

@ -0,0 +1,7 @@
import { Cache } from 'cache-manager';
import type { RedisStore } from './redis-store.interface';
export interface RedisCache extends Cache {
store: RedisStore;
}

@ -0,0 +1,8 @@
import { Store } from 'cache-manager';
import Redis from 'redis';
export interface RedisStore extends Store {
getClient: () => Redis.RedisClient;
isCacheableValue: (value: any) => boolean;
name: 'redis';
}

@ -1,14 +1,21 @@
import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service'; import { ConfigurationService } from '@ghostfolio/api/services/configuration/configuration.service';
import { UniqueAsset } from '@ghostfolio/common/interfaces'; import { UniqueAsset } from '@ghostfolio/common/interfaces';
import { CACHE_MANAGER, Inject, Injectable } from '@nestjs/common'; import { CACHE_MANAGER, Inject, Injectable, Logger } from '@nestjs/common';
import { Cache } from 'cache-manager';
import type { RedisCache } from './interfaces/redis-cache.interface';
@Injectable() @Injectable()
export class RedisCacheService { export class RedisCacheService {
public constructor( public constructor(
@Inject(CACHE_MANAGER) private readonly cache: Cache, @Inject(CACHE_MANAGER) private readonly cache: RedisCache,
private readonly configurationService: ConfigurationService private readonly configurationService: ConfigurationService
) {} ) {
const client = cache.store.getClient();
client.on('error', (error) => {
Logger.error(error, 'RedisCacheService');
});
}
public async get(key: string): Promise<string> { public async get(key: string): Promise<string> {
return await this.cache.get(key); return await this.cache.get(key);

Loading…
Cancel
Save