diff --git a/app/migrations/20140630132510-instance-evidence.js b/app/migrations/20140630132510-instance-evidence.js new file mode 100644 index 0000000..b05ba9d --- /dev/null +++ b/app/migrations/20140630132510-instance-evidence.js @@ -0,0 +1,14 @@ +var dbm = require('db-migrate'); +var type = dbm.dataType; + +exports.up = function(db, callback) { + db.runSql("ALTER TABLE `badgeInstances` " + + " ADD `evidenceUrl` VARCHAR(255) " + , callback); +}; + +exports.down = function(db, callback) { + db.runSql("ALTER TABLE `badgeInstances` " + + " DROP COLUMN `evidenceUrl` " + , callback); +}; diff --git a/app/models/badge-instance.js b/app/models/badge-instance.js index 34e44d6..6eed83d 100644 --- a/app/models/badge-instance.js +++ b/app/models/badge-instance.js @@ -15,6 +15,7 @@ const BadgeInstances = db.table('badgeInstances', { 'issuedOn', 'expires', 'claimCode', + 'evidenceUrl', 'badgeId', ], relationships: { @@ -34,6 +35,7 @@ BadgeInstances.formatUserInput = function formatUserInput(obj) { issuedOn: obj.issuedOn || dateFromUnixtime(Date.now()), expires: obj.expires ? dateFromUnixtime(obj.expires) : null, claimCode: obj.claimCode, + evidenceUrl: obj.evidenceUrl, } } @@ -47,6 +49,7 @@ BadgeInstances.toResponse = function toResponse(row, req) { expires: row.expires, issuedOn: row.issuedOn, claimCode: row.claimCode, + evidenceUrl: row.evidenceUrl, assertionUrl: assertionUrl, badge: row.badge ? row.badge.toResponse(req) : null } @@ -56,6 +59,7 @@ BadgeInstances.validateRow = makeValidator({ id: optional('isInt'), email: required('isEmail'), claimCode: optional('len', 0, 255), + evidenceUrl: optional('isUrl'), badgeId: required('isInt'), }) diff --git a/app/routes/badge-instances.js b/app/routes/badge-instances.js index 7776748..fc9ac1f 100644 --- a/app/routes/badge-instances.js +++ b/app/routes/badge-instances.js @@ -157,6 +157,7 @@ exports = module.exports = function applyBadgeRoutes (server) { email: instance.email, assertionUrl: instance.assertionUrl, issuedOn: unixtimeFromDate(instance.issuedOn), + evidenceUrl: instance.evidenceUrl, comment: comment } } @@ -181,7 +182,7 @@ exports = module.exports = function applyBadgeRoutes (server) { next() const comment = req.body.comment || null; - hookData.push(instanceToHookData(instance)) + hookData.push(instanceToHookData(instance, comment)) return Milestones.findAndAward(instance.email, badge); }) @@ -448,6 +449,7 @@ exports = module.exports = function applyBadgeRoutes (server) { type: 'hosted', }, issuedOn: unixtimeFromDate(instance.issuedOn), + evidence: instance.evidenceUrl, expires: unixtimeFromDate(instance.expires), } }