import * as path from "path";

import {Part} from "multiparty";
import uuid from 'uuid';

import {File} from "../entity/file";

import amazon from "./amazon";

export class StorageManager {

  public async uploadFile(file: Part, fileName: string): Promise<File> {
    // console.log('part', file);
    //
    // return null;

    const fileEntity = new File();
    fileEntity.originalFileName = fileName;
    fileEntity.publicId = uuid.v1();

    const ext = path.extname(fileName);
    const upload = await amazon.uploadFile(file, `${fileEntity.publicId}${ext}`);

    fileEntity.link = upload.Location;

    await fileEntity.save();
    return fileEntity;
  }

}

export default new StorageManager();
