- clone repo
- run
npm install
- ask us for the super secret env deets
- run
npm start
- Heroku tries to run
npm start
- we already had a
start
script in our package.json
- to override this, we created a Procfile
- with the below bit of code:
// post request to add new resource to database library
exports.post = (request, response) => {
let { title, language, description, link } = request.body;
db.addResource(title, language, description, link, (err, res) => {
if (err) {
throw err;
}
})
response.redirect('/');
};)
const addResource = (title, language, description, link, cb) => {
db.query(`INSERT INTO resources(title, language, description, link) VALUES ($1, $2, $3, $4)`,
[title, language, description, link],
(err, result) => {
if (err) return cb(err);
cb(null, result);
});
}
module.exports = {
getAll,
filterByLanguage,
addResource
};
router.post('/filter-language', (req, res) => {
res.redirect(`/library/${req.body.language}`);
});
router.get('/library/:language', library.filterLanguage);
exports.filterLanguage = (request, response) => {
let language = request.params.language;
filterByLanguage(language, (err, res) => {
if (err) console.log(err);
const filterRows = res;
response.render("filter", { filterRows });
})
};
const filterByLanguage = (language, cb) => {
db.query(`SELECT * FROM resources WHERE language=$1`,
[language],
(err, result) => {
if (err) return cb(err);
cb(null, result.rows);
});
}
{{#each filterRows}}
<tr>
<td class="table-data">{{language}}</td>
<td class="table-data">{{title}}</td>
<td class="table-data">{{description}}</td>
<td class="table-data"><a href="{{link}}" alt="link to resource" target="_blank" title="{{link}}">{{link}}</a></td>
</tr>
{{/each}}
- Mobbing + working as a team
- No HTML pages at all
- Filtering option!
- Modularise our code (a bit...)
- Create and use custom helpers
- Do more tests
- Keep up the team work (woohoo!)