Passed
Pull Request — master (#87)
by Mathieu
01:49
created

server/src/Infrastructure/Adapter/LocalFileStorageAdapter.ts   A

Complexity

Total Complexity 1
Complexity/F 1

Size

Lines of Code 29
Function Count 1

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 1
eloc 25
mnd 0
bc 0
fnc 1
dl 0
loc 29
rs 10
bpm 0
cpm 1
noi 0
c 0
b 0
f 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A LocalFileStorageAdapter.upload 0 11 1
1
import * as fs from 'fs';
2
import * as uniqid from 'uniqid';
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 = uniqid(undefined, `_${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