Total Complexity | 1 |
Complexity/F | 1 |
Lines of Code | 29 |
Function Count | 1 |
Duplicated Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | import * as fs from 'fs'; |
||
2 | import * as shortid from 'shortid'; |
||
3 | import {Injectable, Inject} from '@nestjs/common'; |
||
4 | import {IFileStorage} from 'src/Application/IFileStorage'; |
||
5 | import {IUploadedFile} from 'src/Domain/File/IUploadedFile'; |
||
6 | import {FileLocationStrategy} from 'src/Domain/File/Strategy/FileLocationStrategy'; |
||
7 | import {IDateUtils} from 'src/Application/IDateUtils'; |
||
8 | |||
9 | @Injectable() |
||
10 | export class LocalFileStorageAdapter implements IFileStorage { |
||
11 | constructor( |
||
12 | @Inject('IDateUtils') |
||
13 | private readonly dateUtils: IDateUtils, |
||
14 | private readonly fileLocationStrategy: FileLocationStrategy |
||
15 | ) {} |
||
16 | |||
17 | public async upload(file: IUploadedFile): Promise<string> { |
||
18 | const fileName = `${shortid()}_${file.originalname}`; |
||
19 | const location = await this.fileLocationStrategy.location( |
||
20 | fileName, |
||
21 | this.dateUtils.getCurrentDate() |
||
22 | ); |
||
23 | |||
24 | fs.writeFileSync(location, file.buffer); |
||
25 | |||
26 | return fileName; |
||
27 | } |
||
28 | } |
||
29 |