-
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
import express, { Request, Response } from "express";
|
||||
import cors from "cors";
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
|
||||
const app = express();
|
||||
const PORT = 3000;
|
||||
const RECIPES_DIR = path.join(__dirname, "recipes");
|
||||
|
||||
app.use(cors());
|
||||
app.use(express.json());
|
||||
|
||||
app.post("/addRecipe", (req: Request, res: Response) => {
|
||||
const { title, recipe } = req.body;
|
||||
|
||||
if (!title || !recipe) {
|
||||
return res.status(400).json({ error: "Title and recipe text are required" });
|
||||
}
|
||||
|
||||
const filename = `${title.replace(/\s+/g, "_")}.md`;
|
||||
const filepath = path.join(RECIPES_DIR, filename);
|
||||
|
||||
fs.writeFile(filepath, recipe, (err) => {
|
||||
if (err) {
|
||||
return res.status(500).json({ error: "Failed to save recipe" });
|
||||
}
|
||||
res.status(200).json({ message: "Recipe saved successfully" });
|
||||
});
|
||||
});
|
||||
|
||||
app.get("/loadRecipes", (req, res) => {
|
||||
fs.readdir(RECIPES_DIR, (err, files) => {
|
||||
if (err) {
|
||||
console.error("Error reading directory:", err);
|
||||
return res.status(500).json({ message: "Failed to read recipes" });
|
||||
}
|
||||
|
||||
const recipes: object[] = [];
|
||||
|
||||
let filesRead = 0;
|
||||
if (files.length === 0) return res.json([]);
|
||||
|
||||
files.forEach((file) => {
|
||||
const filePath = path.join(RECIPES_DIR, file);
|
||||
|
||||
fs.readFile(filePath, "utf8", (err, data) => {
|
||||
filesRead++;
|
||||
if (!err) {
|
||||
try {
|
||||
const parsed = JSON.parse(data);
|
||||
recipes.push(parsed);
|
||||
} catch (e) {
|
||||
console.warn("Invalid JSON in file:", file);
|
||||
}
|
||||
}
|
||||
|
||||
if (filesRead === files.length) {
|
||||
res.json(recipes);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Nur starten, wenn die Datei direkt ausgeführt wird (nicht importiert wird)
|
||||
if (require.main === module) {
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Server is running on http://localhost:${PORT}`);
|
||||
});
|
||||
}
|
||||
|
||||
// Export für andere Dateien
|
||||
export default app;
|
||||
|
Reference in New Issue
Block a user