Skip to content
Snippets Groups Projects
minio.service.ts 820 B
Newer Older
  • Learn to ignore specific revisions
  • Adrian Paschkowski's avatar
    V2
    Adrian Paschkowski committed
    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(id: string, ext: string, data: Readable | Buffer) {
    		return new Promise<void>((resolve, reject) => {
    			this.minio.putObject(
    				process.env.MINIO_BUCKET,
    				`${id}.${ext}`,
    				data,
    				(err) => {
    					if (err) {
    						reject(err);
    					} else {
    						resolve();
    					}
    				},
    			);
    		});
    	}
    }