0% found this document useful (0 votes)
2 views3 pages

Server

This document outlines a Node.js server using Express that provides various APIs for managing environmental data, issues, alerts, resources, services, and events. It includes endpoints for retrieving, creating, updating, and deleting records, with support for JSON data and CORS. The server listens on port 3001 and interacts with a database for data persistence.

Uploaded by

adityab.0158
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views3 pages

Server

This document outlines a Node.js server using Express that provides various APIs for managing environmental data, issues, alerts, resources, services, and events. It includes endpoints for retrieving, creating, updating, and deleting records, with support for JSON data and CORS. The server listens on port 3001 and interacts with a database for data persistence.

Uploaded by

adityab.0158
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

// server.

js
const express = require('express');
const db = require('./[Link]');
const cors = require('cors');

const app = express();


const PORT = 3001;

[Link](cors());
[Link]([Link]({ limit: '10mb' }));

/* -------------------- ENVIRONMENTAL DATA -------------------- */


[Link]('/api/environmental-data', (req, res) => {
const data = [];
for (let i = 29; i >= 0; i--) {
const date = new Date();
[Link]([Link]() - i);
[Link]({
timestamp: [Link]().split('T')[0],
airQuality: +(20 + [Link]() * 50).toFixed(2),
waterQuality: +(6 + [Link]() * 2).toFixed(2),
noiseLevel: +(50 + [Link]() * 20).toFixed(2),
});
}
[Link]({ message: 'success', data });
});

[Link]("/api/weather-forecast", (req, res) => {


const days = ["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
const data = [Link]((d) => ({
day: d,
temperature: 20 + [Link]() * 10,
humidity: 40 + [Link]() * 40,
rainfall: [Link]() * 10,
}));

[Link]({ message: "success", data });


});

/* -------------------- ISSUES -------------------- */


// GET all issues
[Link]('/api/issues', (req, res) => {
const sql = 'SELECT * FROM issues ORDER BY timestamp DESC';
[Link](sql, [], (err, rows) => {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'success', data: rows });
});
});

// POST new issue (citizen)


[Link]('/api/issues', (req, res) => {
const { category, description, location, photo } = [Link];
if (!category || !description || !location) {
return [Link](400).json({ error: 'category, description and location required' });
}
const newIssue = {
id: `CI-${[Link]()}`,
title: `${category} Report`,
description,
category,
location,
status: 'Open',
timestamp: new Date().toISOString(),
photo: photo || null,
};
const sql = 'INSERT INTO issues (id, category, title, description, location, status, timestamp, photo) VALUES (?,?,?,?,?,?,?,?)';
const params = [[Link], [Link], [Link], [Link], [Link], [Link], [Link], [Link]];
[Link](sql, params, function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'success', data: newIssue });
});
});

// Admin-only: update issue status only


[Link]('/api/issues/:id/status', (req, res) => {
const { id } = [Link];
const { status } = [Link];
if (!status) return [Link](400).json({ error: 'status required' });
const sql = 'UPDATE issues SET status = ? WHERE id = ?';
[Link](sql, [status, id], function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'updated', data: { id, status } });
});
});

// Issue comments
[Link]('/api/issues/:id/comments', (req, res) => {
const { id } = [Link];
const sql = 'SELECT * FROM issue_comments WHERE issue_id = ? ORDER BY timestamp ASC';
[Link](sql, [id], (err, rows) => {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'success', data: rows });
});
});

[Link]('/api/issues/:id/comments', (req, res) => {


const { id } = [Link];
const { author, comment } = [Link];
if (!author || !comment) return [Link](400).json({ error: 'author and comment required' });
const newComment = {
id: `IC-${[Link]()}`,
issue_id: id,
author,
comment,
timestamp: new Date().toISOString(),
};
const sql = 'INSERT INTO issue_comments (id, issue_id, author, comment, timestamp) VALUES (?,?,?,?,?)';
[Link](sql, [[Link], newComment.issue_id, [Link], [Link], [Link]], function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'success', data: newComment });
});
});

/* -------------------- ALERTS -------------------- */


[Link]('/api/alerts', (req, res) => {
const sql = 'SELECT * FROM alerts ORDER BY timestamp DESC';
[Link](sql, [], (err, rows) => {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'success', data: rows });
});
});

