From c1eabb9dac2ada1ec55a3fe6fe39bf3e8bd71066 Mon Sep 17 00:00:00 2001 From: Aarish <118203269+ImprobableGenius@users.noreply.github.com> Date: Fri, 23 May 2025 23:50:27 -0500 Subject: [PATCH] Build sites resource routes --- routes/sites.js | 67 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 routes/sites.js diff --git a/routes/sites.js b/routes/sites.js new file mode 100644 index 0000000..62d3c69 --- /dev/null +++ b/routes/sites.js @@ -0,0 +1,67 @@ +const express = require('express'); +const router = express.Router(); +const SiteModel = require('../models/SiteModel'); +const siteModel = new SiteModel(); + +/** + * GET sites listing. + * + * Returns a list of all sites in JSON format. + */ +router.get('/', function(req, res, next) { + const sites = siteModel.getAllSites(); + + res.json(sites); +}); + +/** + * GET site by ID. + * + * Returns a specific site by its ID in JSON format. + */ +router.get('/:id', function(req, res, next) { + const siteId = req.params.id; + + const site = siteModel.getSiteById(siteId); + + if (!site) { + return res.status(404).send('Site not found'); + } else { + res.json(site); + } +}); + +/** + * POST create a new site. + * + * Creates a new site with the provided domain name. + * + * // TODO: Implement validation for domain name format + * // TODO: Implement error handling for duplicate domains + * // TODO: Ability to add additional site properties (e.g., name, description) + */ +router.post('/add/:domain', function(req, res, next) { + const domain = req.params.domain; + + const newSite = siteModel.createSite(domain); + + if (!newSite) { + return res.status(400).send('Error creating site'); + } else { + res.status(201).json(newSite); + } +}); + +/** + * PUT update an existing site. + * + * Updates an existing site with the provided ID and new data. + */ + +// TODO: Implement update functionality + +/** + * DELETE remove a site by ID. + */ + +// TODO: Implement delete functionality