@product-live/data-factory-nest
v1.0.1
Published
NestJS module to abtract using the SDK to run custom tasks in data factory
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-nestImport 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)
});
}
}