From 8fa36916d75fe8d4610afb61576ddfcd1bb00f3d Mon Sep 17 00:00:00 2001 From: Naz Date: Mon, 24 Jul 2023 21:28:41 +0800 Subject: [PATCH] Migrated admin and core modules to use nql-filter-expansions refs https://github.com/TryGhost/Arch/issues/46 - Reused posts expansions from nql-filter-expansions module --- .../app/components/posts-list/context-menu.js | 25 ++----------------- ghost/admin/package.json | 1 + ghost/core/core/server/models/post.js | 25 ++----------------- .../core/server/services/url/UrlGenerator.js | 23 ++--------------- ghost/core/package.json | 1 + 5 files changed, 8 insertions(+), 67 deletions(-) diff --git a/ghost/admin/app/components/posts-list/context-menu.js b/ghost/admin/app/components/posts-list/context-menu.js index 3faa8bc56d..013c4fa3aa 100644 --- a/ghost/admin/app/components/posts-list/context-menu.js +++ b/ghost/admin/app/components/posts-list/context-menu.js @@ -6,6 +6,7 @@ import UnpublishPostsModal from './modals/unpublish-posts'; import nql from '@tryghost/nql'; import {action} from '@ember/object'; import {capitalizeFirstLetter} from 'ghost-admin/helpers/capitalize-first-letter'; +import {posts as postExpansions} from '@tryghost/nql-filter-expansions'; import {inject as service} from '@ember/service'; import {task} from 'ember-concurrency'; @@ -257,29 +258,7 @@ export default class PostsContextMenu extends Component { const updatedModels = this.selectionList.availableModels; const filter = this.selectionList.allFilter; const filterNql = nql(filter, { - expansions: [ - { - key: 'primary_tag', - replacement: 'tags.slug', - expansion: 'posts_tags.sort_order:0+tags.visibility:public' - }, { - key: 'primary_author', - replacement: 'authors.slug', - expansion: 'posts_authors.sort_order:0+authors.visibility:public' - }, { - key: 'authors', - replacement: 'authors.slug' - }, { - key: 'author', - replacement: 'authors.slug' - }, { - key: 'tag', - replacement: 'tags.slug' - }, { - key: 'tags', - replacement: 'tags.slug' - } - ] + expansions: postExpansions }); const remainingModels = this.selectionList.infinityModel.content.filter((model) => { diff --git a/ghost/admin/package.json b/ghost/admin/package.json index ee812e2a34..0fce325248 100644 --- a/ghost/admin/package.json +++ b/ghost/admin/package.json @@ -52,6 +52,7 @@ "@tryghost/members-csv": "0.0.0", "@tryghost/mobiledoc-kit": "0.12.5-ghost.2", "@tryghost/nql": "0.11.0", + "@tryghost/nql-filter-expansions": "0.0.0", "@tryghost/nql-lang": "0.5.0", "@tryghost/string": "0.2.4", "@tryghost/timezone-data": "0.3.0", diff --git a/ghost/core/core/server/models/post.js b/ghost/core/core/server/models/post.js index 9300e3086d..6163be5f38 100644 --- a/ghost/core/core/server/models/post.js +++ b/ghost/core/core/server/models/post.js @@ -7,6 +7,7 @@ const tpl = require('@tryghost/tpl'); const errors = require('@tryghost/errors'); const nql = require('@tryghost/nql'); const htmlToPlaintext = require('@tryghost/html-to-plaintext'); +const {posts: postExpansions} = require('@tryghost/nql-filter-expansions'); const ghostBookshelf = require('./base'); const config = require('../../shared/config'); const settingsCache = require('../../shared/settings-cache'); @@ -290,28 +291,6 @@ Post = ghostBookshelf.Model.extend({ filterExpansions: function filterExpansions() { const postsMetaKeys = _.without(ghostBookshelf.model('PostsMeta').prototype.orderAttributes(), 'posts_meta.id', 'posts_meta.post_id'); - const expansions = [{ - key: 'primary_tag', - replacement: 'tags.slug', - expansion: 'posts_tags.sort_order:0+tags.visibility:public' - }, { - key: 'primary_author', - replacement: 'authors.slug', - expansion: 'posts_authors.sort_order:0+authors.visibility:public' - }, { - key: 'authors', - replacement: 'authors.slug' - }, { - key: 'author', - replacement: 'authors.slug' - }, { - key: 'tag', - replacement: 'tags.slug' - }, { - key: 'tags', - replacement: 'tags.slug' - }]; - const postMetaKeyExpansions = postsMetaKeys.map((pmk) => { return { key: pmk.split('.')[1], @@ -319,7 +298,7 @@ Post = ghostBookshelf.Model.extend({ }; }); - return expansions.concat(postMetaKeyExpansions); + return postExpansions.concat(postMetaKeyExpansions); }, filterRelations: function filterRelations() { diff --git a/ghost/core/core/server/services/url/UrlGenerator.js b/ghost/core/core/server/services/url/UrlGenerator.js index 8d95dc86c0..f8c456e44e 100644 --- a/ghost/core/core/server/services/url/UrlGenerator.js +++ b/ghost/core/core/server/services/url/UrlGenerator.js @@ -3,26 +3,7 @@ const nql = require('@tryghost/nql'); const debug = require('@tryghost/debug')('services:url:generator'); const localUtils = require('../../../shared/url-utils'); -// @TODO: merge with filter plugin -const EXPANSIONS = [{ - key: 'author', - replacement: 'authors.slug' -}, { - key: 'tags', - replacement: 'tags.slug' -}, { - key: 'tag', - replacement: 'tags.slug' -}, { - key: 'authors', - replacement: 'authors.slug' -}, { - key: 'primary_tag', - replacement: 'primary_tag.slug' -}, { - key: 'primary_author', - replacement: 'primary_author.slug' -}]; +const {posts: postExpansions} = require('@tryghost/nql-filter-expansions'); /** * The UrlGenerator class is responsible to generate urls based on a router's conditions. @@ -57,7 +38,7 @@ class UrlGenerator { if (filter) { this.filter = filter; this.nql = nql(this.filter, { - expansions: EXPANSIONS, + expansions: postExpansions, transformer: nql.utils.mapKeyValues({ key: { from: 'page', diff --git a/ghost/core/package.json b/ghost/core/package.json index 2e58c5d893..e7778d44c0 100644 --- a/ghost/core/package.json +++ b/ghost/core/package.json @@ -135,6 +135,7 @@ "@tryghost/mw-vhost": "0.0.0", "@tryghost/nodemailer": "0.3.35", "@tryghost/nql": "0.11.0", + "@tryghost/nql-filter-expansions": "0.0.0", "@tryghost/oembed-service": "0.0.0", "@tryghost/package-json": "0.0.0", "@tryghost/post-revisions": "0.0.0",