// ecosystem.config.cjs
// This file is the standard way to configure applications for PM2.
// It allows us to define all the settings for our application in one place.
// The .cjs extension is required because the project's package.json has "type": "module".

module.exports = {
  apps: [
    {
      // --- API Server ---
      // The name is now dynamically set based on the environment.
      // This is a common pattern but requires you to call pm2 with the correct name.
      // The deploy script handles this by using 'flyer-crawler-api' for prod and 'flyer-crawler-api-test' for test.
      name: 'flyer-crawler-api',
      script: './node_modules/.bin/tsx',
      args: 'server.ts', // tsx will execute this file
      // Production Environment Settings
      env_production: {
        NODE_ENV: 'production',  // Set the Node.js environment to production
        name: 'flyer-crawler-api',
        cwd: '/var/www/flyer-crawler.projectium.com',
      },
      // Test Environment Settings
      env_test: {
        NODE_ENV: 'development', // Use 'development' for test to enable more verbose logging if needed
        name: 'flyer-crawler-api-test',
        cwd: '/var/www/flyer-crawler-test.projectium.com',
      },
    },
    {
      // --- General Worker ---
      name: 'flyer-crawler-worker',
      script: './node_modules/.bin/tsx',
      args: 'src/services/queueService.server.ts', // tsx will execute this file
      // Production Environment Settings
      env_production: {
        NODE_ENV: 'production',
        name: 'flyer-crawler-worker',
        cwd: '/var/www/flyer-crawler.projectium.com',
      },
      // Test Environment Settings
      env_test: {
        NODE_ENV: 'development',
        name: 'flyer-crawler-worker-test',
        cwd: '/var/www/flyer-crawler-test.projectium.com',
      },
    },
    {
      // --- Analytics Worker ---
      name: 'flyer-crawler-analytics-worker',
      script: './node_modules/.bin/tsx',
      args: 'src/services/queueService.server.ts', // tsx will execute this file
      // Production Environment Settings
      env_production: {
        NODE_ENV: 'production',
        name: 'flyer-crawler-analytics-worker',
        cwd: '/var/www/flyer-crawler.projectium.com',
      },
      // Test Environment Settings
      env_test: {
        NODE_ENV: 'development',
        name: 'flyer-crawler-analytics-worker-test',
        cwd: '/var/www/flyer-crawler-test.projectium.com',
      },
    },
  ],
};