1.0.1 • Published 4 years ago

@wsc-company/service v1.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

Service

O Pacote Service é voltado para criar aplicações HTTP

BaseController

O base controller já vem com alguns genericos metodos prontos para crud

Como definido em types todos os controllers devem o initRoutes, validationSchema, requestValidate que já são pré-implementados no base

HTTP Status

Http Status é um enum com os status HTTP que podemos usar em diferentes situações chamando por um nome constante e não por um número hard-code

import { HttpStatus } from '@wsc-company/service'

function(code: HttpStatus): boolean {
    return code === HttpStatus.OK
}

Examples

  • Controller
import { BaseController } from '@wsc-company/service'
import { IController, ILogger } from '@wsc-company/types'
import { Router } from 'express'
import * as Joi from 'joi'
import { Factory as FactoryService } from './../../Services'

export class ExampleController extends BaseController implements IController {
  /**
   * Logger to log application
   * @param ILogger
   */
  protected _logger: ILogger

  /**
   * Method to construct instance of Users Controller
   *
   * @param _logger Instance of logger
   * @param expressRouter Instance of Express Router
   */
  constructor(
    /**
     * Logger to log application
     * @param ILogger
     */
    logger: ILogger,

    /**
     * Instance of Express Router
     * @param Router
     */
    expressRouter: Router,
  ) {
    super(
      logger, // logger instance
      expressRouter, // Router instance
      'Example', // Controller Name
      '/example', // HTTP uri
      FactoryService.getGroupsService(), // Controller Service
      null, // Controller Repository
    )
    this._logger = logger
    this.initRoutes()
  }

  public initRoutes = (): void => {
    // Route example
    this.router.post(this.path, this.create.bind(this))
  }

  public validationSchema = (): any => {
    const create = Joi.object().keys({
      name: Joi.string().required(),
    })
    return {
      create
    }
  }
}