mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-20 22:42:53 -05:00
Assigned existing email records and related posts to the default newsletter (#14695)
refs https://github.com/TryGhost/Team/issues/1571 - With the addition of multiple newsletters, all emails sent previously should be assigned to the default newsletter - This will make sure that the sent count for the default newsletter displays correctly
This commit is contained in:
parent
895ffee90b
commit
e5c5661701
1 changed files with 44 additions and 0 deletions
|
@ -0,0 +1,44 @@
|
||||||
|
const logging = require('@tryghost/logging');
|
||||||
|
const {createTransactionalMigration} = require('../../utils');
|
||||||
|
|
||||||
|
module.exports = createTransactionalMigration(
|
||||||
|
async function up(knex) {
|
||||||
|
logging.info('Linking existing emails and related posts to the default newsletter');
|
||||||
|
|
||||||
|
// Get the default newsletter
|
||||||
|
// Note we intentionally use the default newsletter slug instead of the usual orderBy logic
|
||||||
|
let newsletter = await knex('newsletters')
|
||||||
|
.where('slug', 'default-newsletter')
|
||||||
|
.first('id', 'slug');
|
||||||
|
|
||||||
|
if (!newsletter) {
|
||||||
|
// Fall back to orderBy - just in case
|
||||||
|
logging.warn(`Original default newsletter not found - using first in sort order`);
|
||||||
|
newsletter = await knex('newsletters')
|
||||||
|
.where('status', 'active')
|
||||||
|
.orderBy('sort_order', 'asc')
|
||||||
|
.orderBy('created_at', 'asc')
|
||||||
|
.orderBy('id', 'asc')
|
||||||
|
.first('id', 'slug');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!newsletter) {
|
||||||
|
logging.error(`Newsletter not found - skipping`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
logging.info(`Assigning existing emails to newsletter ID ${newsletter.id} (${newsletter.slug})`);
|
||||||
|
|
||||||
|
// Set newsletter ID only on posts with related email records without a newsletter assigned
|
||||||
|
await knex('posts')
|
||||||
|
.update('newsletter_id', newsletter.id)
|
||||||
|
.whereIn('id', knex.raw('SELECT post_id FROM emails WHERE emails.newsletter_id IS NULL'));
|
||||||
|
|
||||||
|
await knex('emails')
|
||||||
|
.update('newsletter_id', newsletter.id)
|
||||||
|
.whereNull('newsletter_id');
|
||||||
|
},
|
||||||
|
async function down() {
|
||||||
|
// Not required
|
||||||
|
}
|
||||||
|
);
|
Loading…
Add table
Reference in a new issue