tududi/backend/migrations/20250925000001-add-uid-to-users.js
Antonis 4fa2aa91bf
Fix E2E test breakage (#380)
* Add logging placeholder functions, fix notes.js uids

* Add UIDs to inbox items. Includes migration.

* Add UID to users.

* Add project UIDs usage.

* Add script that runs specific E2E test(s)

* Only run Chromium E2E tests by default.

* Fix breaking E2E tests

* fixup! Fix breaking E2E tests

---------

Co-authored-by: antanst <>
Co-authored-by: Chris Veleris <chrisveleris@gmail.com>
2025-10-05 16:04:46 +03:00

66 lines
2.1 KiB
JavaScript

'use strict';
const { uid } = require('../utils/uid');
const { safeAddColumns, safeAddIndex } = require('../utils/migration-utils');
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up(queryInterface, Sequelize) {
await queryInterface.sequelize.query('PRAGMA foreign_keys = OFF');
try {
await safeAddColumns(queryInterface, 'users', [
{
name: 'uid',
definition: {
type: Sequelize.STRING,
allowNull: true,
},
},
]);
const users = await queryInterface.sequelize.query(
'SELECT id FROM users WHERE uid IS NULL',
{ type: Sequelize.QueryTypes.SELECT }
);
for (const user of users) {
const uniqueId = uid();
await queryInterface.sequelize.query(
'UPDATE users SET uid = ? WHERE id = ?',
{
replacements: [uniqueId, user.id],
type: Sequelize.QueryTypes.UPDATE,
}
);
}
await queryInterface.changeColumn('users', 'uid', {
type: Sequelize.STRING,
allowNull: false,
unique: true,
});
await safeAddIndex(queryInterface, 'users', ['uid'], {
unique: true,
name: 'users_uid_unique_index',
});
} finally {
await queryInterface.sequelize.query('PRAGMA foreign_keys = ON');
}
},
async down(queryInterface) {
try {
await queryInterface.removeIndex('users', 'users_uid_unique_index');
} catch (error) {
console.log('users_uid_unique_index not found, skipping removal');
}
try {
await queryInterface.removeColumn('users', 'uid');
} catch (error) {
console.log('Error removing uid column from users:', error.message);
}
},
};