$ npm install --save @bb/node-async
Для одиночного роута
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 операции.
Ошибки связанные с созданием файла во временной директории ОС с 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
.
Ошибки чтения файла результата, файла ошибок, файла c PID процесса или ошибки при выполнении проверки наличия процесса по PID-у.
Удаляет файлы результатов операции.
clearResult(): void
Отсутствуют.
Отсутствует.
Отсутствуют (любые ошибки связанные с удалением файлов не возвращаются).