First commit
This commit is contained in:
		
							
								
								
									
										21
									
								
								router/apiRoute.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								router/apiRoute.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| 'use strict' | ||||
|  | ||||
| // Dependencies | ||||
| const express = require('express') | ||||
| const { logMessage } = require('../lib/logger') | ||||
|  | ||||
| // Routes | ||||
| const router = express.Router() | ||||
|  | ||||
| // Base route (allow testing if API is running) | ||||
| router.get('/', async (req, res, next) => { | ||||
|   logMessage(req.baseUrl, 'API is running') | ||||
|   res.status(200).json({ result: 'OK' }) | ||||
| }) | ||||
|  | ||||
| // Example route | ||||
| router.use('/example', require('./example')) | ||||
|  | ||||
| // TODO: Add routes here | ||||
|  | ||||
| module.exports = router | ||||
							
								
								
									
										14
									
								
								router/example.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								router/example.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | ||||
| 'use strict' | ||||
|  | ||||
| // Dependencies | ||||
| const express = require('express') | ||||
|  | ||||
| // Routes | ||||
| const router = express.Router() | ||||
|  | ||||
| // Example route GET /api/example | ||||
| router.get('/', async (req, res, next) => { | ||||
|   res.status(200).json({ result: 'Example route OK' }) | ||||
| }) | ||||
|  | ||||
| module.exports = router | ||||
							
								
								
									
										65
									
								
								router/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								router/index.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | ||||
| 'use strict' | ||||
|  | ||||
| // Dependencies | ||||
| const express = require('express') | ||||
| const { logMessage, errorMessage } = require('../lib/logger') | ||||
| const logRoute = require('../middleware/logRoute') | ||||
| const testValidUser = require('../middleware/testValidUser') | ||||
|  | ||||
| // Server state | ||||
| let server | ||||
| let serverStarted = false | ||||
| let serverClosing = false | ||||
|  | ||||
| // Setup error handling | ||||
| const unhandledError = (err) => { | ||||
|   // Log the errors | ||||
|   errorMessage('router', err) | ||||
|  | ||||
|   // Only clean up once | ||||
|   if (serverClosing) { | ||||
|     return | ||||
|   } | ||||
|   serverClosing = true | ||||
|  | ||||
|   // If server has started, close it down | ||||
|   if (serverStarted) { | ||||
|     server.close(() => { | ||||
|       process.exit(1) | ||||
|     }) | ||||
|   } | ||||
| } | ||||
| process.on('uncaughtException', unhandledError) | ||||
| process.on('unhandledRejection', unhandledError) | ||||
|  | ||||
| const app = express() | ||||
|  | ||||
| // Middlewares | ||||
| app.use(express.json()) | ||||
| app.use(express.static('public')) | ||||
| app.use(express.urlencoded({ extended: true })) | ||||
|  | ||||
| // API Routes | ||||
| app.use('/api', logRoute, testValidUser, require('./apiRoute')) | ||||
| // Add non API routes here if needed | ||||
|  | ||||
| // Common error handlers | ||||
| app.use((req, res, next) => { | ||||
|   logMessage('router', `Route not found: ${req.url}`) | ||||
|   return res.status(404).json({ error: `Route not found: ${req.url}` }) | ||||
| }) | ||||
| app.use((err, req, res, next) => { | ||||
|   if (err.status >= 500) { | ||||
|     errorMessage('router', err) | ||||
|   } | ||||
|   res.status(err.status || 500).json({ | ||||
|     error: err.message | ||||
|   }) | ||||
| }) | ||||
|  | ||||
| // Start API server | ||||
| server = app.listen(process.env.PORT || 3000, () => { | ||||
|   serverStarted = true | ||||
|   const addr = server.address() | ||||
|   logMessage('router', `API started at port ${addr.port}`) | ||||
| }) | ||||
		Reference in New Issue
	
	Block a user