mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-28 21:33:24 +03:00
Backfilled the members last_seen_at
column
refs https://github.com/TryGhost/Team/issues/1305 - Skipped sqlite3 compatibility due to the lack of join support in update - Uses a raw migration to improve performance
This commit is contained in:
parent
00195b5bc4
commit
e7751fa279
@ -0,0 +1,31 @@
|
||||
const logging = require('@tryghost/logging');
|
||||
const {createTransactionalMigration} = require('../../utils');
|
||||
|
||||
module.exports = createTransactionalMigration(
|
||||
async function up(knex) {
|
||||
if (knex.client.config.client === 'sqlite3') {
|
||||
logging.warn('Skipping migration for SQLite3');
|
||||
return;
|
||||
}
|
||||
logging.info('Backfilling the members.last_seen_at column from members_login_events.');
|
||||
await knex.raw(`
|
||||
UPDATE members
|
||||
INNER JOIN (SELECT member_id as id, MAX(created_at) as last_seen_at
|
||||
FROM members_login_events
|
||||
GROUP BY member_id) as logins ON logins.id = members.id
|
||||
SET
|
||||
members.last_seen_at = logins.last_seen_at
|
||||
WHERE
|
||||
members.last_seen_at IS NULL
|
||||
OR members.last_seen_at < logins.last_seen_at
|
||||
`);
|
||||
},
|
||||
async function down(knex) {
|
||||
if (knex.client.config.client === 'sqlite3') {
|
||||
logging.warn('Skipping migration for SQLite3');
|
||||
return;
|
||||
}
|
||||
logging.info('Rolling back the backfilling of the members.last_seen_at column from members_login_events.');
|
||||
await knex('members').update({last_seen_at: null});
|
||||
}
|
||||
);
|
Loading…
Reference in New Issue
Block a user