workouts-transfer
Version:
Workouts transfer between services as inversify modules.
36 lines (26 loc) • 943 B
text/typescript
import { Workout } from 'fitness-models';
import { injectable } from 'inversify';
import { TransferAdapter } from './transfer-adapters/TransferAdapter';
()
export default class WorkoutTransfer {
private from: TransferAdapter;
private to: TransferAdapter;
public constructor(from: TransferAdapter, to: TransferAdapter) {
this.from = from;
this.to = to;
}
public getFrom() {
return this.from;
}
public getTo() {
return this.to;
}
public async copyWorkout(id: string, extender?: (workout: Workout) => Promise<Workout>): Promise<string | null> {
const workoutToCopy = await this.from.getWorkout(id);
if (await this.to.findUniversalWorkout(workoutToCopy)) {
return null;
}
const enhacedWorkout = extender ? await extender(workoutToCopy) : workoutToCopy;
return this.to.createWorkout(enhacedWorkout);
}
}