import express from 'express';
import pkg from 'pg';
import path from 'path';
import { fileURLToPath } from 'url';

const { Pool } = pkg;

const app = express();
const PORT = process.env.PORT || 3000;

// Fix for __dirname in ES modules
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// ✅ Connect to your Neon database
const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
  ssl: { rejectUnauthorized: false }
});


// ========================================
// ✅ SITEMAP ROUTE (MUST BE FIRST)
// ========================================
app.get('/sitemap.xml', async (req, res) => {
  try {
    const baseUrl = 'https://jobs.skillverified.org';

    const result = await pool.query(`
      SELECT id, created_at, date_posted, expires_at
      FROM jobs
      WHERE (expires_at IS NULL OR expires_at > NOW())
    `);

    const jobs = result.rows;

    let urls = `
<url>
  <loc>${baseUrl}/</loc>
  <changefreq>daily</changefreq>
  <priority>1.0</priority>
</url>

<url>
  <loc>${baseUrl}/career-path-explorer</loc>
  <changefreq>weekly</changefreq>
  <priority>0.9</priority>
</url>
`;

    jobs.forEach(job => {
      const lastmod = job.date_posted || job.created_at;

      urls += `
<url>
  <loc>${baseUrl}/jobs/${job.id}</loc>
  <lastmod>${new Date(lastmod).toISOString().split('T')[0]}</lastmod>
  <changefreq>daily</changefreq>
  <priority>0.8</priority>
</url>
`;
    });

    const xml = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${urls}
</urlset>`;

    res.set('Content-Type', 'application/xml');
    res.set('Cache-Control', 'public, max-age=3600');
    res.send(xml);

  } catch (err) {
    console.error(err);
    res.status(500).send('Error generating sitemap');
  }
});


// ========================================
// ✅ STATIC FILES (your frontend build)
// ========================================
app.use(express.static(path.join(__dirname, 'public')));


// ========================================
// ✅ FRONTEND FALLBACK (MUST BE LAST)
// ========================================
app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'public', 'index.html'));
});


// ========================================
// 🚀 START SERVER
// ========================================
app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});