Inspecting performance.
This commit is contained in:
66
src/media.js
66
src/media.js
@@ -37,15 +37,22 @@ function pluckPhotos(photos, specifiedLimit) {
|
||||
}
|
||||
|
||||
async function createThumbnail(buffer) {
|
||||
return sharp(buffer)
|
||||
.resize({
|
||||
height: config.media.thumbnailSize,
|
||||
withoutEnlargement: true,
|
||||
})
|
||||
.jpeg({
|
||||
quality: config.media.thumbnailQuality,
|
||||
})
|
||||
.toBuffer();
|
||||
try {
|
||||
const thumbnail = sharp(buffer)
|
||||
.resize({
|
||||
height: config.media.thumbnailSize,
|
||||
withoutEnlargement: true,
|
||||
})
|
||||
.jpeg({
|
||||
quality: config.media.thumbnailQuality,
|
||||
})
|
||||
.toBuffer();
|
||||
|
||||
return thumbnail;
|
||||
} catch (error) {
|
||||
logger.error(`Failed to create thumbnail: ${error.message}`);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
async function createMediaDirectory(domain, subpath) {
|
||||
@@ -138,27 +145,32 @@ async function savePhotos(files, {
|
||||
naming = 'index',
|
||||
}) {
|
||||
return Promise.map(files, async (file, index) => {
|
||||
const timestamp = new Date().getTime();
|
||||
const thumbnail = await createThumbnail(file.photo);
|
||||
try {
|
||||
const timestamp = new Date().getTime();
|
||||
const thumbnail = await createThumbnail(file.photo);
|
||||
|
||||
const filename = naming === 'index'
|
||||
? `${file.role || role}${index + 1}`
|
||||
: `${timestamp + index}`;
|
||||
const filename = naming === 'index'
|
||||
? `${file.role || role}${index + 1}`
|
||||
: `${timestamp + index}`;
|
||||
|
||||
const filepath = path.join(`${domain}s`, subpath, `${filename}.${file.extension}`);
|
||||
const thumbpath = path.join(`${domain}s`, subpath, `${filename}_thumb.${file.extension}`);
|
||||
const filepath = path.join(`${domain}s`, subpath, `${filename}.${file.extension}`);
|
||||
const thumbpath = path.join(`${domain}s`, subpath, `${filename}_thumb.${file.extension}`);
|
||||
|
||||
await Promise.all([
|
||||
fs.writeFile(path.join(config.media.path, filepath), file.photo),
|
||||
fs.writeFile(path.join(config.media.path, thumbpath), thumbnail),
|
||||
]);
|
||||
await Promise.all([
|
||||
fs.writeFile(path.join(config.media.path, filepath), file.photo),
|
||||
fs.writeFile(path.join(config.media.path, thumbpath), thumbnail),
|
||||
]);
|
||||
|
||||
return {
|
||||
...file,
|
||||
thumbnail,
|
||||
filepath,
|
||||
thumbpath,
|
||||
};
|
||||
return {
|
||||
...file,
|
||||
thumbnail,
|
||||
filepath,
|
||||
thumbpath,
|
||||
};
|
||||
} catch (error) {
|
||||
logger.error(`Failed to store ${domain} ${role} to ${subpath}: ${error.message}`);
|
||||
return null;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -193,7 +205,7 @@ async function storePhotos(photos, {
|
||||
naming,
|
||||
});
|
||||
|
||||
const curatedPhotoEntries = curatePhotoEntries(savedPhotos, domain, role, targetId);
|
||||
const curatedPhotoEntries = curatePhotoEntries(savedPhotos.filter(Boolean), domain, role, targetId);
|
||||
|
||||
const newPhotos = await knex('media').insert(curatedPhotoEntries).returning('*');
|
||||
const photoEntries = Array.isArray(newPhotos)
|
||||
|
||||
Reference in New Issue
Block a user