-
Notifications
You must be signed in to change notification settings - Fork 0
/
TransformResume.ts
36 lines (29 loc) 路 1.07 KB
/
TransformResume.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { inject, injectable } from 'inversify';
import 'reflect-metadata';
import type { EnhancedResume, OutputResume } from '~/entities/enhanced';
import createActivity from '~/entities/createActivity';
import groupBySkills from '~/entities/groupBySkills';
export const TransformResumeUseCaseType = Symbol.for('TransformResumeUseCase');
export interface TransformResumeUseCase {
handle: (input: EnhancedResume) => Promise<Buffer>;
}
export const TransformPresenterType = Symbol.for('TransformPresenter');
export interface TransformPresenter {
transform: (output: OutputResume) => Promise<Buffer>;
}
@injectable()
export class TransformResumeInteractor implements TransformResumeUseCase {
private readonly presenter: TransformPresenter;
constructor(@inject(TransformPresenterType) presenter: TransformPresenter) {
this.presenter = presenter;
}
public readonly handle = ({
skills,
...input
}: EnhancedResume): Promise<Buffer> =>
this.presenter.transform({
...input,
activities: createActivity(input),
skills: groupBySkills(skills),
});
}