const express = require('express'); const mysql = require('mysql2'); const cors = require('cors'); const bodyParser = require('body-parser'); require('dotenv').config(); const app = express(); app.use(cors()); app.use(bodyParser.json()); app.use(express.static(__dirname)); // Serve static files from current directory // MySQL Connection const db = mysql.createConnection({ host: process.env.DB_HOST || 'localhost', user: process.env.DB_USER || 'root', password: process.env.DB_PASSWORD || '', database: process.env.DB_NAME || 'webgis_app', port: process.env.DB_PORT || 3306 }); db.connect(err => { if (err) throw err; console.log('MySQL Connected...'); }); // Route to save a Road app.post('/api/roads', (req, res) => { const { name, road_type, distance_meters, coordinates } = req.body; const query = 'INSERT INTO roads (name, road_type, distance_meters, coordinates) VALUES (?, ?, ?, ?)'; db.query(query, [name, road_type, distance_meters, JSON.stringify(coordinates)], (err, result) => { if (err) return res.status(500).send(err); res.status(200).send({ message: 'Road saved successfully!', id: result.insertId }); }); }); // Route to get all Roads app.get('/api/roads', (req, res) => { const query = 'SELECT * FROM roads'; db.query(query, (err, results) => { if (err) return res.status(500).send(err); res.status(200).send(results); }); }); // Route to save Land app.post('/api/lands', (req, res) => { const { name, ownership_status, area_sq_meters, coordinates } = req.body; const query = 'INSERT INTO lands (name, ownership_status, area_sq_meters, coordinates) VALUES (?, ?, ?, ?)'; db.query(query, [name, ownership_status, area_sq_meters, JSON.stringify(coordinates)], (err, result) => { if (err) return res.status(500).send(err); res.status(200).send({ message: 'Land saved successfully!', id: result.insertId }); }); }); // Route to get all Lands app.get('/api/lands', (req, res) => { const query = 'SELECT * FROM lands'; db.query(query, (err, results) => { if (err) return res.status(500).send(err); res.status(200).send(results); }); }); // Route to update a Road app.put('/api/roads/:id', (req, res) => { const { id } = req.params; const { name, road_type, distance_meters, coordinates } = req.body; const query = 'UPDATE roads SET name = ?, road_type = ?, distance_meters = ?, coordinates = ? WHERE id = ?'; db.query(query, [name, road_type, distance_meters, JSON.stringify(coordinates), id], (err, result) => { if (err) return res.status(500).send(err); res.status(200).send({ message: 'Road updated successfully!' }); }); }); // Route to delete a Road app.delete('/api/roads/:id', (req, res) => { const { id } = req.params; const query = 'DELETE FROM roads WHERE id = ?'; db.query(query, [id], (err, result) => { if (err) return res.status(500).send(err); res.status(200).send({ message: 'Road deleted successfully!' }); }); }); // Route to update a Land app.put('/api/lands/:id', (req, res) => { const { id } = req.params; const { name, ownership_status, area_sq_meters, coordinates } = req.body; const query = 'UPDATE lands SET name = ?, ownership_status = ?, area_sq_meters = ?, coordinates = ? WHERE id = ?'; db.query(query, [name, ownership_status, area_sq_meters, JSON.stringify(coordinates), id], (err, result) => { if (err) return res.status(500).send(err); res.status(200).send({ message: 'Land updated successfully!' }); }); }); // Route to delete a Land app.delete('/api/lands/:id', (req, res) => { const { id } = req.params; const query = 'DELETE FROM lands WHERE id = ?'; db.query(query, [id], (err, result) => { if (err) return res.status(500).send(err); res.status(200).send({ message: 'Land deleted successfully!' }); }); }); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Server running on http://localhost:${PORT}`); });