add automatic image renaming when recipe short_name changes
All checks were successful
CI / update (push) Successful in 1m11s

This commit is contained in:
2025-12-26 21:55:04 +01:00
parent 3215c87fad
commit b80531b551

View File

@@ -3,6 +3,10 @@ import { Recipe } from '../../../../models/Recipe';
import { dbConnect } from '../../../../utils/db'; import { dbConnect } from '../../../../utils/db';
import type {RecipeModelType} from '../../../../types/types'; import type {RecipeModelType} from '../../../../types/types';
import { error } from '@sveltejs/kit'; import { error } from '@sveltejs/kit';
import { rename } from 'fs/promises';
import { join } from 'path';
import { existsSync } from 'fs';
// header: use for bearer token for now // header: use for bearer token for now
// recipe json in body // recipe json in body
export const POST: RequestHandler = async ({request, locals}) => { export const POST: RequestHandler = async ({request, locals}) => {
@@ -14,6 +18,33 @@ export const POST: RequestHandler = async ({request, locals}) => {
} }
else{ else{
await dbConnect(); await dbConnect();
// Check if short_name has changed
const oldShortName = message.old_short_name;
const newShortName = recipe_json.short_name;
if (oldShortName !== newShortName) {
// Rename image files in all three directories
const imageDirectories = ['full', 'thumb', 'placeholder'];
const staticPath = join(process.cwd(), 'static', 'rezepte');
for (const dir of imageDirectories) {
const oldPath = join(staticPath, dir, `${oldShortName}.webp`);
const newPath = join(staticPath, dir, `${newShortName}.webp`);
// Only rename if the old file exists
if (existsSync(oldPath)) {
try {
await rename(oldPath, newPath);
console.log(`Renamed ${dir}/${oldShortName}.webp -> ${dir}/${newShortName}.webp`);
} catch (err) {
console.error(`Failed to rename ${dir}/${oldShortName}.webp:`, err);
// Continue with other files even if one fails
}
}
}
}
await Recipe.findOneAndUpdate({short_name: message.old_short_name }, recipe_json); await Recipe.findOneAndUpdate({short_name: message.old_short_name }, recipe_json);
return new Response(JSON.stringify({msg: "Edited recipe successfully"}),{ return new Response(JSON.stringify({msg: "Edited recipe successfully"}),{
status: 200, status: 200,