Update transfer engine exports & providers API

This commit is contained in:
Convly 2022-10-13 16:52:16 +02:00
parent f1ecdabd3c
commit 02c2523429
2 changed files with 28 additions and 21 deletions

View File

@ -7,7 +7,7 @@ import {
ITransferEngineOptions, ITransferEngineOptions,
} from '../../types'; } from '../../types';
export class TransferEngine implements ITransferEngine { class TransferEngine implements ITransferEngine {
sourceProvider: ISourceProvider; sourceProvider: ISourceProvider;
destinationProvider: IDestinationProvider; destinationProvider: IDestinationProvider;
options: ITransferEngineOptions; options: ITransferEngineOptions;
@ -141,28 +141,26 @@ export class TransferEngine implements ITransferEngine {
// } // }
// return new Promise((resolve, reject) => { // return new Promise((resolve, reject) => {
// pipeline( // pipeline(
// // We might want to use a json-chain's Chain here since they allow transforms
// // streams as regular functions (that allows object as parameter & return type)
// inStream, // inStream,
// // chain([ // chain([
// // (data) => { // (data) => {
// // console.log('hello', data); // console.log('hello', data);
// // return data; // return data;
// // }, // },
// // ]), // ]),
// outStream, // outStream,
// (e: NodeJS.ErrnoException | null, value: unknown) => { // (e: NodeJS.ErrnoException | null) => {
// if (e) { // if (e) {
// console.log('Something wrong happened', e); // console.log('Something wrong happened', e);
// reject(e); // return reject(e);
// return;
// } // }
// console.log('value', value);
// console.log('All the entities have been transferred'); // console.log('All the entities have been transferred');
// resolve(); // resolve();
// } // }
// ); // );
// }); // });
console.log('transferEntities not yet implemented');
return new Promise((resolve) => resolve());
} }
async transferLinks(): Promise<void> { async transferLinks(): Promise<void> {
@ -210,3 +208,11 @@ export class TransferEngine implements ITransferEngine {
return new Promise((resolve) => resolve()); return new Promise((resolve) => resolve());
} }
} }
export const createTransferEngine = <T extends ISourceProvider, U extends IDestinationProvider>(
sourceProvider: T,
destinationProvider: U,
options: ITransferEngineOptions
): TransferEngine => {
return new TransferEngine(sourceProvider, destinationProvider, options);
};

View File

@ -1,5 +1,6 @@
import { Stream } from './utils'; import { Stream } from './utils';
import { IMetadata } from './common-entities'; import { IMetadata } from './common-entities';
import { PipelineSource, PipelineDestination } from 'stream';
type ProviderType = 'source' | 'destination'; type ProviderType = 'source' | 'destination';
@ -14,10 +15,10 @@ interface IProvider {
export interface ISourceProvider extends IProvider { export interface ISourceProvider extends IProvider {
// Getters for the source's transfer streams // Getters for the source's transfer streams
streamEntities?(): Stream | Promise<Stream>; streamEntities?(): PipelineSource | Promise<PipelineSource>;
streamLinks?(): Stream | Promise<Stream>; streamLinks?(): PipelineSource | Promise<PipelineSource>;
streamMedia?(): Stream | Promise<Stream>; streamMedia?(): PipelineSource | Promise<PipelineSource>;
streamConfiguration?(): Stream | Promise<Stream>; streamConfiguration?(): PipelineSource | Promise<PipelineSource>;
} }
export interface IDestinationProvider extends IProvider { export interface IDestinationProvider extends IProvider {
@ -27,8 +28,8 @@ export interface IDestinationProvider extends IProvider {
rollback?<T extends Error = Error>(e: T): void | Promise<void>; rollback?<T extends Error = Error>(e: T): void | Promise<void>;
// Getters for the destination's transfer streams // Getters for the destination's transfer streams
getEntitiesStream?(): Stream | Promise<Stream>; getEntitiesStream?(): PipelineDestination | Promise<PipelineDestination>;
getLinksStream?(): Stream | Promise<Stream>; getLinksStream?(): PipelineDestination | Promise<PipelineDestination>;
getMediaStream?(): Stream | Promise<Stream>; getMediaStream?(): PipelineDestination | Promise<PipelineDestination>;
getConfigurationStream?(): Stream | Promise<Stream>; getConfigurationStream?(): PipelineDestination | Promise<PipelineDestination>;
} }