/**
 * Migration Script: Add newDistrictId and newStateId to RelocationRequest
 * Run: npx ts-node scripts/migrate-relocation-schema.ts
 */
import db from '../src/database/models/index.js';

async function migrate() {
    const queryInterface = db.sequelize.getQueryInterface();
    
    try {
        console.log('Starting relocation schema migration...');
        
        // Get table description to check existing columns
        const tableInfo = await queryInterface.describeTable('relocation_requests');
        
        // Add newDistrictId column if not exists
        if (!tableInfo.newDistrictId) {
            console.log('Adding newDistrictId column...');
            await queryInterface.addColumn('relocation_requests', 'newDistrictId', {
                type: db.Sequelize.DataTypes.UUID,
                allowNull: true,
                references: {
                    model: 'districts',
                    key: 'id'
                }
            });
            console.log('✓ newDistrictId column added');
        } else {
            console.log('- newDistrictId column already exists');
        }
        
        // Add newStateId column if not exists
        if (!tableInfo.newStateId) {
            console.log('Adding newStateId column...');
            await queryInterface.addColumn('relocation_requests', 'newStateId', {
                type: db.Sequelize.DataTypes.UUID,
                allowNull: true,
                references: {
                    model: 'states',
                    key: 'id'
                }
            });
            console.log('✓ newStateId column added');
        } else {
            console.log('- newStateId column already exists');
        }
        
        // Update enum to include 'Intercity' if not already present
        console.log('Checking relocationType enum...');
        try {
            await db.sequelize.query(`
                ALTER TYPE "enum_relocation_requests_relocationType" 
                ADD VALUE IF NOT EXISTS 'Intercity';
            `);
            console.log('✓ Intercity added to enum (if not already present)');
        } catch (enumError: any) {
            // PostgreSQL doesn't support IF NOT EXISTS for enum values in some versions
            if (enumError.code === '42710') {
                console.log('- Intercity already exists in enum');
            } else {
                console.log('Warning: Could not update enum:', enumError.message);
            }
        }
        
        console.log('\n✅ Migration completed successfully!');
    } catch (error) {
        console.error('❌ Migration failed:', error);
        process.exit(1);
    } finally {
        await db.sequelize.close();
    }
}

migrate();