-- migrate:up

-- Cache layer for reverse geocoding. Keyed by lat/lng rounded to 4 decimals
-- (~10m grid), so parked vehicles share a row and only moving vehicles trigger
-- fresh lookups. Filled asynchronously by the geocoder cron job (PRD F2.3).
CREATE TABLE state.geocoded_positions (
    lat_rounded   numeric(8,4) NOT NULL,
    lng_rounded   numeric(8,4) NOT NULL,
    address       text,
    address_short text,
    source        text NOT NULL DEFAULT 'nominatim',
    fetched_at    timestamptz NOT NULL DEFAULT now(),
    PRIMARY KEY (lat_rounded, lng_rounded)
);

-- migrate:down

DROP TABLE IF EXISTS state.geocoded_positions;
