Skip to content

Instantly share code, notes, and snippets.

@colbyn
Created February 15, 2026 05:31
Show Gist options
  • Select an option

  • Save colbyn/3e1b635d3884eaf3a87c7fbb32069bce to your computer and use it in GitHub Desktop.

Select an option

Save colbyn/3e1b635d3884eaf3a87c7fbb32069bce to your computer and use it in GitHub Desktop.
chatbpt-io cli example

db-api/sql/migrations/2025-12-16--01--add_place_lat_long.up.sql:

-- db-api/sql/migrations/2025-12-16--01--add_place_lat_long.up.sql
BEGIN;

ALTER TABLE place
  ADD COLUMN IF NOT EXISTS latitude  DOUBLE PRECISION,
  ADD COLUMN IF NOT EXISTS longitude DOUBLE PRECISION;

DO $$
BEGIN
  IF NOT EXISTS (
    SELECT 1
    FROM pg_constraint c
    JOIN pg_class t ON t.oid = c.conrelid
    WHERE t.relname = 'place' AND c.conname = 'place_latitude_range'
  ) THEN
    ALTER TABLE place
      ADD CONSTRAINT place_latitude_range
      CHECK (latitude IS NULL OR (latitude BETWEEN -90 AND 90))
      NOT VALID;
  END IF;

  IF NOT EXISTS (
    SELECT 1
    FROM pg_constraint c
    JOIN pg_class t ON t.oid = c.conrelid
    WHERE t.relname = 'place' AND c.conname = 'place_longitude_range'
  ) THEN
    ALTER TABLE place
      ADD CONSTRAINT place_longitude_range
      CHECK (longitude IS NULL OR (longitude BETWEEN -180 AND 180))
      NOT VALID;
  END IF;
END$$;

ALTER TABLE place VALIDATE CONSTRAINT place_latitude_range;
ALTER TABLE place VALIDATE CONSTRAINT place_longitude_range;

CREATE INDEX IF NOT EXISTS idx_place_latitude  ON place (latitude);
CREATE INDEX IF NOT EXISTS idx_place_longitude ON place (longitude);

COMMIT;

db-api/sql/migrations/2025-12-17--01--add_address_components.up.sql:

ALTER TABLE place
  ADD COLUMN IF NOT EXISTS address_components_raw JSONB,

  ADD COLUMN IF NOT EXISTS address_context_label TEXT,
  ADD COLUMN IF NOT EXISTS address_line1 TEXT,
  ADD COLUMN IF NOT EXISTS address_line1_alt TEXT,
  ADD COLUMN IF NOT EXISTS address_locality TEXT,
  ADD COLUMN IF NOT EXISTS address_postal_code TEXT,
  ADD COLUMN IF NOT EXISTS address_admin_area_1 TEXT,
  ADD COLUMN IF NOT EXISTS address_country_code TEXT;

-- Optional: lightweight indexes for the queries you’ll actually run
CREATE INDEX IF NOT EXISTS idx_place_addr_locality_admin
  ON place (address_admin_area_1, address_locality);

CREATE INDEX IF NOT EXISTS idx_place_addr_postal
  ON place (address_postal_code);

CREATE INDEX IF NOT EXISTS idx_place_addr_country
  ON place (address_country_code);

CREATE INDEX IF NOT EXISTS idx_place_addr_raw_gin
  ON place USING gin (address_components_raw);
chatbot-io format -i db-api/sql/migrations/*.sql
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment