0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-01-06 22:40:14 -05:00

Updated post model to attach products relation

refs https://github.com/TryGhost/Team/issues/1071

- attaches products relation for post/pages to include tiers with access when applicable
This commit is contained in:
Rishabh 2022-01-26 16:51:33 +05:30 committed by Rishabh Garg
parent 7ab4c44475
commit bc5c00ba05

View file

@ -69,11 +69,12 @@ Post = ghostBookshelf.Model.extend({
};
},
relationships: ['tags', 'authors', 'mobiledoc_revisions', 'posts_meta'],
relationships: ['tags', 'authors', 'mobiledoc_revisions', 'posts_meta', 'tiers'],
// NOTE: look up object, not super nice, but was easy to implement
relationshipBelongsTo: {
tags: 'tags',
tiers: 'products',
authors: 'users',
posts_meta: 'posts_meta'
},
@ -89,6 +90,17 @@ Post = ghostBookshelf.Model.extend({
}
},
tiers() {
return this.belongsToMany('Product', 'posts_products', 'post_id', 'product_id')
.withPivot('sort_order')
.query('orderBy', 'sort_order', 'ASC')
.query((qb) => {
// avoids bookshelf adding a `DISTINCT` to the query
// we know the result set will already be unique and DISTINCT hurts query performance
qb.columns('products.*');
});
},
parse() {
const attrs = ghostBookshelf.Model.prototype.parse.apply(this, arguments);
@ -171,7 +183,7 @@ Post = ghostBookshelf.Model.extend({
// transform visibility NQL queries to special-case values where necessary
// ensures checks against special-case values such as `{{#has visibility="paid"}}` continue working
if (attrs.visibility && !['public', 'members', 'paid'].includes(attrs.visibility)) {
if (attrs.visibility && !['public', 'members', 'paid', 'tiers'].includes(attrs.visibility)) {
if (attrs.visibility === 'status:-free') {
attrs.visibility = 'paid';
} else {