#!/usr/bin/env npx tsx
/**
 * Ustawia cenę aktywnego ogłoszenia po slugu.
 *
 * Na serwerze (cPanel → Terminal):
 *   cd /home/geotrack/public_html/twojalodka.pl && npx tsx scripts/set-listing-price.ts <slug> <cena_pln>
 *
 * Przykład (Pandora Rydgeway):
 *   npx tsx scripts/set-listing-price.ts adna-zaglowka-pandora-rydgeway-z-1973-brak-osmozy-1973 8500
 */
import { getPool } from '../lib/db'

async function main() {
  const slug = process.argv[2]?.trim()
  const priceArg = process.argv[3]?.trim()

  if (!slug || !priceArg) {
    console.error('Użycie: npx tsx scripts/set-listing-price.ts <slug> <cena_pln>')
    process.exit(1)
  }

  const price = Number(priceArg.replace(/\s/g, '').replace(',', '.'))
  if (!Number.isFinite(price) || price < 0) {
    console.error('Niepoprawna cena:', priceArg)
    process.exit(1)
  }

  const pool = getPool()
  const [result] = await pool.execute(
    `UPDATE listings
     SET price_pln = ?, price_on_request = 0, updated_at = NOW()
     WHERE slug = ? AND status = 'active'`,
    [price, slug],
  )

  const affected = (result as { affectedRows?: number }).affectedRows ?? 0
  if (affected === 0) {
    const [rows] = await pool.execute(
      `SELECT slug, title, status, price_pln FROM listings WHERE slug = ? LIMIT 1`,
      [slug],
    )
    const row = (rows as { slug: string; title: string; status: string; price_pln: unknown }[])[0]
    if (!row) {
      console.error('Brak ogłoszenia o slugu:', slug)
      process.exit(1)
    }
    console.error('Ogłoszenie istnieje, ale nie zaktualizowano (status:', row.status, ', cena:', row.price_pln, ')')
    process.exit(1)
  }

  console.log(`OK: ${slug} → ${price} PLN (${affected} wiersz)`)
  await pool.end()
}

main().catch((e) => {
  console.error(e)
  process.exit(1)
})
