67 lines
2.1 KiB
JavaScript
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);
|
|
}
|