refactor: Optimize readAllMetadata function to use Promise.all for concurrent metadata reading

This commit is contained in:
Eric Fennis
2025-02-19 13:55:31 +01:00
parent b46927e510
commit 34dfc63ce2

View File

@@ -12,10 +12,12 @@ import { readMetadata } from './readMetadata.mjs';
export const readAllMetadata = async (directory) => { export const readAllMetadata = async (directory) => {
const directoryContent = await fs.readdir(directory); const directoryContent = await fs.readdir(directory);
return directoryContent const metaDataPromises =
.filter((file) => path.extname(file) === '.json') directoryContent
.reduce((acc, fileName) => { .filter((file) => path.extname(file) === '.json')
acc[path.basename(fileName, '.json')] = readMetadata(fileName, directory); .map(async(file) => [path.basename(file, '.json'), await readMetadata(file, directory)]);
return acc;
}, {}); const metadata = await Promise.all(metaDataPromises)
return Object.fromEntries(metadata);
}; };