Skip to content
3 changes: 3 additions & 0 deletions base_folder/src/function-factory.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import extraction from './functions/extraction';

export const functionFactory = {
// Add your functions here
extraction,
} as const;

export type FunctionFactoryType = keyof typeof functionFactory;
42 changes: 42 additions & 0 deletions base_folder/src/functions/extraction/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { convertToAirdropEvent } from '../../core/utils';
import { FunctionInput } from '../../core/types';
import { spawn, EventType } from '@devrev/ts-adaas';

export interface ExtractorState {}

export const initialState: ExtractorState = {};


function getWorkerPerExtractionPhase(event: FunctionInput) {
let path;
switch (event.payload.event_type) {
case EventType.ExtractionExternalSyncUnitsStart:
path = __dirname + '/workers/external-sync-units-extraction';
break;
case EventType.ExtractionMetadataStart:
path = __dirname + '/workers/metadata-extraction';
break;
case EventType.ExtractionDataStart:
case EventType.ExtractionDataContinue:
path = __dirname + '/workers/data-extraction';
break;
case EventType.ExtractionAttachmentsStart:
case EventType.ExtractionAttachmentsContinue:
path = __dirname + '/workers/attachments-extraction';
break;
}
return path;
}

const run = async (events: FunctionInput[]) => {
for (const event of events) {
const file = getWorkerPerExtractionPhase(event);
await spawn({
event: convertToAirdropEvent(event),
workerPath: file,
initialState: initialState,
});
}
};

export default run;
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { ExtractorEventType, processTask } from '@devrev/ts-adaas';
import { ExtractorState } from "../index";

processTask<ExtractorState>({
task: async ({ adapter }) => {},
onTimeout: async ({ adapter }) => {
await adapter.emit(ExtractorEventType.ExtractionAttachmentsProgress);
},
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { ExtractorEventType, processTask } from "@devrev/ts-adaas";
import { ExtractorState } from "../index";

processTask<ExtractorState>({
task: async ({ adapter }) => {},
onTimeout: async ({ adapter }) => {
await adapter.emit(ExtractorEventType.ExtractionDataProgress);
},
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { ExtractorEventType, processTask } from "@devrev/ts-adaas";
import { ExtractorState } from "../index";

processTask<ExtractorState>({
task: async ({ adapter }) => {},
onTimeout: async ({ adapter }) => {
await adapter.emit(ExtractorEventType.ExtractionExternalSyncUnitsError, {
error: {
message: 'Failed to extract external sync units. Lambda timeout.',
},
});
},
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import { processTask, ExtractorEventType } from '@devrev/ts-adaas';
import { ExtractorState } from '../index';

processTask<ExtractorState>({
task: async ({ adapter }) => {},
onTimeout: async ({ adapter }) => {
await adapter.emit(ExtractorEventType.ExtractionMetadataError, {
error: { message: 'Failed to extract metadata. Lambda timeout.' },
});
},
});