nodebb/src/upgrades/3.1.0/migrate_api_tokens.js

39 lines
1.1 KiB
JavaScript

'use strict';
const assert = require('assert');
const winston = require('winston');
const db = require('../../database');
const meta = require('../../meta');
const api = require('../../api');
module.exports = {
name: 'Migrate tokens away from sorted-list implementation',
timestamp: Date.UTC(2023, 4, 2),
method: async () => {
const { tokens = [] } = await meta.settings.get('core.api');
await Promise.all(tokens.map(async (tokenObj) => {
const { token, uid, description } = tokenObj;
await api.utils.tokens.add({ token, uid, description });
}));
// Validate
const oldCount = await db.sortedSetCard('settings:core.api:sorted-list:tokens');
const newCount = await db.sortedSetCard('tokens:createtime');
try {
if (oldCount > 0) {
assert.strictEqual(oldCount, newCount);
}
// Delete old tokens
await meta.settings.set('core.api', {
tokens: [],
});
await db.delete('settings:core.api:sorted-lists');
} catch (e) {
winston.warn('Old token count does not match migrated tokens count, leaving old tokens behind.');
}
},
};