module.exports = { async up(queryInterface, Sequelize) { const transaction = await queryInterface.sequelize.transaction(); try { await queryInterface.createTable( 'billing_settings', { id: { type: Sequelize.DataTypes.UUID, defaultValue: Sequelize.DataTypes.UUIDV4, primaryKey: true, }, key: { type: Sequelize.DataTypes.TEXT, allowNull: false, unique: true, defaultValue: 'default', }, stripe_secret_key: { type: Sequelize.DataTypes.TEXT, }, stripe_webhook_secret: { type: Sequelize.DataTypes.TEXT, }, createdById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, updatedById: { type: Sequelize.DataTypes.UUID, references: { key: 'id', model: 'users', }, }, createdAt: { type: Sequelize.DataTypes.DATE }, updatedAt: { type: Sequelize.DataTypes.DATE }, deletedAt: { type: Sequelize.DataTypes.DATE }, importHash: { type: Sequelize.DataTypes.STRING(255), allowNull: true, unique: true, }, }, { transaction }, ); await transaction.commit(); } catch (error) { await transaction.rollback(); throw error; } }, async down(queryInterface) { const transaction = await queryInterface.sequelize.transaction(); try { await queryInterface.dropTable('billing_settings', { transaction }); await transaction.commit(); } catch (error) { await transaction.rollback(); throw error; } }, };