feat(recipe): Bild manuell hochladen / ersetzen / entfernen
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m22s
All checks were successful
Build & Publish Docker Image / build-and-push (push) Successful in 1m22s
- Neuer Endpoint POST/DELETE /api/recipes/:id/image. * Multipart-Upload mit Feld "file". * Whitelist: JPG, PNG, WebP, GIF, AVIF. Max 10 MB. * Dedupe per SHA-256-Filename analog zu downloadImage(). - updateImagePath()-Repo-Funktion ergänzt. - RecipeEditor: neuer Block "Bild" ganz oben. Preview + Buttons "Hochladen"/"Ersetzen"/"Entfernen". Upload passiert direkt beim Auswählen, nicht erst bei "Speichern" — das Bild ist eigene Ressource, Abbrechen rollt es nicht zurück (okay, da dedupliziert). - onimagechange-Callback informiert die Detail-Ansicht, damit die Preview im RecipeView auch nach Abbrechen aktuell bleibt. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -196,6 +196,17 @@ export function updateRecipeMeta(
|
||||
db.prepare(`UPDATE recipe SET ${fields.join(', ')} WHERE id = ?`).run(...values, id);
|
||||
}
|
||||
|
||||
export function updateImagePath(
|
||||
db: Database.Database,
|
||||
id: number,
|
||||
filename: string | null
|
||||
): void {
|
||||
db.prepare('UPDATE recipe SET image_path = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?').run(
|
||||
filename,
|
||||
id
|
||||
);
|
||||
}
|
||||
|
||||
export function replaceIngredients(
|
||||
db: Database.Database,
|
||||
recipeId: number,
|
||||
|
||||
Reference in New Issue
Block a user