Media Audit - Admin @jedmund

Cloudinary Audit

{#if loading}

Analyzing Cloudinary storage...

{:else if error}

{error}

{:else if auditData}

Total Files

{auditData.summary.totalCloudinaryFiles.toLocaleString()}

in Cloudinary

Database References

{auditData.summary.totalDatabaseReferences.toLocaleString()}

tracked files

Orphaned Files

{auditData.summary.orphanedFilesCount.toLocaleString()}

{auditData.summary.orphanedFilesSizeFormatted} wasted

Missing Files

{auditData.summary.missingReferencesCount.toLocaleString()}

broken references

{#if auditData.orphanedFiles.length > 0}
{#if hasSelection} {selectedFiles.size} files selected ({formatBytes(selectedSize)}) {:else} {auditData.orphanedFiles.length} orphaned files found {/if} {#if auditData.orphanedFiles.length > 20} (Max 20 at once) {/if}
{#each auditData.orphanedFiles as file} toggleFile(file.publicId)} role="button" tabindex="0" onkeydown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault() toggleFile(file.publicId) } }} > {/each}
Preview File Path Size Dimensions Created
toggleFile(file.publicId)} onclick={(e) => e.stopPropagation()} /> {#if file.format === 'svg'}
.svg
{:else} {file.publicId} {/if}
{file.folder}/ {file.publicId.split('/').pop()} {file.sizeFormatted} {#if file.dimensions} {file.dimensions.width}×{file.dimensions.height} {:else} — {/if} {formatDate(file.createdAt)}
{:else}

All Clean!

No orphaned files found. Your Cloudinary storage is in sync with your database.

{/if} {#if deleteResults}

Deletion Complete

✓ Successfully deleted {deleteResults.succeeded} files

{#if deleteResults.failed.length > 0}

✗ Failed to delete {deleteResults.failed.length} files

{/if}
{/if} {#if auditData.missingReferences.length > 0}

Broken References

Found {auditData.missingReferences.length} files referenced in the database but missing from Cloudinary.

{#if cleanupResults}

Cleanup Complete

✓ Cleaned {cleanupResults.cleanedMedia} media records

✓ Cleaned {cleanupResults.cleanedProjects} project records

✓ Cleaned {cleanupResults.cleanedPosts} post records

{#if cleanupResults.errors.length > 0}

✗ Errors: {cleanupResults.errors.join(', ')}

{/if}
{/if}
{/if} {/if}

Are you sure you want to delete {selectedFiles.size} orphaned files?

This will free up {formatBytes(selectedSize)} of storage.

⚠️ This action cannot be undone.

Are you sure you want to clean up {auditData?.missingReferences.length || 0} broken references?

⚠️ This will remove Cloudinary URLs from database records where the files no longer exist.

This action cannot be undone.