From ba018c685cc1bb8c702416ec826be5d2a6d37c11 Mon Sep 17 00:00:00 2001 From: Sean Clarke Date: Mon, 6 Jan 2020 17:39:08 -0500 Subject: [PATCH] findUniqueSites is working, using basic site template /visits --- controllers/sites.js | 10 ++++++++++ database/fill-visits.js | 4 +++- model/Site.js | 19 +++++++++++++++++++ model/Visit.js | 22 ++++++++++++++++++++++ routes/index.js | 1 + views/visits.pug | 0 6 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 views/visits.pug diff --git a/controllers/sites.js b/controllers/sites.js index acfb396..b669c27 100644 --- a/controllers/sites.js +++ b/controllers/sites.js @@ -1,4 +1,5 @@ var Site = require('../model/Site'); +var Visit = require('../model/Visit'); module.exports = { // Find site by ID export @@ -17,5 +18,14 @@ module.exports = { if(err) throw err; res.render('index', { title: "Home", sites: sites }); }); + }, + UniqueSiteVisits: function(req, res){ + Visit.findUniqueSites(function(err, uniqueSites){ + if(err) throw err; + Site.findAllById(uniqueSites, function(err, uniqueSiteVisits){ + if(err) throw err; + res.render('index', { title: "UniqueSiteVisits", sites: uniqueSiteVisits }); + }); + }); } } diff --git a/database/fill-visits.js b/database/fill-visits.js index 62150cc..8385e71 100644 --- a/database/fill-visits.js +++ b/database/fill-visits.js @@ -3,7 +3,9 @@ var con = require('./db'); sql = "INSERT INTO visits (date, img, site_id) VALUES ?"; val = [ ['10-15-2019','https://seanland.ca', '1'], - ['10-17-2019','https://seanland.ca', '1'] + ['10-17-2019','https://seanland.ca', '1'], + ['01-17-2020','https://seanland.ca', '134'], + ['11-23-2019','https://seanland.ca', '15'] ]; con.query(sql, [val], function(err, res){ diff --git a/model/Site.js b/model/Site.js index 2d00b2f..3813469 100644 --- a/model/Site.js +++ b/model/Site.js @@ -30,6 +30,25 @@ Site.findById = function(id, callback){ }); }; +// Finding all sites by IDs. +Site.findAllById = function(ids, callback){ + var sql = "SELECT * FROM sites WHERE id in (?)"; + var arr = []; + + con.query(sql, [ids], function(err, result){ + if (err) return callback(err); + // if not site is found. + if (result[0] == undefined) callback(404); + else { + console.log("Site.findAllById: " + result.length + "sites retrieved!"); + result.forEach(site => { + arr.push(new Site(site)); + }); + callback(err, arr); + } + }); +}; + // get a listing of all sites Site.getAll = function(callback){ var sql = "SELECT * FROM sites"; diff --git a/model/Visit.js b/model/Visit.js index 5151c87..8480a81 100644 --- a/model/Visit.js +++ b/model/Visit.js @@ -20,3 +20,25 @@ Visit.findBySite = function(id, callback){ } }); }; + +Visit.findUniqueSites = function(callback){ + var sql = "SELECT DISTINCT site_id FROM visits"; + + con.query(sql, function(err, result){ + if(err) return callback(err); + if(result[0] == undefined) callback(404); + else { + var ids = []; + + result.forEach(id => { + ids.push(id.site_id); + }); + console.log(ids); + console.log("Visit.findUniqueSites: " + ids.length + " unique sites visited!"); + + callback(err, ids); + } + }); +} + +module.exports = Visit; diff --git a/routes/index.js b/routes/index.js index fe6d848..039265f 100644 --- a/routes/index.js +++ b/routes/index.js @@ -4,5 +4,6 @@ var router = express.Router(); var sitesController = require('../controllers/sites') router.get('/', sitesController.getAll); +router.get('/visits', sitesController.UniqueSiteVisits); module.exports = router; diff --git a/views/visits.pug b/views/visits.pug new file mode 100644 index 0000000..e69de29