@product-live/data-factory-nest
v1.0.1
Published
NestJS module to abtract using the SDK to run custom tasks in data factory
Downloads
1
Keywords
Readme
Intro
This NestJS module is an abstraction layer for running custom tasks on data-factory. This uses our SDK for interracting with our Public API.
Usage
Simple example of the modules usage to process a custom task. There is also an example in "./example"
that is used by tests.
npm install --save @product-live/data-factory-nest
Import the module "DataFactoryModule"
inside your main app module. You'll need to pass it a module or multiple modules that export the tasks you want to run.
import {Module} from '@nestjs/common';
import {PowerTask, WorkerModule} from './worker';
import {DataFactoryModule} from '@product-live/data-factory-nest';
@Module({
imports: [
WorkerModule,
DataFactoryModule.forRootAsync({
imports: [WorkerModule],
tasks: [PowerTask] // list of tasks to handle should be exported by module inside "imports"
})
],
providers: []
})
export class AppModule {}
The "WorkerModule"
should have all the task you want to process. Most situations it'll only be one task.
import {Module} from '@nestjs/common';
import {PowerTask} from './power.task';
@Module({
providers: [PowerTask],
exports: [PowerTask]
})
export class WorkerModule {}
The task should look something like this. Validation can be added to the input and output.
import {Injectable, Logger} from '@nestjs/common';
import {IsNumber} from 'class-validator';
import {TaskRunner, DataFactoryTaskResult} from '@product-live/data-factory-nest';
class PowerTaskInput {
@IsNumber()
power: number;
}
class PowerTaskOutput {
result: number;
}
@Injectable()
export class PowerTask implements TaskRunner<PowerTaskInput, PowerTaskOutput> {
private readonly logger = new Logger(PowerTask.name);
readonly taskDefinitionId = '40977547f2646d13414a171a';
readonly taskInput = PowerTaskInput;
async run(input: PowerTaskInput, workdirector: string): Promise<DataFactoryTaskResult<PowerTaskOutput>> {
this.logger.log({msg: 'started Power task', input: input});
return new DataFactoryTaskResult<PowerTaskOutput>()
.setResult({
result: Math.pow(2, input.power)
});
}
}