Files
buchhaltung/add_kosten_routes.js
2026-04-26 07:51:39 +02:00

67 lines
2.1 KiB
JavaScript

const fs = require('fs');
const filePath = 'C:\\Users\\renet\\.openclaw\\workspace\\buchhaltungs-app\\backend\\routes\\nebenkosten.js';
let content = fs.readFileSync(filePath, 'utf8');
const kostenRoutes = `
// ========== OBJEKTKOSTEN ==========
// Kosten für ein Objekt laden (optional gefiltert nach Jahr)
app.get('/api/objekte/:id/kosten', async (req, res) => {
try {
const { jahr } = req.query;
let query = 'SELECT * FROM objektkosten WHERE objekt_id = $1';
const params = [req.params.id];
if (jahr) {
query += ' AND jahr = $2';
params.push(jahr);
}
query += ' ORDER BY jahr DESC, kategorie ASC';
const result = await pool.query(query, params);
res.json(result.rows);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// Kosten hinzufügen
app.post('/api/objekte/:id/kosten', async (req, res) => {
try {
const { kategorie, betrag, jahr } = req.body;
const result = await pool.query(
'INSERT INTO objektkosten (objekt_id, kategorie, betrag, jahr) VALUES ($1, $2, $3, $4) RETURNING *',
[req.params.id, kategorie, betrag, jahr]
);
res.json(result.rows[0]);
} catch (error) {
res.status(500).json({ error: error.message });
}
});
// Kosten löschen
app.delete('/api/objekte/:id/kosten/:kostenId', async (req, res) => {
try {
await pool.query('DELETE FROM objektkosten WHERE id = $1 AND objekt_id = $2', [req.params.kostenId, req.params.id]);
res.json({ success: true });
} catch (error) {
res.status(500).json({ error: error.message });
}
});
`;
// Finde das Ende der Objekt-DELETE Route und füge danach die Kosten-Routen ein
const pattern = /(app\.delete\('\/api\/objekte\/:id',[\s\S]*?}\s*\);)(\s*\/\/ ========== MIETER)/;
if (content.match(pattern)) {
content = content.replace(pattern, `$1${kostenRoutes}$2`);
fs.writeFileSync(filePath, content);
console.log('✅ Kosten-Routen erfolgreich hinzugefügt!');
} else {
console.error('❌ Pattern nicht gefunden');
process.exit(1);
}