Files
cloudron-box/migrations/20190215215805-tokens-add-id.js
Girish Ramakrishnan 12e073e8cf use node: prefix for requires
mostly because code is being autogenerated by all the AI stuff using
this prefix. it's also used in the stack trace.
2025-08-14 12:55:35 +05:30

30 lines
933 B
JavaScript

'use strict';
const async = require('async'),
crypto = require('node:crypto');
exports.up = function(db, callback) {
async.series([
db.runSql.bind(db, 'START TRANSACTION;'),
db.runSql.bind(db, 'ALTER TABLE tokens ADD COLUMN id VARCHAR(128)'),
function (done) {
db.runSql('SELECT * FROM tokens', function (error, tokens) {
async.eachSeries(tokens, function (token, iteratorDone) {
db.runSql('UPDATE tokens SET id=? WHERE accessToken=?', [ 'tid-'+cryptorandomUUID(), token.accessToken ], iteratorDone);
}, done);
});
},
db.runSql.bind(db, 'ALTER TABLE tokens MODIFY id VARCHAR(128) NOT NULL UNIQUE'),
db.runSql.bind(db, 'COMMIT'),
], callback);
};
exports.down = function(db, callback) {
async.series([
db.runSql.bind(db, 'ALTER TABLE tokens DROP COLUMN id'),
], callback);
};