
import './cron';
import app from './app';
import { connectMongo } from './logs/mongo';
import db from './db/knex';

const PORT = process.env.PORT || 5000;


async function start() {
  try {
    await db.raw('select 1+1 as result');
    console.log('✅ MySQL connected');

    // Auto-migration guard for related_tools column & related_blogs table
    try {
      const hasRelatedTools = await db.schema.hasColumn('blogs', 'related_tools');
      if (!hasRelatedTools) {
        await db.schema.table('blogs', (table) => {
          table.text('related_tools', 'longtext').nullable();
        });
        console.log('✅ Auto-migrated: added related_tools column to blogs table');
      }

      const hasRelatedBlogs = await db.schema.hasTable('related_blogs');
      if (!hasRelatedBlogs) {
        await db.schema.createTable('related_blogs', (table) => {
          table.increments('id').primary();
          table.integer('blog_id').unsigned().notNullable().index();
          table.integer('related_blog_id').unsigned().notNullable().index();
        });
        console.log('✅ Auto-migrated: created related_blogs table');
      }
    } catch (e: any) {
      console.warn('⚠️ Could not check/add related_tools or related_blogs schema:', e.message);
    }

    // await connectMongo(); // ✅ Only connects once now
    // console.log('✅ MongoDB connected');

    app.listen(PORT, () => {
      console.log(`🚀 Server listening on port ${PORT}`);
    });
  } catch (error) {
    console.error('❌ Startup Error:', error);
    process.exit(1);
  }
}

start();
