zip code short circuit

This commit is contained in:
Will Freeman
2026-04-26 17:14:57 -06:00
parent 3019d87f53
commit ae861e8e7b
6 changed files with 91 additions and 10 deletions
+7
View File
@@ -3,6 +3,7 @@ import { createCache, Cache } from 'cache-manager';
import { Type, Static } from '@sinclair/typebox';
import { type Span, SpanKind, SpanStatusCode, context, trace } from '@opentelemetry/api';
import { tracer, otelLogger, SeverityNumber } from '../telemetry';
import { isZipCode, lookupZipCode } from './ZipCodeService';
const { DiskStore } = require('cache-manager-fs-hash');
export const NominatimResultSchema = Type.Object({
@@ -56,6 +57,12 @@ export class NominatimClient {
baseUrl = 'https://nominatim.openstreetmap.org/search';
async geocodePhrase(query: string, includeGeoJson: boolean = false, parentSpan?: Span): Promise<NominatimResult[]> {
// Short-circuit for ZIP codes — serve from local data, no Nominatim call needed
if (isZipCode(query)) {
const zipResult = lookupZipCode(query.trim());
return zipResult ? [zipResult] : [];
}
const cacheKey = `geocode:${query}`;
const cached = await cache.get(cacheKey);
if (cached) {