Page Menu
Home
DevCentral
Search
Configure Global Search
Log In
Files
F12241382
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Referenced Files
None
Subscribers
None
View Options
diff --git a/backend/servpulse-backend/app.js b/backend/servpulse-backend/app.js
new file mode 100644
index 0000000..0da5394
--- /dev/null
+++ b/backend/servpulse-backend/app.js
@@ -0,0 +1,23 @@
+// app.js
+require('dotenv').config(); // Set up .env file
+require('./config/database.js'); // Set up database connection
+
+const express = require('express');
+const app = express();
+
+// Middleware to parse JSON requests
+app.use(express.json());
+
+// Import routes
+const serviceRoutes = require('./routes/serviceRoutes.js');
+const incidentRoutes = require('./routes/incidentRoutes.js');
+
+// Use the routes
+app.use('/api', serviceRoutes);
+app.use('/api', incidentRoutes);
+
+// Start the server
+const PORT = process.env.EXPRESS_PORT || 3000;
+app.listen(PORT, () => {
+ console.log(`Server running on port ${PORT}`);
+});
diff --git a/backend/servpulse-backend/config/database.js b/backend/servpulse-backend/config/database.js
new file mode 100644
index 0000000..b84dba6
--- /dev/null
+++ b/backend/servpulse-backend/config/database.js
@@ -0,0 +1,8 @@
+require('dotenv').config({ path: '../.env' });
+const { Pool } = require('pg');
+
+const pool = new Pool({
+ connectionString: process.env.POSTGRES_CONNECTION_STRING,
+});
+
+module.exports = pool;
diff --git a/backend/servpulse-backend/controllers/incidentController.js b/backend/servpulse-backend/controllers/incidentController.js
new file mode 100644
index 0000000..ee48a43
--- /dev/null
+++ b/backend/servpulse-backend/controllers/incidentController.js
@@ -0,0 +1,18 @@
+// incidentController.js
+const incidentModel = require('../models/incidentModel.js');
+const incidentServiceModel = require('../models/incidentServiceModel.js');
+const incidentPostModel = require('../models/incidentPostModel.js');
+const incidentPostStatusModel = require('../models/incidentPostStatusModel.js');
+
+const getIncidents = async (req, res) => {
+ try {
+ const incidents = await incidentModel.getIncidents();
+ res.status(200).json(incidents);
+ } catch (error) {
+ res.status(500).json({ message: 'Error fetching services', error: error.message });
+ }
+};
+
+// ... CRUD methods for incident controller using the respective models
+
+module.exports = { getIncidents, /* ... CRUD methods for incident controller */ };
diff --git a/backend/servpulse-backend/controllers/serviceController.js b/backend/servpulse-backend/controllers/serviceController.js
new file mode 100644
index 0000000..fafa209
--- /dev/null
+++ b/backend/servpulse-backend/controllers/serviceController.js
@@ -0,0 +1,26 @@
+// serviceController.js
+const serviceModel = require('../models/serviceModel.js');
+
+const addService = async (req, res) => {
+ try {
+ const serviceData = req.body;
+ const result = await serviceModel.addService(serviceData);
+
+ res.status(201).json(result);
+ } catch (error) {
+ res.status(500).json({ message: 'Error creating service', error: error.message });
+ }
+};
+
+const getServices = async (req, res) => {
+ try {
+ const services = await serviceModel.getServices();
+ res.status(200).json(services);
+ } catch (error) {
+ res.status(500).json({ message: 'Error fetching services', error: error.message });
+ }
+};
+
+// ... other CRUD methods for service controller
+
+module.exports = { addService, getServices, /* ... other CRUD methods */ };
diff --git a/backend/servpulse-backend/models/incidentModel.js b/backend/servpulse-backend/models/incidentModel.js
new file mode 100644
index 0000000..67e480d
--- /dev/null
+++ b/backend/servpulse-backend/models/incidentModel.js
@@ -0,0 +1,14 @@
+// incidentModel.js
+const pool = require('../config/database.js');
+
+const createIncident = async (data) => {
+ return await pool.query('INSERT INTO incident (title, start_date, update_date, type_id, status) VALUES (\$1, \$2, \$3, \$4, \$5) RETURNING *', [data.title, data.start_date, data.update_date, data.type_id, data.status]);
+};
+
+const getIncidents = async () => {
+ return await pool.query('SELECT * FROM incident;');
+};
+
+// ... other CRUD methods for incident table
+
+module.exports = { createIncident, getIncidents /* ... other CRUD methods */ };
diff --git a/backend/servpulse-backend/models/serviceModel.js b/backend/servpulse-backend/models/serviceModel.js
new file mode 100644
index 0000000..c4dc16f
--- /dev/null
+++ b/backend/servpulse-backend/models/serviceModel.js
@@ -0,0 +1,14 @@
+// serviceModel.js
+const pool = require('../config/database.js');
+
+const addService = async (data) => {
+ return await pool.query('INSERT INTO service (name, "group", description, status) VALUES (\$1, \$2, \$3, \$4) RETURNING *', [data.name, data.group, data.description, data.status]);
+};
+
+const getServices = async () => {
+ return await pool.query('SELECT * FROM service;');
+};
+
+// ... other CRUD methods for service table
+
+module.exports = { addService, getServices, /* ... other CRUD methods */ };
diff --git a/backend/servpulse-backend/package.json b/backend/servpulse-backend/package.json
index b8eed48..c552eb8 100644
--- a/backend/servpulse-backend/package.json
+++ b/backend/servpulse-backend/package.json
@@ -1,14 +1,17 @@
{
- "name": "servpulse-backend",
- "version": "1.0.0",
- "description": "Backend API for the ServPulse frontend.",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "author": "",
- "license": "ISC",
- "dependencies": {
- "express": "^4.18.2"
- }
+ "name": "servpulse-backend",
+ "version": "1.0.0",
+ "description": "Backend API for the ServPulse frontend.",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "",
+ "license": "ISC",
+ "dependencies": {
+ "dotenv": "^16.0.3",
+ "express": "^4.18.2",
+ "pg": "^8.11.0",
+ "sequelize": "^6.31.1"
+ }
}
diff --git a/backend/servpulse-backend/routes/incidentRoutes.js b/backend/servpulse-backend/routes/incidentRoutes.js
new file mode 100644
index 0000000..3b518b7
--- /dev/null
+++ b/backend/servpulse-backend/routes/incidentRoutes.js
@@ -0,0 +1,10 @@
+// incidentRoutes.js
+const express = require('express');
+const router = express.Router();
+const incidentController = require('../controllers/incidentController.js');
+
+router.get('/incident/getAll', incidentController.getIncidents);
+
+// ... other routes for incident controller
+
+module.exports = router;
diff --git a/backend/servpulse-backend/routes/serviceRoutes.js b/backend/servpulse-backend/routes/serviceRoutes.js
new file mode 100644
index 0000000..f8cbc62
--- /dev/null
+++ b/backend/servpulse-backend/routes/serviceRoutes.js
@@ -0,0 +1,11 @@
+// serviceRoutes.js
+const express = require('express');
+const router = express.Router();
+const serviceController = require('../controllers/serviceController.js');
+
+router.get('/service/getAll', serviceController.getServices);
+router.post('/service', serviceController.addService);
+
+// ... other routes for service controller
+
+module.exports = router;
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Sun, Oct 12, 05:03 (1 h, 10 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3065073
Default Alt Text
(6 KB)
Attached To
Mode
rSP ServPulse
Attached
Detach File
Event Timeline
Log In to Comment