0.4.7 • Published 5 months ago

ecom-cache v0.4.7

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

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

  1. 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'),
        };
      }
    }
  2. 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 {}
  3. 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) {}
    }
  1. Deal with generic cache methods

    await this.cacheService.get('key');
    await this.cacheService.set('key', 'value',ttl?);
    await this.cacheService.del('key');
  2. 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.

  1. 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) {}
    }
  1. 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);
  2. 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 {}
0.4.7

5 months ago

0.4.6

5 months ago

0.4.5

5 months ago

0.4.4

5 months ago

0.4.3

7 months ago

0.4.2

7 months ago

0.3.9

8 months ago

0.3.8

8 months ago

0.3.7

8 months ago

0.4.1

8 months ago

0.4.0

8 months ago

0.3.6

8 months ago

0.3.5

8 months ago

0.3.3

8 months ago

0.3.2

9 months ago

0.3.1

9 months ago

0.3.0

9 months ago

0.2.9

9 months ago

0.2.8

9 months ago

0.2.7

9 months ago

0.2.6

9 months ago

0.2.5

9 months ago

0.2.4

9 months ago

0.2.3

9 months ago

0.2.2

9 months ago

0.2.1

9 months ago

0.2.0

9 months ago

0.1.9

9 months ago

0.1.8

9 months ago

0.1.7

9 months ago

0.1.6

9 months ago

0.1.5

9 months ago

0.1.4

9 months ago

0.1.3

9 months ago

0.1.2

9 months ago

0.1.1

9 months ago

0.0.9

9 months ago

0.0.8

9 months ago

0.0.6

9 months ago

0.0.5

9 months ago

0.0.4

9 months ago

0.0.3

9 months ago

0.0.2

9 months ago

0.0.1

9 months ago

0.1.0

9 months ago