Skip to content
Snippets Groups Projects
minio.service.ts 799 B
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();
					}
				},
			);
		});
	}
}