AeThex-Connect/scripts/run-migration.js
2026-02-28 23:50:09 -07:00

61 lines
1.9 KiB
JavaScript

const { Pool } = require('pg');
const fs = require('fs');
const path = require('path');
require('dotenv').config();
// Disable SSL verification for Supabase pooler
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
async function runMigration() {
const connectionString = process.env.DATABASE_URL?.replace('?sslmode=require', '');
const pool = new Pool({
connectionString,
ssl: true
});
try {
console.log('Connecting to database...');
await pool.query('SELECT 1');
console.log('Connected!\n');
// Read the migration file
const migrationPath = path.join(__dirname, '../supabase/migrations/20260206000000_users_and_servers.sql');
const sql = fs.readFileSync(migrationPath, 'utf8');
console.log('Running users_and_servers migration...\n');
// Execute the entire SQL file as a single transaction
await pool.query(sql);
console.log('✅ Migration complete!');
// Verify tables exist
const tables = await pool.query(`
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'
AND table_name IN ('users', 'servers', 'channels', 'messages', 'server_members')
`);
console.log('\nVerified tables created:');
tables.rows.forEach(row => console.log(' ✓', row.table_name));
} catch (error) {
console.error('Migration error:', error.message);
// If tables already exist error, try checking what exists
if (error.message.includes('already exists')) {
console.log('\nSome tables already exist. Checking current state...');
const tables = await pool.query(`
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'
ORDER BY table_name
`);
console.log('Existing tables:', tables.rows.map(r => r.table_name).join(', '));
}
} finally {
await pool.end();
}
}
runMigration();