mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-01-20 22:42:53 -05: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
1 changed files with 31 additions and 0 deletions
|
@ -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…
Add table
Reference in a new issue