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,
} from '../../types';
export class TransferEngine implements ITransferEngine {
class TransferEngine implements ITransferEngine {
sourceProvider: ISourceProvider;
destinationProvider: IDestinationProvider;
options: ITransferEngineOptions;
@ -141,28 +141,26 @@ export class TransferEngine implements ITransferEngine {
// }
// return new Promise((resolve, reject) => {
// 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,
// // chain([
// // (data) => {
// // console.log('hello', data);
// // return data;
// // },
// // ]),
// chain([
// (data) => {
// console.log('hello', data);
// return data;
// },
// ]),
// outStream,
// (e: NodeJS.ErrnoException | null, value: unknown) => {
// (e: NodeJS.ErrnoException | null) => {
// if (e) {
// console.log('Something wrong happened', e);
// reject(e);
// return;
// return reject(e);
// }
// console.log('value', value);
// console.log('All the entities have been transferred');
// resolve();
// }
// );
// });
console.log('transferEntities not yet implemented');
return new Promise((resolve) => resolve());
}
async transferLinks(): Promise<void> {
@ -210,3 +208,11 @@ export class TransferEngine implements ITransferEngine {
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 { IMetadata } from './common-entities';
import { PipelineSource, PipelineDestination } from 'stream';
type ProviderType = 'source' | 'destination';
@ -14,10 +15,10 @@ interface IProvider {
export interface ISourceProvider extends IProvider {
// Getters for the source's transfer streams
streamEntities?(): Stream | Promise<Stream>;
streamLinks?(): Stream | Promise<Stream>;
streamMedia?(): Stream | Promise<Stream>;
streamConfiguration?(): Stream | Promise<Stream>;
streamEntities?(): PipelineSource | Promise<PipelineSource>;
streamLinks?(): PipelineSource | Promise<PipelineSource>;
streamMedia?(): PipelineSource | Promise<PipelineSource>;
streamConfiguration?(): PipelineSource | Promise<PipelineSource>;
}
export interface IDestinationProvider extends IProvider {
@ -27,8 +28,8 @@ export interface IDestinationProvider extends IProvider {
rollback?<T extends Error = Error>(e: T): void | Promise<void>;
// Getters for the destination's transfer streams
getEntitiesStream?(): Stream | Promise<Stream>;
getLinksStream?(): Stream | Promise<Stream>;
getMediaStream?(): Stream | Promise<Stream>;
getConfigurationStream?(): Stream | Promise<Stream>;
getEntitiesStream?(): PipelineDestination | Promise<PipelineDestination>;
getLinksStream?(): PipelineDestination | Promise<PipelineDestination>;
getMediaStream?(): PipelineDestination | Promise<PipelineDestination>;
getConfigurationStream?(): PipelineDestination | Promise<PipelineDestination>;
}