67 lines
1.7 KiB
JavaScript
67 lines
1.7 KiB
JavaScript
|
const errors = require('@tryghost/errors');
|
||
|
const ghostBookshelf = require('./base');
|
||
|
|
||
|
const MemberClickEvent = ghostBookshelf.Model.extend({
|
||
|
tableName: 'members_click_events',
|
||
|
|
||
|
link() {
|
||
|
return this.belongsTo('Redirect', 'redirect_id');
|
||
|
},
|
||
|
|
||
|
member() {
|
||
|
return this.belongsTo('Member', 'member_id', 'id');
|
||
|
},
|
||
|
|
||
|
filterExpansions: function filterExpansions() {
|
||
|
const expansions = [{
|
||
|
key: 'post_id',
|
||
|
replacement: 'link.post_id'
|
||
|
}];
|
||
|
|
||
|
return expansions;
|
||
|
},
|
||
|
|
||
|
filterRelations(options) {
|
||
|
if (options && options.filterRelations === false) {
|
||
|
return {};
|
||
|
}
|
||
|
return {
|
||
|
link: {
|
||
|
// Mongo-knex doesn't support belongsTo relations
|
||
|
tableName: 'redirects',
|
||
|
tableNameAs: 'link',
|
||
|
type: 'manyToMany',
|
||
|
joinTable: 'members_click_events',
|
||
|
joinFrom: 'id',
|
||
|
joinTo: 'redirect_id'
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
}, {
|
||
|
async edit() {
|
||
|
throw new errors.IncorrectUsageError({message: 'Cannot edit MemberClickEvent'});
|
||
|
},
|
||
|
|
||
|
async destroy() {
|
||
|
throw new errors.IncorrectUsageError({message: 'Cannot destroy MemberClickEvent'});
|
||
|
},
|
||
|
|
||
|
permittedOptions(methodName) {
|
||
|
let options = ghostBookshelf.Model.permittedOptions.call(this, methodName);
|
||
|
const validOptions = {
|
||
|
findPage: ['selectRaw', 'whereRaw', 'cte', 'from', 'useCTE', 'filterRelations']
|
||
|
};
|
||
|
|
||
|
if (validOptions[methodName]) {
|
||
|
options = options.concat(validOptions[methodName]);
|
||
|
}
|
||
|
|
||
|
return options;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
module.exports = {
|
||
|
MemberClickEvent: ghostBookshelf.model('MemberClickEvent', MemberClickEvent)
|
||
|
};
|