Files
yourpart3/backend/migrations-active/20260515000000-add-oauth-identities.cjs
Torsten Schulz (local) 1ab9407e79
All checks were successful
Deploy to production / deploy (push) Successful in 2m56s
Refactor code structure for improved readability and maintainability; optimize performance across multiple modules.
2026-07-21 09:08:15 +02:00

70 lines
1.8 KiB
JavaScript
Executable File

'use strict';
/** @type {import('sequelize-cli').Migration} */
module.exports = {
async up(queryInterface, Sequelize) {
await queryInterface.createTable(
{ schema: 'community', tableName: 'oauth_identity' },
{
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false,
},
user_id: {
type: Sequelize.INTEGER,
allowNull: false,
references: {
model: { schema: 'community', tableName: 'user' },
key: 'id',
},
onUpdate: 'CASCADE',
onDelete: 'CASCADE',
},
provider: {
type: Sequelize.STRING(64),
allowNull: false,
},
issuer: {
type: Sequelize.TEXT,
allowNull: false,
},
subject: {
type: Sequelize.TEXT,
allowNull: false,
},
email: {
type: Sequelize.TEXT,
allowNull: true,
},
created_at: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
},
updated_at: {
type: Sequelize.DATE,
allowNull: false,
defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'),
},
}
);
await queryInterface.addIndex(
{ schema: 'community', tableName: 'oauth_identity' },
['provider', 'subject'],
{ unique: true, name: 'oauth_identity_provider_subject_uniq' }
);
await queryInterface.addIndex(
{ schema: 'community', tableName: 'oauth_identity' },
['user_id'],
{ name: 'oauth_identity_user_idx' }
);
},
async down(queryInterface) {
await queryInterface.dropTable({ schema: 'community', tableName: 'oauth_identity' });
},
};