Files
harheimertc/.output/server/chunks/_/news.mjs
2025-10-21 15:26:28 +02:00

69 lines
1.8 KiB
JavaScript

import { promises } from 'fs';
import path from 'path';
import { randomUUID } from 'crypto';
const getDataPath = (filename) => {
const cwd = process.cwd();
if (cwd.endsWith(".output")) {
return path.join(cwd, "../server/data", filename);
}
return path.join(cwd, "server/data", filename);
};
const NEWS_FILE = getDataPath("news.json");
async function readNews() {
try {
const data = await promises.readFile(NEWS_FILE, "utf-8");
return JSON.parse(data);
} catch (error) {
if (error.code === "ENOENT") {
return [];
}
console.error("Fehler beim Lesen der News:", error);
return [];
}
}
async function writeNews(news) {
try {
await promises.writeFile(NEWS_FILE, JSON.stringify(news, null, 2), "utf-8");
return true;
} catch (error) {
console.error("Fehler beim Schreiben der News:", error);
return false;
}
}
async function saveNews(newsData) {
const newsList = await readNews();
if (newsData.id) {
const index = newsList.findIndex((n) => n.id === newsData.id);
if (index !== -1) {
newsList[index] = {
...newsList[index],
...newsData,
updated: (/* @__PURE__ */ new Date()).toISOString()
};
} else {
throw new Error("News nicht gefunden");
}
} else {
const newItem = {
...newsData,
id: randomUUID(),
// Cryptographically secure unique ID
created: (/* @__PURE__ */ new Date()).toISOString(),
updated: (/* @__PURE__ */ new Date()).toISOString()
};
newsList.unshift(newItem);
}
await writeNews(newsList);
return true;
}
async function deleteNews(id) {
const newsList = await readNews();
const filtered = newsList.filter((n) => n.id !== id);
await writeNews(filtered);
return true;
}
export { deleteNews as d, readNews as r, saveNews as s };
//# sourceMappingURL=news.mjs.map