ecom-cache v0.4.7
Ecom Cache module
Overview
Ecom Cache module for NestJS , this module is a wrapper around keyv and keyv-redis
Features
- Cache service for generic use
- Cache service for auth tokens
- Secure cache
Installation
yarn add ecom-cache ecom-cache-manager cache-manager
Usage
Create config service for cache module
import { Injectable } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { EcomCacheModuleOptions, EcomCacheModuleOptionsFactory } from 'ecom-cache'; @Injectable() export class CacheModulConfigService implements EcomCacheModuleOptionsFactory { constructor(private readonly configService: ConfigService) {} createEcomCacheOptions(): EcomCacheModuleOptions { return { ttl: 1000 * 60, connections: [ { host: this.configService.getOrThrow<string>('REDIS_HOST'), user: this.configService.getOrThrow<string>('REDIS_USERNAME'), password: this.configService.getOrThrow<string>('REDIS_PASSWORD'), port: +this.configService.getOrThrow<string>('REDIS_PORT'), }, ], cacheEncryptionKey: this.configService.getOrThrow<string>('CACHE_ENCRYPTION_KEY'), }; } }
Import into app module
import { EncryptionModule } from 'ecom-cache'; import { Module } from '@nestjs/common'; @Module({ imports: [ EcomCacheModule.forRootAsync({ isGlobal: true, inject: [ConfigService], useFactory: (configService: ConfigService) => new CacheModulConfigService(configService).createEcomCacheOptions(), }), ], providers: [], }) export class AppModule {}
Use in your target module service
inject
EcomCacheService
with your service `import { EcomCacheService } from 'ecom-cache'; @Injectable() export class YourModuleService { constructor(private readonly cacheService: EcomCacheService) {} }
Deal with generic cache methods
await this.cacheService.get('key'); await this.cacheService.set('key', 'value',ttl?); await this.cacheService.del('key');
Secure cache
await this.cacheService.set('key', 'value', true, ttl?);
await this.cacheService.get('key', false);
set
method will encrypt the value before being cached if secure is set to true, you'll be required to use secure cache when get the data.get
method will return the value as is if secure is not set to true. as an encrypted text, otherwise if set to true the value will be decoded and returned.
- Use with auth service : Cache service For Auth
inject
EcomCacheService
with your service `import { EcomAuthCacheService } from 'ecom-cache'; @Injectable() export class YourModuleService { constructor(private readonly authCacheService: EcomCacheService) {} }
Deal with generic cache methods
await this.authCacheService.getTokenPayload(accessToken);
!!! Note :( only for auth micro service) set token payload , this method will be used in auth service and must provide package private key to set token
await this.authCacheService.setTokenPayload(accessToken, tokenPayload, ttl, ECOM_CACHE_PKG_SECRET_KEY);
Use request cache Inerceptor
import { APP_INTERCEPTOR } from '@nestjs/core'; import { CacheInterceptor } from 'ecom-cache-manager'; @Module({ providers: [ { provide: APP_INTERCEPTOR, useClass: CacheInterceptor, }, ], }) export class AppModule {}
5 months ago
5 months ago
5 months ago
5 months ago
7 months ago
7 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
8 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago
9 months ago