Refactor routes and views for improved clarity and functionality

- Commented out console log in the home route to reduce clutter in logs.
- Updated formatting and consistency in the sites route, including removing unused domain fetching functionality.
- Added form action to the add-form view for submitting new sites, ensuring the input field is properly named for backend processing.
This commit is contained in:
Keith Solomon
2025-05-25 17:53:13 -05:00
parent 88a6969f2f
commit 4020b33293
5 changed files with 29 additions and 1526 deletions

View File

@@ -11,10 +11,10 @@ class SiteModel {
/** /**
* Inserts a new site into the database. * Inserts a new site into the database.
* *
* @param {string} name - The name of the site. * @param {string} name - The name of the site.
* @param {string} domainName - The domain name of the site. * @param {string} domainName - The domain name of the site.
* *
* @returns {Promise<Object>} - The result of the insert operation. * @returns {Promise<Object>} - The result of the insert operation.
*/ */
async insert(domainName) { async insert(domainName) {
@@ -47,7 +47,7 @@ class SiteModel {
/** /**
* Retrieves all sites from the database. * Retrieves all sites from the database.
* *
* @returns {Promise<Array>} - An array of site objects. * @returns {Promise<Array>} - An array of site objects.
*/ */
async getAll() { async getAll() {
@@ -63,9 +63,9 @@ class SiteModel {
/** /**
* Retrieves a site by its ID. * Retrieves a site by its ID.
* *
* @param {number} id - The ID of the site. * @param {number} id - The ID of the site.
* *
* @returns {Promise<Object>} - The site object. * @returns {Promise<Object>} - The site object.
*/ */
async getById(id) { async getById(id) {
@@ -81,9 +81,9 @@ class SiteModel {
/** /**
* Retrieves a site by its domain name. * Retrieves a site by its domain name.
* *
* @param {string} domainName - The domain name of the site. * @param {string} domainName - The domain name of the site.
* *
* @returns {Promise<Object>} - The site object. * @returns {Promise<Object>} - The site object.
*/ */
async getByDomainName(domainName) { async getByDomainName(domainName) {
@@ -99,4 +99,4 @@ class SiteModel {
} }
module.exports = SiteModel; module.exports = SiteModel;

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,7 @@ const sitesModel = new SiteModel();
/* GET home page. */ /* GET home page. */
router.get('/', async function(req, res, next) { router.get('/', async function(req, res, next) {
const sites = await sitesModel.getAll(); const sites = await sitesModel.getAll();
console.log('Sites:', sites); // console.log('Sites:', sites);
res.render('index', { title: 'Playwright Testing Dashboard', sites: sites }); res.render('index', { title: 'Playwright Testing Dashboard', sites: sites });
}); });

View File

@@ -5,10 +5,10 @@ const siteModel = new SiteModel();
/** /**
* GET sites listing. * GET sites listing.
* *
* Returns a list of all sites in JSON format. * Returns a list of all sites in JSON format.
*/ */
router.get('/', async function(req, res, next) { router.get('/', async function (req, res, next) {
const sites = await siteModel.getAll(); const sites = await siteModel.getAll();
res.json(sites); res.json(sites);
@@ -16,10 +16,10 @@ router.get('/', async function(req, res, next) {
/** /**
* GET site by ID. * GET site by ID.
* *
* Returns a specific site by its ID in JSON format. * Returns a specific site by its ID in JSON format.
*/ */
router.get('/:id', async function(req, res, next) { router.get('/:id', async function (req, res, next) {
const siteId = req.params.id; const siteId = req.params.id;
let site = null; let site = null;
@@ -37,39 +37,14 @@ router.get('/:id', async function(req, res, next) {
} }
}); });
/**
* GET site by domain name.
*
* Returns a specific site by its domain name in JSON format.
*/
router.get('/domain/:domain', async function(req, res, next) {
const domainName = req.params.domain;
let sites = null;
try {
sites = await siteModel.getByDomainName(domainName);
} catch (error) {
console.error('Error fetching site by domain name:', error);
return res.status(400).send('Error fetching site: ' + error.message);
}
console.log('Site found:', sites);
if (!sites || sites.length === 0) {
return res.status(404).send('Site not found');
} else {
res.json(sites[0]); // Return the first match
}
});
/** /**
* POST create a new site. * POST create a new site.
* *
* Creates a new site with the provided domain name. * Creates a new site with the provided domain name.
* *
* // TODO: Ability to add additional site properties (e.g., name, description) * // TODO: Ability to add additional site properties (e.g., name, description)
*/ */
router.post('/add', async function(req, res, next) { router.post('/add', async function (req, res, next) {
const domain = req.body.domain; const domain = req.body.domain;
let newSite = null; let newSite = null;
@@ -90,7 +65,7 @@ router.post('/add', async function(req, res, next) {
/** /**
* PUT update an existing site. * PUT update an existing site.
* *
* Updates an existing site with the provided ID and new data. * Updates an existing site with the provided ID and new data.
*/ */
@@ -103,4 +78,4 @@ router.post('/add', async function(req, res, next) {
// TODO: Implement delete functionality // TODO: Implement delete functionality
module.exports = router; module.exports = router;

View File

@@ -1,10 +1,12 @@
<fieldset class="fieldset bg-base-100 rounded-box px-8 py-4 shadow-md"> <form action="/sites/add" method="POST" class="w-full">
<legend class="fieldset-legend h3">Start a new test</legend> <fieldset class="fieldset bg-base-100 rounded-box px-8 py-4 shadow-md">
<div class="flex gap-0"> <legend class="fieldset-legend h3">Start a new test</legend>
<div class="w-fit m-0 p-0"> <div class="flex gap-0">
<input type="text" class="input w-full border-r-0 rounded-r-none" placeholder="Site/URL to test" /> <div class="w-fit m-0 p-0">
<p class="label">Add either single URL or link to sitemap</p> <input type="text" class="input w-full border-r-0 rounded-r-none" name="domain" id="domain" placeholder="Site/URL to test" />
<p class="label">Add either single URL or link to sitemap</p>
</div>
<button type="submit" class="btn btn-info">Test</button>
</div> </div>
<button type="submit" class="btn btn-info">Test</button> </fieldset>
</div> </form>
</fieldset>