import { Injectable } from '@nestjs/common'; import { Client as MinioClient } from 'minio'; import { Readable } from 'stream'; @Injectable() export class MinioService { private readonly minio: MinioClient; constructor() { this.minio = new MinioClient({ endPoint: process.env.MINIO_HOST, port: parseInt(process.env.MINIO_PORT), accessKey: process.env.MINIO_ACCESS_KEY, secretKey: process.env.MINIO_SECRET_KEY, useSSL: process.env.MINIO_SSL?.toLowerCase() == 'true' ?? false, }); } async saveFile(path: string, data: Readable | Buffer) { return new Promise<void>((resolve, reject) => { this.minio.putObject( process.env.MINIO_BUCKET, path, data, (err) => { if (err) { reject(err); } else { resolve(); } }, ); }); } }