chris 746868d720 Add 'main-site/' from commit '5cefb4d1618bc54ae0e86830421a8c911900302c'
git-subtree-dir: main-site
git-subtree-mainline: 4d1daa39101c0a85ca6d916f1c31139faf39632a
git-subtree-split: 5cefb4d1618bc54ae0e86830421a8c911900302c
2026-04-13 19:22:17 -04:00

66 lines
2.0 KiB
JavaScript

#!/usr/bin/env node
/**
* Re-seed Photo documents from existing uploads when Mongo data is lost.
* - One doc per webp file on disk.
* - Captions default to filename without suffix.
* - Tags default to ['uncategorized'] unless a prefix is present.
* - Variants NOT linked; each file is its own doc.
*
* Usage: node scripts/reseed_uploads.js
* Make sure MONGO_URI is set (or uses default).
*/
const fs = require('fs');
const path = require('path');
const mongoose = require('mongoose');
const Photo = require('../models/photo');
const MONGO_URI = process.env.MONGO_URI || 'mongodb://localhost:27017/photogallery';
const UPLOAD_DIR = path.join(__dirname, '..', 'uploads');
const VARIANT_SUFFIXES = {
'': 'main',
'-md': 'medium',
'-sm': 'thumb'
};
function parseFilename(file) {
const ext = path.extname(file);
const base = path.basename(file, ext);
const matched = base.match(/(.+?)(-md|-sm)?$/);
if (!matched) return { baseName: base, variant: 'main', ext };
const baseName = matched[1];
const variant = VARIANT_SUFFIXES[matched[2] || ''] || 'main';
return { baseName, variant, ext };
}
async function main() {
await mongoose.connect(MONGO_URI);
console.log('Connected to Mongo:', MONGO_URI);
const files = fs.readdirSync(UPLOAD_DIR).filter(f => f.toLowerCase().endsWith('.webp'));
let created = 0;
for (const file of files) {
const existing = await Photo.findOne({ filename: file });
if (existing) continue;
const baseName = path.basename(file, path.extname(file));
const caption = baseName.replace(/[-_]+/g, ' ');
const tag = baseName.split('-')[1] || 'uncategorized';
const doc = new Photo({
filename: file,
path: path.join('uploads', file),
caption,
tags: [tag],
});
await doc.save();
created++;
}
console.log(`Seed complete. Created ${created} photo documents.`);
await mongoose.disconnect();
}
main().catch(err => {
console.error(err);
process.exit(1);
});