Refactor file handling to prioritize internal data directories for backups and uploads; enhance error handling and logging for metadata and CSV operations.
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 47s
Some checks failed
Code Analysis (JS/Vue) / analyze (push) Failing after 47s
This commit is contained in:
@@ -45,35 +45,49 @@ export default defineEventHandler(async (event) => {
|
||||
}
|
||||
}
|
||||
|
||||
const metadata = await readGalerieMetadata()
|
||||
let metadata = []
|
||||
try {
|
||||
metadata = await readGalerieMetadata()
|
||||
if (!Array.isArray(metadata)) {
|
||||
console.warn('Galerie-Metadaten haben unerwartetes Format, verwende leere Liste')
|
||||
metadata = []
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Fehler beim Lesen der Galerie-Metadaten, liefere leeres Ergebnis:', e.message)
|
||||
metadata = []
|
||||
}
|
||||
|
||||
// Filtere Bilder basierend auf Sichtbarkeit
|
||||
const visibleImages = metadata.filter(image => {
|
||||
// Öffentliche Bilder sind für alle sichtbar
|
||||
// Defensive checks
|
||||
if (!image || typeof image !== 'object') return false
|
||||
if (image.isPublic) return true
|
||||
// Private Bilder nur für eingeloggte Mitglieder
|
||||
return isLoggedIn
|
||||
})
|
||||
|
||||
// Sortiere nach Upload-Datum (neueste zuerst)
|
||||
visibleImages.sort((a, b) => new Date(b.uploadedAt) - new Date(a.uploadedAt))
|
||||
// Sortiere nach Upload-Datum (neueste zuerst) - defensive
|
||||
visibleImages.sort((a, b) => {
|
||||
const ta = new Date(a.uploadedAt || 0).getTime()
|
||||
const tb = new Date(b.uploadedAt || 0).getTime()
|
||||
return tb - ta
|
||||
})
|
||||
|
||||
// Pagination
|
||||
const page = parseInt(getQuery(event).page) || 1
|
||||
const perPage = 10
|
||||
// Pagination (defensive defaults)
|
||||
const page = Math.max(1, parseInt(getQuery(event).page) || 1)
|
||||
const perPage = Math.max(1, parseInt(getQuery(event).perPage) || 10)
|
||||
const start = (page - 1) * perPage
|
||||
const end = start + perPage
|
||||
const paginatedImages = visibleImages.slice(start, end)
|
||||
const paginatedImages = visibleImages.slice(start, start + perPage)
|
||||
|
||||
// Konsistente Rückgabeform
|
||||
return {
|
||||
success: true,
|
||||
images: paginatedImages.map(img => ({
|
||||
id: img.id,
|
||||
title: img.title,
|
||||
description: img.description,
|
||||
isPublic: img.isPublic,
|
||||
uploadedAt: img.uploadedAt,
|
||||
previewFilename: img.previewFilename
|
||||
id: img.id || img.filename || null,
|
||||
title: img.title || '',
|
||||
description: img.description || '',
|
||||
isPublic: !!img.isPublic,
|
||||
uploadedAt: img.uploadedAt || null,
|
||||
previewFilename: img.previewFilename || null
|
||||
})),
|
||||
pagination: {
|
||||
page,
|
||||
|
||||
Reference in New Issue
Block a user