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); }