"use strict"; module.exports = { async up(queryInterface, Sequelize) { return queryInterface.sequelize.transaction(async (transaction) => { await queryInterface.createTable( "external_groups", { id: { type: Sequelize.UUID, allowNull: false, defaultValue: Sequelize.UUIDV4, primaryKey: true, }, externalId: { type: Sequelize.STRING, allowNull: false, }, name: { type: Sequelize.STRING, allowNull: false, }, groupId: { type: Sequelize.UUID, allowNull: true, references: { model: "groups", key: "id", }, onDelete: "SET NULL", }, authenticationProviderId: { type: Sequelize.UUID, allowNull: false, references: { model: "authentication_providers", key: "id", }, onDelete: "CASCADE", }, teamId: { type: Sequelize.UUID, allowNull: false, references: { model: "teams", key: "id", }, onDelete: "CASCADE", }, lastSyncedAt: { type: Sequelize.DATE, allowNull: true, }, createdAt: { type: Sequelize.DATE, allowNull: false, }, updatedAt: { type: Sequelize.DATE, allowNull: false, }, }, { transaction } ); await queryInterface.addIndex( "external_groups", ["authenticationProviderId", "externalId"], { unique: true, transaction } ); }); }, async down(queryInterface) { return queryInterface.sequelize.transaction(async (transaction) => { await queryInterface.dropTable("external_groups", { transaction }); }); }, };