diff --git a/src/models/activity.js b/src/models/activity.js new file mode 100644 index 0000000..37a8b75 --- /dev/null +++ b/src/models/activity.js @@ -0,0 +1,26 @@ +module.exports = (sequelize, Sequelize) => { + const Activity = sequelize.define('activity', { + + user: { + type: Sequelize.STRING, + allowNull: false, + }, + + action: { + type: Sequelize.STRING, + allowNull: false, + }, + + itemId: { + type: Sequelize.NUMBER, + allowNull: false, + }, + + }); + + Activity.render = function() { + return this.user + ' has ' + this.action + ' this item at ' + this.createdAt + '.'; + }; + + return Activity; +}; diff --git a/src/models/index.js b/src/models/index.js index c5736ea..d6da015 100644 --- a/src/models/index.js +++ b/src/models/index.js @@ -10,6 +10,14 @@ db.sequelize = sequelize; db.items = require('./item.js')(sequelize, Sequelize); db.licenses = require('./license.js')(sequelize, Sequelize); +db.activities = require('./activity.js')(sequelize, Sequelize); + +// Model associations +db.items.hasMany(db.activities, { + onDelete: 'CASCADE', + onUpdate: 'CASCADE', +}); +db.activities.belongsTo(db.items); module.exports = db; diff --git a/src/routes/item.js b/src/routes/item.js index e27960f..4dba76c 100644 --- a/src/routes/item.js +++ b/src/routes/item.js @@ -1,5 +1,6 @@ const db = require('../models'); const Item = db.items; +const Activity = db.activities; // GET - /item/add exports.getAdd = async function(req, res) { @@ -20,6 +21,12 @@ exports.postAdd = async function(req, res) { console.log(`Saved item ${item.name} to the database.`); + const activity = await Activity.create({ + user: 'Admin', + action: 'create', + itemId: item.id, + }); + res.redirect('/'); }; @@ -29,8 +36,11 @@ exports.getItem = async function(req, res) { where: { id: req.params.id, }, + include: Activity, }); + console.log(item[0].activities[0].render()); + res.render('item/view.twig', { item: item[0], }); diff --git a/views/item/view.twig b/views/item/view.twig index f32c269..043c701 100644 --- a/views/item/view.twig +++ b/views/item/view.twig @@ -44,4 +44,19 @@ +
+ +
+

Recorded activity

+ {% if item.activities | length > 0 %} + + {% else %} +

There hasn't been any activity recorded for this item.

+ {% endif %} +
+ {% endblock %}