import app from './app';
import { logger } from './config/logger';
import prisma from './config/database';
import { connectRedis } from './config/redis';
import { BackupService } from './services/backup.service';
import { SchedulerService } from './services/scheduler.service';

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

async function bootstrap() {
  try {
    await prisma.$connect();
    logger.info('Database connected successfully');

    await connectRedis();

    BackupService.initialize();
    SchedulerService.initialize();

    app.listen(PORT, () => {
      logger.info(`Server running on port ${PORT} in ${process.env.NODE_ENV || 'development'} mode`);
    });
  } catch (error) {
    logger.error('Failed to start server:', error);
    process.exit(1);
  }
}

bootstrap();
