import { NextResponse } from 'next/server'
import { Redis } from '@upstash/redis'

export const runtime = 'nodejs'
export const dynamic = 'force-dynamic'

const redis = new Redis({
  url: process.env.UPSTASH_REDIS_REST_URL!,
  token: process.env.UPSTASH_REDIS_REST_TOKEN!,
})

export async function GET(
  request: Request,
  { params }: { params: Promise<{ id: string }> }
) {
  try {
    const { id } = await params

    if (!id) {
      return NextResponse.json({ error: 'Job ID required' }, { status: 400 })
    }

    // Get job from Redis
    const job = await redis.hgetall(`job:${id}`)

    if (!job || Object.keys(job).length === 0) {
      return NextResponse.json({ error: 'Job not found' }, { status: 404 })
    }

    // Return job status (don't return the full image data, just status + result)
    const response: Record<string, unknown> = {
      id: job.id,
      status: job.status,
      createdAt: job.createdAt,
    }

    if (job.status === 'processing') {
      response.startedAt = job.startedAt
    }

    if (job.status === 'done') {
      response.resultUrl = job.resultUrl
      response.finishedAt = job.finishedAt
    }

    if (job.status === 'error') {
      response.error = job.error
      response.finishedAt = job.finishedAt
    }

    return NextResponse.json(response)
  } catch (error: unknown) {
    console.error('Status check error:', error)
    const message = error instanceof Error ? error.message : 'Failed to fetch status'
    return NextResponse.json({ error: message }, { status: 500 })
  }
}
