@avec-platform/sdk

2.29.0 • Public • Published

npm-sdk

Includes

  • CacheInterceptor - Cache get requests in redis
  • Datesubscriber - Listen to typeorm events, and adds createdAt and updateAt data in request.
  • HttpErrorFilter - Catches errors and display then in dev enviroment.
  • DataBroker - Communicates with RabbitMQ
  • LogBroker - Sends log data to elastic database via RabbitMQ

Development

  • Clone repository:

    $ git clone git@bitbucket.org:avecplatform/npm-sdk.git
    $ cd npm-sdk
  • Install dependencies:

    $ npm install

Tests

  • Run all tests:

    $ npm run test
  • Run all tests in watch mode:

    $ npm run test:watch

NPM Scripts

Name Description
build Build production files to 'lib' dir
deps:check NPX for npm-check
sort-package-json NPX for sort-package-json
test Run tests
test:watch Run tests in watch mode

Usage

CacheInterceptor

Is used as a Nestjs APP_INTERCEPTOR

Example:

// src/app.mdoule.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { APP_INTERCEPTOR } from '@nestjs/core';
import { HttpCacheInterceptor } from '@avec-platform/sdk';
import { DatabaseModule } from './config/database.module';

const cacheProvider = {
  provide: APP_INTERCEPTOR,
  useClass: HttpCacheInterceptor,
};


const providers = [];

const imports = [
  DatabaseModule.orm(),
];

if (process.env.REDIS_URL) {
  Logger.log(`Cache enabled`, 'Redis');
  imports.push(DatabaseModule.cache());
  providers.push(cacheProvider);
}

@Module({
  imports,
  providers,
  controllers: [AppController],
})
export class AppModule {}

HttpErrorFilter

Is used as a Nestjs APP_FILTER

example:

// src/app.mdoule.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { DatabaseModule } from './config/database.module';
import { APP_INTERCEPTOR, APP_FILTER } from '@nestjs/core';
import { HttpErrorFilter } from '@avec-platform/sdk';

const imports = [
  DatabaseModule.orm(),
];
const providers = [];

const httpErrorFilter = {
  provide: APP_FILTER,
  useClass: HttpErrorFilter,
};

providers.push(httpErrorFilter);



@Module({
  imports,
  providers,
  controllers: [AppController],
})
export class AppModule {}

DatesSubscriber

Is used as a Typeorm Subscriber

Example standard Typeorm Config:

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { DatesSubscriber } from '@avec-platform/sdk';

@Module({
  imports: [
    TypeOrmModule.forRoot({
      type: 'mysql',
      host: 'localhost',
      port: 3306,
      username: 'root',
      password: 'root',
      database: 'test',
      subscribers: [DatesSubscriber],
      entities: [__dirname + '/**/*.entity{.ts,.js}'],
      synchronize: true,
    }),
  ],
})
export class ApplicationModule {}

Example using Database.module.ts created by Andrew for the Config Service.

export function getOrmConfig() {
  const config = new ConfigService().read();
  const mysqlConfig = parseUri(config.DATABASE_URL);

  return {
    type: mysqlConfig.scheme || 'mysql',
    host: mysqlConfig.host,
    port: mysqlConfig.port || 3306,
    username: mysqlConfig.user,
    password: mysqlConfig.password,
    database: mysqlConfig.database,
    entities: [
      `${path.join(appRootPath.path, '{src,dist}')}/**/*.entity{.ts,.js}`,
    ],
    subscribers: [DatesSubscriber],
    synchronize: false,
    timezone: 'UTC',
    dateStrings: 'TIMESTAMP',
  };
}

Readme

Keywords

none

Package Sidebar

Install

npm i @avec-platform/sdk

Weekly Downloads

2

Version

2.29.0

License

none

Unpacked Size

94.2 kB

Total Files

92

Last publish

Collaborators

  • avec-platform-deploy