[Link]('/api/alerts', (req, res) => {


const { title, description, category, priority } = [Link];
if (!title || !description) return [Link](400).json({ error: 'title and description required' });
const newAlert = {
id: `AL-${[Link]()}`,
title,
description,
category: category || 'General',
priority: priority || 'Low',
timestamp: new Date().toISOString(),
};
const sql = 'INSERT INTO alerts (id, title, description, category, priority, timestamp) VALUES (?,?,?,?,?,?)';
[Link](sql, [[Link], [Link], [Link], [Link], [Link], [Link]], (err) => {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'success', data: newAlert });
});
});

[Link]('/api/alerts/:id', (req, res) => {


const { id } = [Link];
const { title, description, category, priority } = [Link];
const sql = 'UPDATE alerts SET title = ?, description = ?, category = ?, priority = ? WHERE id = ?';
[Link](sql, [title, description, category, priority, id], function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'updated', id });
});
});

[Link]('/api/alerts/:id', (req, res) => {


const { id } = [Link];
[Link]('DELETE FROM alerts WHERE id = ?', [id], function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'deleted', id });
});
});

/* -------------------- RESOURCES -------------------- */


[Link]('/api/resources', (req, res) => {
[Link]('SELECT * FROM resources', [], (err, rows) => {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'success', data: rows });
});
});

[Link]('/api/resources', (req, res) => {


const { name, type, contact, capacity } = [Link];
if (!name || !type) return [Link](400).json({ error: 'name and type required' });
const newResource = { id: `R-${[Link]()}`, name, type, contact: contact || '', capacity: capacity || '', status: 'Available' };
const sql = 'INSERT INTO resources (id, name, type, contact, capacity, status) VALUES (?,?,?,?,?,?)';
[Link](sql, [[Link], [Link], [Link], [Link], [Link], [Link]], function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'success', data: newResource });
});
});

[Link]('/api/resources/:id', (req, res) => {


const { id } = [Link];
const { name, type, contact, capacity, status } = [Link];
const sql = 'UPDATE resources SET name=?, type=?, contact=?, capacity=?, status=? WHERE id=?';
[Link](sql, [name, type, contact, capacity, status, id], function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'updated', id });
});
});

[Link]('/api/resources/:id', (req, res) => {


const { id } = [Link];
[Link]('DELETE FROM resources WHERE id = ?', [id], function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'deleted', id });
});
});

/* -------------------- SERVICES & EVENTS -------------------- */


[Link]('/api/services-events', (req, res) => {
const servicesSql = 'SELECT * FROM services';
const eventsSql = 'SELECT * FROM events ORDER BY date ASC';
[Link](servicesSql, [], (err, services) => {
if (err) return [Link](400).json({ error: [Link] });
[Link](eventsSql, [], (err, events) => {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'success', data: { services, events } });
});
});
});

[Link]('/api/services', (req, res) => {


const { name, type, address, contact } = [Link];
const newService = { id: `S-${[Link]()}`, name, type, address, contact };
const sql = 'INSERT INTO services (id, name, type, address, contact) VALUES (?,?,?,?,?)';
[Link](sql, [[Link], [Link], [Link], [Link], [Link]], (err) => {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'success', data: newService });
});
});

[Link]('/api/services/:id', (req, res) => {


const { id } = [Link];
const { name, type, address, contact } = [Link];
const sql = 'UPDATE services SET name=?, type=?, address=?, contact=? WHERE id=?';
[Link](sql, [name, type, address, contact, id], function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'updated', id });
});
});

[Link]('/api/services/:id', (req, res) => {


const { id } = [Link];
[Link]('DELETE FROM services WHERE id = ?', [id], function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'deleted', id });
});
});

[Link]('/api/events', (req, res) => {


const { title, date, location, description, organizer } = [Link];
const newEvent = { id: `E-${[Link]()}`, title, date, location, description, organizer };
const sql = 'INSERT INTO events (id, title, date, location, description, organizer) VALUES (?,?,?,?,?,?)';
[Link](sql, [[Link], [Link], [Link], [Link], [Link], [Link]], (err) => {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'success', data: newEvent });
});
});

[Link]('/api/events/:id', (req, res) => {


const { id } = [Link];
const { title, date, location, description, organizer } = [Link];
const sql = 'UPDATE events SET title=?, date=?, location=?, description=?, organizer=? WHERE id=?';
[Link](sql, [title, date, location, description, organizer, id], function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'updated', id });
});
});

[Link]('/api/events/:id', (req, res) => {


const { id } = [Link];
[Link]('DELETE FROM events WHERE id = ?', [id], function (err) {
if (err) return [Link](400).json({ error: [Link] });
[Link]({ message: 'deleted', id });
});
});

[Link](PORT, () => {
[Link](`Server running on [Link]
});

You might also like