UNPKG

we-plugin-vocabulary

Version:
71 lines 1.89 kB
/** * VocabularyModel * * @module :: Model * @description :: [Add info about you model here] * */ module.exports = function Model(we) { // set sequelize model define and options return { definition: { name: { type: we.db.Sequelize.STRING, unique: true }, description: { type: we.db.Sequelize.TEXT } }, associations: { creator: { type: 'belongsTo', model: 'user' } }, options: { titleField: 'name', classMethods: {}, instanceMethods: { /** * Get tag usage count * * @return {Object} Sequelize query promisse */ getTagUsageCount() { const sql = 'SELECT terms.id, terms.text, COUNT(modelsterms.id) AS count '+ ' FROM terms '+ ' INNER JOIN modelsterms ON modelsterms.termId=terms.id '+ ' WHERE terms.vocabularyName=? AND modelsterms.vocabularyName=? '+ ' GROUP BY terms.text '; return we.db.defaultConnection.query(sql, { replacements: [this.name, this.name] }); } }, hooks: { afterDestroy(r) { return new Promise( (resolve, reject)=> { we.utils.async.parallel([ function destroyRelatedModelsterms (cb) { return we.db.models.modelsterms.destroy({ where: { vocabularyName: r.name } }) .nodeify(cb); }, function destroyVocabularyTerms (cb) { return we.db.models.term.destroy({ where: { vocabularyName: r.name } }) .nodeify(cb); } ], (err)=> { if (err) return reject(err); resolve(); }); }); } } } }; };