Merged v5.64.0 into main

This commit is contained in:
Ghost CI 2023-09-20 03:59:19 +00:00
commit ff3c3a904b
4 changed files with 83 additions and 2 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "ghost-admin", "name": "ghost-admin",
"version": "5.63.0", "version": "5.64.0",
"description": "Ember.js admin client for Ghost", "description": "Ember.js admin client for Ghost",
"author": "Ghost Foundation", "author": "Ghost Foundation",
"homepage": "http://ghost.org", "homepage": "http://ghost.org",

View File

@ -0,0 +1,12 @@
const logging = require('@tryghost/logging');
const {createNonTransactionalMigration} = require('../../utils');
module.exports = createNonTransactionalMigration(
async function up(knex) {
logging.info('Clearing collections_posts table');
await knex('collections_posts').truncate();
},
async function down() {
logging.info('Not doing anything - collections_posts table has been truncated');
}
);

View File

@ -0,0 +1,69 @@
const logging = require('@tryghost/logging');
const {default: ObjectID} = require('bson-objectid');
const {createTransactionalMigration} = require('../../utils');
const insertPostCollections = async (knex, collectionId, postIds) => {
logging.warn(`Batch inserting ${postIds.length} collection posts for collection ${collectionId}`);
const collectionPosts = postIds.map((postId) => {
return {
id: (new ObjectID()).toHexString(),
collection_id: collectionId,
post_id: postId,
sort_order: 0
};
});
await knex.batchInsert('collections_posts', collectionPosts, 1000);
};
module.exports = createTransactionalMigration(
async function up(knex) {
logging.info('Populating built-in collections');
const existingLatestCollection = await knex('collections')
.where({
slug: 'latest'
})
.first();
if (!existingLatestCollection) {
logging.warn('Latest collection does not exists, skipping');
} else {
const latestPostsRows = await knex('posts')
.select('id')
.where({
type: 'post'
});
const latestPostsIds = latestPostsRows.map(row => row.id);
await insertPostCollections(knex, existingLatestCollection.id, latestPostsIds);
}
const existingFeaturedCollection = await knex('collections')
.where({
slug: 'featured'
})
.first();
if (!existingFeaturedCollection) {
logging.warn('Featured collection does not exist, skipping');
} else {
const featuredPostsRows = await knex('posts')
.select('id')
.where({
featured: true,
type: 'post'
});
const featuredPostsIds = featuredPostsRows.map(row => row.id);
await insertPostCollections(knex, existingFeaturedCollection.id, featuredPostsIds);
}
},
async function down(knex) {
logging.info('Clearing collections_posts table');
await knex('collections_posts').truncate();
}
);

View File

@ -1,6 +1,6 @@
{ {
"name": "ghost", "name": "ghost",
"version": "5.63.0", "version": "5.64.0",
"description": "The professional publishing platform", "description": "The professional publishing platform",
"author": "Ghost Foundation", "author": "Ghost Foundation",
"homepage": "https://ghost.org", "homepage": "https://ghost.org",