import { NestFactory } from "@nestjs/core"
import { AppModule } from "../app.module"
import { CronService } from "../modules/cron/cron.service"
import { availableCronTypes } from "../config/app.config"

const bootstrap = async () => {
  const app = await NestFactory.createApplicationContext(AppModule)
  const cronService = app.get(CronService)

  const param = process.argv[2] // get from CLI args

  if (!param || !availableCronTypes.includes(param)) {
    console.log("\n")
    console.warn(
      "\x1b[36m%s\x1b[0m",
      "Available params:",
      availableCronTypes.join(", "),
    )
    console.log("\n")
    console.warn("Example: npm run cron:run -- generate_payroll")
    console.log("\n")
    process.exit(0)
  }

  console.log(`🚀 Running cron job: ${param}`)

  try {
    await cronService.runManually(param)
    console.log(`✅ Cron job '${param}' completed successfully`)
  } catch (error) {
    console.error(`❌ Cron job '${param}' failed:`, error.message)
    process.exit(1)
  }

  await app.close()
}

bootstrap().catch((error) => {
  console.error("❌ Failed to run cron job:", error)
  process.exit(1)
})
