const path = require('path');
const mongoose = require('mongoose');
const { Banner } = require('@librechat/data-schemas').createModels(mongoose);
require('module-alias')({ base: path.resolve(__dirname, '..', 'api') });
const { askQuestion, silentExit } = require('./helpers');
const connect = require('./connect');

(async () => {
  await connect();

  console.purple('--------------------------');
  console.purple('Delete the banner!');
  console.purple('--------------------------');

  const now = new Date();

  try {
    const banner = await Banner.findOne({
      displayFrom: { $lte: now },
      $or: [{ displayTo: { $gte: now } }, { displayTo: null }],
    });

    if (!banner) {
      console.yellow('No banner found to delete.');
      silentExit(0);
    }

    console.purple('Current banner:');
    console.log(`Message: ${banner.message}`);
    console.log(`Display From: ${banner.displayFrom}`);
    console.log(`Display To: ${banner.displayTo || 'Not specified'}`);
    console.log(`Is Public: ${banner.isPublic}`);

    const confirmDelete = await askQuestion('Do you want to delete this banner? (y/N): ');

    if (confirmDelete.toLowerCase() === 'y') {
      await Banner.findByIdAndDelete(banner._id);
      console.green('Banner deleted successfully!');
    } else {
      console.yellow('Banner deletion cancelled.');
    }
  } catch (error) {
    console.red('Error: ' + error.message);
    console.error(error);
    silentExit(1);
  }

  silentExit(0);
})();

process.on('uncaughtException', (err) => {
  if (!err.message.includes('fetch failed')) {
    console.error('There was an uncaught error:');
    console.error(err);
  }

  if (err.message.includes('fetch failed')) {
    return;
  } else {
    process.exit(1);
  }
});
