Giter VIP home page Giter VIP logo

node_rest's Introduction

Асинхронное выполнение кода

Установка

$ npm install --save @bb/node-async

Оглавление

  1. run
  2. checkResult
  3. clearResult

Роутинг

Использование

Для одиночного роута

export default router(createScope).post(CreateOffer).put(EditOffer).build();

Для группы роутов:

export default (() =>
  router(createScope).setPrefix('/api/offers/:uuid/')
    .post('', CreateOffer)
    .put('monitor', MonitorOffer)
    .get('templates/:code', DownloadTemplates)
    .build()
)();
  • createScope - замыкание, которое выполняется перед запуском usecase
  • CreateOffer, MonitorOffer, DownloadTemplates - классы usecase

Юзкейсы

Должны наследоваться от ApiUsecase, AccessorUsecase или FileUsecase

export default class EditOffer extends ApiUsecase {

  constructor({ ...scope }) {
    super(scope);
    this.permission = 'update_offers';
  }

  async initialize({ uuid }) {
    // constructor
  }
  
  async process() {
    // do something
  }

  async schema() {
    // ajv schema for validation
  }
}
export default class MonitorOffer extends AccessorUsecase {
  constructor({ ...scope }) {
    super(scope);
  }

  async process() {
    // ...
    if (condition) {
      return { /* ... */ }; // завершение работы accessor
    }

    return null; // продолжение работы accessor
  }
}
export default class DownloadTemplates extends FileUsecase {
  constructor({ ...scope }) {
    super(scope);
  }

  async process({ uuid }) {
    // ...
    return { file, contentType, filename };
  }
}

Функция запускает выполнение переданной функции или промиса и возвращает UUID операции.

run(fn, needClear = true)

Аргументы:

  • fn: (Function | Promise) - обычная функция или асинхронная функция (async fn() ...) или промис.
  • needClear: (boolean) = true - флаг определяет требуется ли удалять файлы с результатами операции после того как checkResult вернул результат вызывающей стороне (по умолчанию true - т.е. удаляются). Срабатывает после возвращения результатов даже если функция завершилась с ошибкой (произошло исключение throw new Error) или успешном выполнении функции.

Ответ:

UUID операции.

Исключения (throw new Error):

Ошибки связанные с созданием файла во временной директории ОС с PID-ом процесса.

Функция проверки результата выполнения операции.

checkResult(uuid)

Аргументы:

uuid: string - UUID операции из функции run.

Ответ:

  • Если сервис отработал без ошибок:

    {
      status: string,
      data: string
    }
    

    , где status = complete, data - результат операции.

  • Если ошибки в процессе выполнения:

    {
      status: string,
      message: string
    }
    

    , где status = error, message - текст сообщения об ошибке.

  • Если запущенная операция всё ещё выполняется:

    {
      status: string
    }
    

    , где status = launched.

Исключения (throw new Error):

Ошибки чтения файла результата, файла ошибок, файла c PID процесса или ошибки при выполнении проверки наличия процесса по PID-у.

Удаляет файлы результатов операции.

clearResult(): void

Аргументы:

Отсутствуют.

Ответ:

Отсутствует.

Исключения (throw new Error):

Отсутствуют (любые ошибки связанные с удалением файлов не возвращаются).

node_rest's People

Contributors

maximumquiet avatar sortia avatar denikungurov avatar dmitryi698 avatar

Watchers

slavb18 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.