import { existsSync, readFileSync, writeFileSync } from 'fs'
import { spawn } from 'child_process'
import path from 'path'

const PID_FILE = path.join(__dirname, 'worker.pid')

function isRunning(pid: number): boolean {
  try {
    process.kill(pid, 0)
    return true
  } catch {
    return false
  }
}

if (existsSync(PID_FILE)) {
  const pid = parseInt(readFileSync(PID_FILE, 'utf-8').trim(), 10)
  if (!isNaN(pid) && isRunning(pid)) {
    console.log(`[cron-check] worker already running (PID ${pid})`)
    process.exit(0)
  }
}

const child = spawn(
  'node',
  [
    '-r', 'ts-node/register',
    '-r', 'tsconfig-paths/register',
    path.join(__dirname, 'index.ts'),
  ],
  { detached: true, stdio: 'ignore' }
)
child.unref()

if (child.pid) {
  writeFileSync(PID_FILE, String(child.pid))
  console.log(`[cron-check] worker started (PID ${child.pid})`)
}

process.exit(0)
