import { loadSearchListings } from "~/server/utils/db-listings"

const asNumber = (value: string | undefined) => {
  if (!value) {
    return undefined
  }

  const parsed = Number(value)
  return Number.isFinite(parsed) ? parsed : undefined
}

export default defineEventHandler((event) => {
  const query = getQuery(event)

  return loadSearchListings({
    q: typeof query.q === "string" ? query.q : undefined,
    source: typeof query.source === "string" ? query.source : undefined,
    make: typeof query.make === "string" ? query.make : undefined,
    transmission: typeof query.transmission === "string" ? query.transmission : undefined,
    fuel: typeof query.fuel === "string" ? query.fuel : undefined,
    minYear: asNumber(typeof query.minYear === "string" ? query.minYear : undefined),
    maxYear: asNumber(typeof query.maxYear === "string" ? query.maxYear : undefined),
    maxPrice: asNumber(typeof query.maxPrice === "string" ? query.maxPrice : undefined),
    page: asNumber(typeof query.page === "string" ? query.page : undefined),
    pageSize: asNumber(typeof query.pageSize === "string" ? query.pageSize : undefined)
  })
})
