fix: get images endpoint

This commit is contained in:
Oleg Proskurin 2025-10-12 22:55:37 +07:00
parent 3cbb366a9d
commit e0924f9c4b
1 changed files with 31 additions and 6 deletions

View File

@ -427,26 +427,43 @@ export class MinioStorageService implements StorageService {
const files: FileMetadata[] = [];
console.log(`[MinIO listFiles] Starting list for prefix: ${searchPrefix}`);
const startTime = Date.now();
return new Promise((resolve, reject) => {
const stream = this.client.listObjects(this.bucketName, searchPrefix, true);
stream.on('data', async (obj) => {
let dataCount = 0;
stream.on('data', (obj) => {
if (!obj.name || !obj.size) return;
dataCount++;
try {
const pathParts = obj.name.split('/');
const filename = pathParts[pathParts.length - 1];
if (!filename) return;
const metadata = await this.client.statObject(this.bucketName, obj.name);
// Infer content type from file extension (more efficient than statObject)
const ext = filename.toLowerCase().split('.').pop();
const contentType =
{
png: 'image/png',
jpg: 'image/jpeg',
jpeg: 'image/jpeg',
gif: 'image/gif',
webp: 'image/webp',
svg: 'image/svg+xml',
}[ext || ''] || 'application/octet-stream';
files.push({
filename,
size: obj.size,
contentType: metadata.metaData?.['content-type'] || 'application/octet-stream',
contentType,
lastModified: obj.lastModified || new Date(),
etag: metadata.etag,
etag: obj.etag,
path: obj.name,
});
} catch (error) {
@ -454,9 +471,17 @@ export class MinioStorageService implements StorageService {
}
});
stream.on('end', () => resolve(files));
stream.on('end', () => {
const elapsed = Date.now() - startTime;
console.log(
`[MinIO listFiles] Stream ended. Processed ${dataCount} objects, collected ${files.length} files in ${elapsed}ms`,
);
resolve(files);
});
stream.on('error', (error) => {
console.error('[MinIO listFiles] Stream error:', error);
const elapsed = Date.now() - startTime;
console.error(`[MinIO listFiles] Stream error after ${elapsed}ms:`, error);
reject(error);
});
});