TickPick Code Review

import { Context, Hono } from "hono";

type DMA = {
  city: string; // e.g. "New York"
  dma_code: number; // e.g. 501
  latitude: number; // e.g. 40.714269100000003
  longitude: number; // e.g. -74.005972900000003
  region: string; // e.g. "NY"
  slug: string; // e.g. "new-york-ny"
};

const dma = new Hono();

dma.get("*", MapLatLongToDma, async (ctx: Context): Promise<Response> => {
  const { req, env } = ctx;

  const reqUrl = new URL(req.url);

  const dma: DMA | undefined = ctx.get("dma");

  if (dma) {
    reqUrl.searchParams.set("lat", dma.latitude.toString());
    reqUrl.searchParams.set("long", dma.longitude.toString());
    reqUrl.searchParams.set("dmaSlug", dma.slug);
  }

  reqUrl.pathname = reqUrl.pathname
    .replace("/workers/dma", "")
    .replace("1.0", "");

  const path = `${env.API_BASEURL}/${
    reqUrl.pathname
  }?${reqUrl.searchParams.toString()}`;

  const originReq = new Request(path, req);

  const originRes = await fetch(originReq);

  const originResBody = await originRes.text();

  return new Response(originResBody, originRes);
});

async function MapLatLongToDma(
  c: Context,
  next: () => Promise<any>
): Promise<Response> {
  const { lat, long } = c.req.query();

  const latFloat = parseFloat(lat);
  const longFloat = parseFloat(long);

   let dmaMatch: DMA | null = null;

  let shortestDistance = Number.MAX_SAFE_INTEGER;
  for (const dma of major_cities) {
    const currDistance = Math.pow(
      Math.pow(dma.latitude - coords.lat, 2) +
        Math.pow(dma.longitude - coords.long, 2),
      0.5
    );

    if (currDistance < shortestDistance) {
      shortestDistance = currDistance;
      dmaMatch = dma;
    }
  }

  if (dmaMatch) {
    c.set("dma", dma);
  }

  return await next();
}

export default dma;