import 'dotenv/config'
import { prisma } from '@/lib/prisma'
import { config } from '../config/app.config'
import { unlinkSync, existsSync } from 'fs'

async function cleanup() {
  const cutoff = new Date(
    Date.now() - config.DOWNLOAD_LINK_TTL_HOURS * 60 * 60 * 1000
  )

  const expired = await prisma.download.findMany({
    where: { status: 'DONE', completedAt: { lt: cutoff } },
    select: { id: true, filePath: true },
  })

  for (const dl of expired) {
    if (dl.filePath && existsSync(dl.filePath)) {
      unlinkSync(dl.filePath)
    }
    await prisma.download.update({
      where: { id: dl.id },
      data: { status: 'FILE_DELETED', deletedAt: new Date() },
    })
  }

  console.log(`[cron-cleanup] removed ${expired.length} expired file(s)`)
}

cleanup().catch(console.error).finally(() => process.exit(0))
