diff --git a/Dockerfile b/Dockerfile index 21023af..8058261 100755 --- a/Dockerfile +++ b/Dockerfile @@ -26,6 +26,8 @@ COPY --from=builder /app/src/lib/music ./src/lib/music COPY --from=builder /app/src/lib/games-ingest ./src/lib/games-ingest # scripts/ai-*-import.ts (AI tracker news and bot status imports) import this. COPY --from=builder /app/src/lib/server/ai-import.ts ./src/lib/server/ai-import.ts +# scripts/radio.ts (ISS passes and ntfy reminders) imports the radio helpers. +COPY --from=builder /app/src/lib/radio ./src/lib/radio COPY --from=builder /app/server.js ./server.js COPY package.json ./ EXPOSE 3000 diff --git a/bun.lock b/bun.lock index 4ce588d..51d8af8 100644 --- a/bun.lock +++ b/bun.lock @@ -21,6 +21,7 @@ "mode-watcher": "^1.1.0", "pdfjs-dist": "^6.4.299", "postgres": "^3.4.9", + "satellite.js": "^7.1.0", "topojson-client": "^3.1.0", "world-atlas": "^2.0.2", "zod": "^4.5.4", @@ -939,6 +940,8 @@ "sade": ["sade@1.8.1", "", { "dependencies": { "mri": "^1.1.0" } }, "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A=="], + "satellite.js": ["satellite.js@7.1.0", "", {}, "sha512-U6nRml9Nb7dV9LJPiMNPyna7U7ry+1nXYkOeCEG7K/YbojQQLHHmcjPisp03VNY+HLcbQHqbt7t4t1vQMaKCLQ=="], + "semver": ["semver@7.8.5", "", { "bin": "bin/semver.js" }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], "set-cookie-parser": ["set-cookie-parser@3.1.2", "", {}, "sha512-5/r/lTwbJ3zQ+qwdUFZYeRNqda7P5HD8zQKqlSjdGt1/S0cjLAphHusj4Y58ahDtWn/g32xrIS58/ikOvwl0Lw=="], diff --git a/deploy/systemd/radio-iss.service b/deploy/systemd/radio-iss.service new file mode 100644 index 0000000..557f494 --- /dev/null +++ b/deploy/systemd/radio-iss.service @@ -0,0 +1,6 @@ +[Unit] +Description=Radio tracker: refresh ISS TLE and passes over Gouda + +[Service] +Type=oneshot +ExecStart=/bin/sh -c "echo \"== $$(date -Is) iss\" >> %h/.local/state/radio.log; exec /usr/bin/sudo -n docker exec --env-file %h/.config/radio.env personal-website-app-1 bun scripts/radio.ts iss >> %h/.local/state/radio.log 2>&1" diff --git a/deploy/systemd/radio-iss.timer b/deploy/systemd/radio-iss.timer new file mode 100644 index 0000000..0bb28cf --- /dev/null +++ b/deploy/systemd/radio-iss.timer @@ -0,0 +1,10 @@ +[Unit] +Description=Daily ISS pass refresh for the radio tracker + +[Timer] +OnCalendar=*-*-* 04:15:00 Europe/Amsterdam +RandomizedDelaySec=10min +Persistent=true + +[Install] +WantedBy=timers.target diff --git a/deploy/systemd/radio-remind.service b/deploy/systemd/radio-remind.service new file mode 100644 index 0000000..39710e1 --- /dev/null +++ b/deploy/systemd/radio-remind.service @@ -0,0 +1,6 @@ +[Unit] +Description=Radio tracker: ntfy reminders 10 min before nets and ISS passes + +[Service] +Type=oneshot +ExecStart=/bin/sh -c "exec /usr/bin/sudo -n docker exec --env-file %h/.config/radio.env personal-website-app-1 bun scripts/radio.ts remind >> %h/.local/state/radio.log 2>&1" diff --git a/deploy/systemd/radio-remind.timer b/deploy/systemd/radio-remind.timer new file mode 100644 index 0000000..b7b59c0 --- /dev/null +++ b/deploy/systemd/radio-remind.timer @@ -0,0 +1,9 @@ +[Unit] +Description=Radio tracker reminders, every minute + +[Timer] +OnCalendar=*:*:00 +AccuracySec=5s + +[Install] +WantedBy=timers.target diff --git a/docs/radio-tracker.md b/docs/radio-tracker.md new file mode 100644 index 0000000..7719db8 --- /dev/null +++ b/docs/radio-tracker.md @@ -0,0 +1,23 @@ +# Radio tracker (/trackers/radio) + +Private (owner-only, 404 for everyone else) tracker for Opa Chiel's scanner hobby. + +- **Frequencies** (`radio.frequencies`): freq in Hz, mode, band (marine/air/ham/pmr/other), name, + location, notes, marine channel, tags. Seeded from Opa's lists (airband banks 4-6, marine banks + 7-10) and the extras in his notes (Haagse ronde, KLM ronde, ISS downlink, ADS-B). +- **Scanner banks** (`radio.channels`): Uniden UBC125XLT layout, 10 banks x 50 channels. + `/trackers/radio/banks.csv` exports all 500 channels in BC125AT_SS column order. +- **Nets** (`radio.nets`): days (1 = Mon .. 7 = Sun) and "HH:MM" times in Europe/Amsterdam. +- **ISS passes** (`radio.iss_passes`, `radio.iss_tle`): computed in `scripts/radio.ts iss` with + satellite.js from the Celestrak TLE (CATNR 25544) for Gouda (52.011 N, 4.711 E), 5 days ahead. +- **Log** (`radio.log`): what was heard, linked to a frequency. + +## Jobs (systemd user timers on stan-ovh, copies in deploy/systemd) + +- `radio-iss.timer`: daily 04:15 Amsterdam, `bun scripts/radio.ts iss` in the app container. +- `radio-remind.timer`: every minute, `bun scripts/radio.ts remind`. Sends an ntfy push + 10 minutes before each net with `remind` on and each ISS pass with max elevation >= 10 deg. + `radio.reminders` makes each reminder fire once. +- Both read `~/.config/radio.env` (mode 600): `RADIO_NTFY_URL` (ntfy topic URL), optional + `RADIO_NTFY_TOKEN`. Log: `~/.local/state/radio.log`. +- `bun scripts/radio.ts upcoming` prints the next 24 h of reminders without sending. diff --git a/drizzle.config.ts b/drizzle.config.ts index b0760d1..1653072 100755 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -37,7 +37,8 @@ export default defineConfig({ 'worldtodo', 'notes', 'math', - 'plant' + 'plant', + 'radio' ], migrations: { schema: 'drizzle', table: '__drizzle_migrations' }, verbose: true, diff --git a/drizzle/20261026165544_radio/migration.sql b/drizzle/20261026165544_radio/migration.sql new file mode 100644 index 0000000..947fb67 --- /dev/null +++ b/drizzle/20261026165544_radio/migration.sql @@ -0,0 +1,141 @@ +CREATE SCHEMA "radio"; +--> statement-breakpoint +CREATE TABLE "radio"."channels" ( + "channel" smallint PRIMARY KEY, + "frequency_id" integer NOT NULL, + "alpha_tag" text, + "delay" boolean DEFAULT true NOT NULL, + "lockout" boolean DEFAULT false NOT NULL, + "priority" boolean DEFAULT false NOT NULL, + "updated_at" timestamp with time zone DEFAULT now() NOT NULL, + CONSTRAINT "channels_channel_check" CHECK ("channel" BETWEEN 1 AND 500), + CONSTRAINT "channels_alpha_tag_check" CHECK (char_length("alpha_tag") <= 16) +); +--> statement-breakpoint +CREATE TABLE "radio"."frequencies" ( + "id" serial PRIMARY KEY, + "freq_hz" bigint NOT NULL, + "mode" text DEFAULT 'FM' NOT NULL, + "band" text NOT NULL, + "name" text NOT NULL, + "location" text, + "notes" text, + "marine_ch" text, + "tags" text[] DEFAULT '{}'::text[] NOT NULL, + "source" text, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone DEFAULT now() NOT NULL, + CONSTRAINT "frequencies_mode_check" CHECK ("mode" IN ('FM','NFM','AM','USB','LSB','CW','DATA')), + CONSTRAINT "frequencies_band_check" CHECK ("band" IN ('marine','air','ham','pmr','other')), + CONSTRAINT "frequencies_freq_check" CHECK ("freq_hz" > 0) +); +--> statement-breakpoint +CREATE TABLE "radio"."iss_passes" ( + "start_at" timestamp with time zone PRIMARY KEY, + "max_at" timestamp with time zone NOT NULL, + "end_at" timestamp with time zone NOT NULL, + "max_el" real NOT NULL, + "start_az" real NOT NULL, + "max_az" real NOT NULL, + "end_az" real NOT NULL, + "sunlit" boolean DEFAULT false NOT NULL, + "computed_at" timestamp with time zone DEFAULT now() NOT NULL +); +--> statement-breakpoint +CREATE TABLE "radio"."iss_tle" ( + "id" smallint PRIMARY KEY DEFAULT 1, + "name" text NOT NULL, + "line1" text NOT NULL, + "line2" text NOT NULL, + "epoch" timestamp with time zone NOT NULL, + "fetched_at" timestamp with time zone DEFAULT now() NOT NULL, + CONSTRAINT "iss_tle_single_check" CHECK ("id" = 1) +); +--> statement-breakpoint +CREATE TABLE "radio"."log" ( + "id" serial PRIMARY KEY, + "heard_at" timestamp with time zone DEFAULT now() NOT NULL, + "frequency_id" integer, + "freq_hz" bigint, + "mode" text, + "what" text NOT NULL, + "signal" smallint, + "notes" text, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + CONSTRAINT "log_signal_check" CHECK ("signal" BETWEEN 1 AND 5) +); +--> statement-breakpoint +CREATE TABLE "radio"."nets" ( + "id" serial PRIMARY KEY, + "name" text NOT NULL, + "frequency_id" integer, + "days" smallint[] DEFAULT '{}'::smallint[] NOT NULL, + "times" text[] DEFAULT '{}'::text[] NOT NULL, + "duration_min" integer, + "kind" text DEFAULT 'net' NOT NULL, + "notes" text, + "remind" boolean DEFAULT true NOT NULL, + "active" boolean DEFAULT true NOT NULL, + "sort_order" integer DEFAULT 0 NOT NULL, + "created_at" timestamp with time zone DEFAULT now() NOT NULL, + "updated_at" timestamp with time zone DEFAULT now() NOT NULL, + CONSTRAINT "nets_kind_check" CHECK ("kind" IN ('net','broadcast','other')), + CONSTRAINT "nets_days_check" CHECK ("days" <@ '{1,2,3,4,5,6,7}'::smallint[]), + CONSTRAINT "nets_times_check" CHECK (array_to_string("times", ',') ~ '^(([01][0-9]|2[0-3]):[0-5][0-9](,|$))*$') +); +--> statement-breakpoint +CREATE TABLE "radio"."reminders" ( + "kind" text, + "ref_id" integer, + "at" timestamp with time zone, + "sent_at" timestamp with time zone DEFAULT now() NOT NULL, + CONSTRAINT "reminders_pkey" PRIMARY KEY("kind","ref_id","at"), + CONSTRAINT "reminders_kind_check" CHECK ("kind" IN ('net','iss')) +); +--> statement-breakpoint +CREATE INDEX "channels_frequency_idx" ON "radio"."channels" ("frequency_id");--> statement-breakpoint +CREATE UNIQUE INDEX "frequencies_freq_name_key" ON "radio"."frequencies" ("freq_hz","name");--> statement-breakpoint +CREATE INDEX "frequencies_band_idx" ON "radio"."frequencies" ("band");--> statement-breakpoint +CREATE INDEX "iss_passes_end_idx" ON "radio"."iss_passes" ("end_at");--> statement-breakpoint +CREATE INDEX "log_heard_idx" ON "radio"."log" ("heard_at");--> statement-breakpoint +CREATE INDEX "log_frequency_idx" ON "radio"."log" ("frequency_id");--> statement-breakpoint +ALTER TABLE "radio"."channels" ADD CONSTRAINT "channels_frequency_id_frequencies_id_fkey" FOREIGN KEY ("frequency_id") REFERENCES "radio"."frequencies"("id") ON DELETE CASCADE ON UPDATE CASCADE;--> statement-breakpoint +ALTER TABLE "radio"."log" ADD CONSTRAINT "log_frequency_id_frequencies_id_fkey" FOREIGN KEY ("frequency_id") REFERENCES "radio"."frequencies"("id") ON DELETE SET NULL ON UPDATE CASCADE;--> statement-breakpoint +ALTER TABLE "radio"."nets" ADD CONSTRAINT "nets_frequency_id_frequencies_id_fkey" FOREIGN KEY ("frequency_id") REFERENCES "radio"."frequencies"("id") ON DELETE SET NULL ON UPDATE CASCADE;--> statement-breakpoint +-- Seed: Opa Chiel's lists (airband banks 4-6, marine banks 7-10) and the extras from his notes. +INSERT INTO "radio"."frequencies" (freq_hz, mode, band, name, location, notes, marine_ch, tags, source) +SELECT x.freq_hz, x.mode, x.band, x.name, x.location, x.notes, x.marine_ch, + coalesce(ARRAY(SELECT jsonb_array_elements_text(x.tags)), '{}'), x.source +FROM jsonb_to_recordset($seed$[{"freq_hz": 118100000, "mode": "AM", "band": "air", "name": "Schiphol Tower Primary Baan 18C-36C Zwanenburgbaan", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["tower"], "source": "Opa Chiel"}, {"freq_hz": 118200000, "mode": "AM", "band": "air", "name": "Rotterdam Tower", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["tower"], "source": "Opa Chiel"}, {"freq_hz": 118250000, "mode": "AM", "band": "air", "name": "Brussel Approach", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["approach"], "source": "Opa Chiel"}, {"freq_hz": 118275000, "mode": "AM", "band": "air", "name": "Schiphol Tower Baan 18R-36L Polderbaan Tower West", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["tower"], "source": "Opa Chiel"}, {"freq_hz": 118400000, "mode": "AM", "band": "air", "name": "Schiphol Arrival / London Area Control Sector 14 Clacton W.", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["approach", "acc"], "source": "Opa Chiel"}, {"freq_hz": 118475000, "mode": "AM", "band": "air", "name": "London Area Control Sector 14 Clacton West", "location": "London", "notes": "8.33 kHz channel; actual frequency 118.480 MHz", "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 118800000, "mode": "AM", "band": "air", "name": "Schiphol Radar Sugol", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 119050000, "mode": "AM", "band": "air", "name": "Schiphol Approach Departure TMA East", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["approach"], "source": "Opa Chiel"}, {"freq_hz": 119225000, "mode": "AM", "band": "air", "name": "Schiphol Tower Baan 04-22 Oostbaan en 18L-36R Aalsmeerbaan", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["tower"], "source": "Opa Chiel"}, {"freq_hz": 119575000, "mode": "AM", "band": "air", "name": "Noordzee Heli's", "location": "North Sea", "notes": null, "marine_ch": null, "tags": ["heli"], "source": "Opa Chiel"}, {"freq_hz": 119700000, "mode": "AM", "band": "air", "name": "Rotterdam Tower", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["tower"], "source": "Opa Chiel"}, {"freq_hz": 119900000, "mode": "AM", "band": "air", "name": "Schiphol Tower 06-24 Kaagbaan", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["tower"], "source": "Opa Chiel"}, {"freq_hz": 120125000, "mode": "AM", "band": "air", "name": "Den Helder De Kooy Tower", "location": "Den Helder", "notes": null, "marine_ch": null, "tags": ["tower"], "source": "Opa Chiel"}, {"freq_hz": 120550000, "mode": "AM", "band": "air", "name": "Schiphol Radar IJsselmeer Artip", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 120825000, "mode": "AM", "band": "air", "name": "Nieuw Milligen Dutch Mil Radar Upper", "location": "Nieuw Milligen", "notes": null, "marine_ch": null, "tags": ["radar", "military"], "source": "Opa Chiel"}, {"freq_hz": 121200000, "mode": "AM", "band": "air", "name": "Schiphol Approach Departure TMA West Polderbaan Toren", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["tower", "approach"], "source": "Opa Chiel"}, {"freq_hz": 121500000, "mode": "AM", "band": "air", "name": "International Emergency Frequency", "location": null, "notes": "Guard frequency, monitored by all aircraft.", "marine_ch": null, "tags": ["emergency"], "source": "Opa Chiel"}, {"freq_hz": 121750000, "mode": "AM", "band": "air", "name": "Rotterdam Toren Havendienst / Brussel Luxemburg", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["tower"], "source": "Opa Chiel"}, {"freq_hz": 122175000, "mode": "AM", "band": "air", "name": "Rotterdam Delivery", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 122250000, "mode": "AM", "band": "air", "name": "Luchtballonnen", "location": null, "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 122475000, "mode": "AM", "band": "air", "name": "Zweefvliegtuigen", "location": null, "notes": null, "marine_ch": null, "tags": ["gliders"], "source": "Opa Chiel"}, {"freq_hz": 122500000, "mode": "AM", "band": "air", "name": "Zweefvliegtuigen", "location": null, "notes": null, "marine_ch": null, "tags": ["gliders"], "source": "Opa Chiel"}, {"freq_hz": 122600000, "mode": "AM", "band": "air", "name": "Ballonvaart", "location": null, "notes": null, "marine_ch": null, "tags": ["balloons"], "source": "Opa Chiel"}, {"freq_hz": 122950000, "mode": "AM", "band": "air", "name": "Noordzee Heli's", "location": "North Sea", "notes": null, "marine_ch": null, "tags": ["heli"], "source": "Opa Chiel"}, {"freq_hz": 123100000, "mode": "AM", "band": "air", "name": "Internationaal SAR Europa", "location": null, "notes": null, "marine_ch": null, "tags": ["sar"], "source": "Opa Chiel"}, {"freq_hz": 123175000, "mode": "AM", "band": "air", "name": "Rapcon South Eindhoven Vonkel Gilze Rijen", "location": "Eindhoven", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 123350000, "mode": "AM", "band": "air", "name": "Zweefvliegtuigen", "location": null, "notes": null, "marine_ch": null, "tags": ["gliders"], "source": "Opa Chiel"}, {"freq_hz": 123375000, "mode": "AM", "band": "air", "name": "Zweefvliegtuigen", "location": null, "notes": null, "marine_ch": null, "tags": ["gliders"], "source": "Opa Chiel"}, {"freq_hz": 123425000, "mode": "AM", "band": "air", "name": "Ultra Lights", "location": null, "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 123450000, "mode": "AM", "band": "air", "name": "Landelijk Air to Air Nat. Airdrome Northsea Heli", "location": null, "notes": null, "marine_ch": null, "tags": ["heli"], "source": "Opa Chiel"}, {"freq_hz": 123500000, "mode": "AM", "band": "air", "name": "Zweefvliegtuigen", "location": null, "notes": null, "marine_ch": null, "tags": ["gliders"], "source": "Opa Chiel"}, {"freq_hz": 123575000, "mode": "AM", "band": "air", "name": "Rapcon West Woensdrecht", "location": "Woensdrecht", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 123700000, "mode": "AM", "band": "air", "name": "Schiphol Radar-5 North-West", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 123850000, "mode": "AM", "band": "air", "name": "Schiphol Radar-3 South", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 124225000, "mode": "AM", "band": "air", "name": "Den Helder De Kooy Arrival", "location": "Den Helder", "notes": null, "marine_ch": null, "tags": ["approach"], "source": "Opa Chiel"}, {"freq_hz": 124300000, "mode": "AM", "band": "air", "name": "Schiphol Flight Information Service Over Land en Lifeliner", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["fis"], "source": "Opa Chiel"}, {"freq_hz": 124525000, "mode": "AM", "band": "air", "name": "Eindhoven Arrival", "location": "Eindhoven", "notes": null, "marine_ch": null, "tags": ["approach"], "source": "Opa Chiel"}, {"freq_hz": 124875000, "mode": "AM", "band": "air", "name": "Schiphol Radar-2 East Outbound", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 125000000, "mode": "AM", "band": "air", "name": "Brussel ACC Radar Luxemburg Sector", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["radar", "acc"], "source": "Opa Chiel"}, {"freq_hz": 125175000, "mode": "AM", "band": "air", "name": "Noordzee Heli's", "location": "North Sea", "notes": null, "marine_ch": null, "tags": ["heli"], "source": "Opa Chiel"}, {"freq_hz": 125425000, "mode": "AM", "band": "air", "name": "Landelijk AFIS Hospital Heli", "location": null, "notes": null, "marine_ch": null, "tags": ["heli", "fis"], "source": "Opa Chiel"}, {"freq_hz": 125750000, "mode": "AM", "band": "air", "name": "Schiphol Radar-4 South-West", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 125775000, "mode": "AM", "band": "air", "name": "Brussel ACC Radar West", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["radar", "acc"], "source": "Opa Chiel"}, {"freq_hz": 125925000, "mode": "AM", "band": "air", "name": "Nieuw Milligen Dutch Mil Radar Spire", "location": "Nieuw Milligen", "notes": null, "marine_ch": null, "tags": ["radar", "military"], "source": "Opa Chiel"}, {"freq_hz": 125975000, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Sector Olno High", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 126375000, "mode": "AM", "band": "air", "name": "Brussel ACC Radar North High", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["radar", "acc"], "source": "Opa Chiel"}, {"freq_hz": 126525000, "mode": "AM", "band": "air", "name": "Brussel ACC Radar South Low", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["radar", "acc"], "source": "Opa Chiel"}, {"freq_hz": 126625000, "mode": "AM", "band": "air", "name": "Brussel Airport Departure", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["approach"], "source": "Opa Chiel"}, {"freq_hz": 126675000, "mode": "AM", "band": "air", "name": "Schiphol Arrival Back-Up / Rotterdam Approach Back-Up", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["approach"], "source": "Opa Chiel"}, {"freq_hz": 126775000, "mode": "AM", "band": "air", "name": "London Area Control Sector 11 Noordzee", "location": "London", "notes": "8.33 kHz channel; actual frequency 126.780 MHz", "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 127025000, "mode": "AM", "band": "air", "name": "Rotterdam Approach", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["approach"], "source": "Opa Chiel"}, {"freq_hz": 127225000, "mode": "AM", "band": "air", "name": "Brussel ACC Radar West High", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["radar", "acc"], "source": "Opa Chiel"}, {"freq_hz": 127425000, "mode": "AM", "band": "air", "name": "London Area Control Sector 02 Upper Sector Oosten", "location": "London", "notes": "8.33 kHz channel; actual frequency 127.430 MHz", "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 128000000, "mode": "AM", "band": "air", "name": "Schiphol Politie Landelijke Eenheid Schiphol-Oost", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["police"], "source": "Opa Chiel"}, {"freq_hz": 128125000, "mode": "AM", "band": "air", "name": "London Area Control Sector 10 Noordzee", "location": "London", "notes": null, "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 128158300, "mode": "AM", "band": "air", "name": "London Area Control Sector 13 Clacton West", "location": "London", "notes": "8.33 kHz channel; actual frequency 128.160 MHz", "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 128200000, "mode": "AM", "band": "air", "name": "Brussel ACC Radar East", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["radar", "acc"], "source": "Opa Chiel"}, {"freq_hz": 128350000, "mode": "AM", "band": "air", "name": "Nieuw Milligen Dutch Mil Radar Lower", "location": "Nieuw Milligen", "notes": null, "marine_ch": null, "tags": ["radar", "military"], "source": "Opa Chiel"}, {"freq_hz": 128425000, "mode": "AM", "band": "air", "name": "London Area Control Sector 17 Lydd", "location": "London", "notes": null, "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 128450000, "mode": "AM", "band": "air", "name": "Brussel ACC Radar Luxemburg Sector", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["radar", "acc"], "source": "Opa Chiel"}, {"freq_hz": 128575000, "mode": "AM", "band": "air", "name": "Schiphol Radar-2 East Inbound", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 128800000, "mode": "AM", "band": "air", "name": "Brussel ACC Radar North Low", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["radar", "acc"], "source": "Opa Chiel"}, {"freq_hz": 129575000, "mode": "AM", "band": "air", "name": "Brussel ACC Radar East Low", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["radar", "acc"], "source": "Opa Chiel"}, {"freq_hz": 129650000, "mode": "AM", "band": "air", "name": "Brussel ACC Radar East Low", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["radar", "acc"], "source": "Opa Chiel"}, {"freq_hz": 129975000, "mode": "AM", "band": "air", "name": "Zweefvliegtuigen", "location": null, "notes": null, "marine_ch": null, "tags": ["gliders"], "source": "Opa Chiel"}, {"freq_hz": 130000000, "mode": "AM", "band": "air", "name": "Lelystad Heli Holland", "location": "Lelystad", "notes": null, "marine_ch": null, "tags": ["heli"], "source": "Opa Chiel"}, {"freq_hz": 130125000, "mode": "AM", "band": "air", "name": "Zweefvliegtuigen", "location": null, "notes": null, "marine_ch": null, "tags": ["gliders"], "source": "Opa Chiel"}, {"freq_hz": 130300000, "mode": "AM", "band": "air", "name": "Nationaal Airdromes Heli", "location": null, "notes": null, "marine_ch": null, "tags": ["heli"], "source": "Opa Chiel"}, {"freq_hz": 130950000, "mode": "AM", "band": "air", "name": "Schiphol Radar-3 South Inbound", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 131100000, "mode": "AM", "band": "air", "name": "Brussel ACC Radar West en Koksijde", "location": "Brussels", "notes": null, "marine_ch": null, "tags": ["radar", "acc"], "source": "Opa Chiel"}, {"freq_hz": 131150000, "mode": "AM", "band": "air", "name": "Schiphol Arrival Secondary", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["approach"], "source": "Opa Chiel"}, {"freq_hz": 131375000, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Solling High Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 131400000, "mode": "AM", "band": "air", "name": "Schiphol Servisair / Eelde OPC", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["ops"], "source": "Opa Chiel"}, {"freq_hz": 131416600, "mode": "AM", "band": "air", "name": "Schiphol KLM TLO B/C/D KLM Teamleiders", "location": "Schiphol", "notes": "8.33 kHz channel; actual frequency 131.4150 MHz", "marine_ch": null, "tags": ["airline"], "source": "Opa Chiel"}, {"freq_hz": 131425000, "mode": "AM", "band": "air", "name": "Schiphol KLC Operations / Brussel Oostende", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["ops"], "source": "Opa Chiel"}, {"freq_hz": 131433000, "mode": "AM", "band": "air", "name": "Schiphol KLM Flow Control", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["airline"], "source": "Opa Chiel"}, {"freq_hz": 131450000, "mode": "AM", "band": "air", "name": "Rotterdam OPC / Oostende OPC", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["ops"], "source": "Opa Chiel"}, {"freq_hz": 131475000, "mode": "AM", "band": "air", "name": "Schiphol Martinair", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["airline"], "source": "Opa Chiel"}, {"freq_hz": 131483300, "mode": "AM", "band": "air", "name": "Schiphol", "location": "Schiphol", "notes": "8.33 kHz channel; actual frequency 131.4830 MHz", "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 131500000, "mode": "AM", "band": "air", "name": "Schiphol EL-AL / Rotterdam OPC / Brussel", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["ops"], "source": "Opa Chiel"}, {"freq_hz": 131550000, "mode": "AM", "band": "air", "name": "Schiphol BA Engineering / Rotterdam", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 131558300, "mode": "AM", "band": "air", "name": "Schiphol Swissport Operations", "location": "Schiphol", "notes": "8.33 kHz channel; actual frequency 131.5600 MHz", "marine_ch": null, "tags": ["ops"], "source": "Opa Chiel"}, {"freq_hz": 131566600, "mode": "AM", "band": "air", "name": "Schiphol Jet Nederland / Rotterdam OPC", "location": "Schiphol", "notes": "8.33 kHz channel; actual frequency 131.5650 MHz", "marine_ch": null, "tags": ["ops"], "source": "Opa Chiel"}, {"freq_hz": 131575000, "mode": "AM", "band": "air", "name": "Schiphol Aviapartner Operations / Rotterdam OPC", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["ops"], "source": "Opa Chiel"}, {"freq_hz": 131600000, "mode": "AM", "band": "air", "name": "Schiphol Japan Airlines en Heli's", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["heli"], "source": "Opa Chiel"}, {"freq_hz": 131625000, "mode": "AM", "band": "air", "name": "Schiphol KLM Jet Center", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["airline"], "source": "Opa Chiel"}, {"freq_hz": 131650000, "mode": "AM", "band": "air", "name": "Schiphol KLM Operations", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["ops", "airline"], "source": "Opa Chiel"}, {"freq_hz": 131683300, "mode": "AM", "band": "air", "name": "Schiphol TUI", "location": "Schiphol", "notes": "8.33 kHz channel; actual frequency 131.6850 MHz", "marine_ch": null, "tags": ["airline"], "source": "Opa Chiel"}, {"freq_hz": 131750000, "mode": "AM", "band": "air", "name": "Schiphol Nayak / Rotterdam / Eelde / Middelburg", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 131775000, "mode": "AM", "band": "air", "name": "Bergen op Zoom Helicon Company / Ede / Luxemburg / Lelystad", "location": "Lelystad", "notes": null, "marine_ch": null, "tags": ["heli"], "source": "Opa Chiel"}, {"freq_hz": 131800000, "mode": "AM", "band": "air", "name": "Schiphol Menzies Operations", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["ops"], "source": "Opa Chiel"}, {"freq_hz": 131850000, "mode": "AM", "band": "air", "name": "Schiphol / Rotterdam / Oostende", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 131875000, "mode": "AM", "band": "air", "name": "Schiphol Jet Support Operations", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["ops"], "source": "Opa Chiel"}, {"freq_hz": 131900000, "mode": "AM", "band": "air", "name": "Schiphol Transavia", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["airline"], "source": "Opa Chiel"}, {"freq_hz": 131925000, "mode": "AM", "band": "air", "name": "Schiphol Martinair Operations", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["ops", "airline"], "source": "Opa Chiel"}, {"freq_hz": 131941600, "mode": "AM", "band": "air", "name": "Schiphol KLM Maintenance", "location": "Schiphol", "notes": "8.33 kHz channel; actual frequency 131.9400 MHz", "marine_ch": null, "tags": ["airline"], "source": "Opa Chiel"}, {"freq_hz": 131958300, "mode": "AM", "band": "air", "name": "Schiphol KLM TLO E/F/G", "location": "Schiphol", "notes": "8.33 kHz channel; actual frequency 131.9600 MHz", "marine_ch": null, "tags": ["airline"], "source": "Opa Chiel"}, {"freq_hz": 131975000, "mode": "AM", "band": "air", "name": "Schiphol KLC Maintenance / Rotterdam", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 132025000, "mode": "AM", "band": "air", "name": "Rapcon North Leeuwarden en De Kooy", "location": "Leeuwarden", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 132083300, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Delta High Sector", "location": "Maastricht", "notes": "8.33 kHz channel; actual frequency 132.0850 MHz", "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 132200000, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Koksy Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 132316600, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Lux High Sector", "location": "Maastricht", "notes": "8.33 kHz channel; actual frequency 132.3150 MHz", "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 132608300, "mode": "AM", "band": "air", "name": "London Area Control Sector 26 London Midden", "location": "London", "notes": "8.33 kHz channel; actual frequency 132.6050 MHz", "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 132841600, "mode": "AM", "band": "air", "name": "London Area Control Sector 01 West", "location": "London", "notes": "8.33 kHz channel; actual frequency 132.8400 MHz", "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 132350000, "mode": "AM", "band": "air", "name": "Nieuw Milligen Dutch Mil Info en Lifeliner", "location": "Nieuw Milligen", "notes": null, "marine_ch": null, "tags": ["military"], "source": "Opa Chiel"}, {"freq_hz": 132516600, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Ruhr Sector", "location": "Maastricht", "notes": "8.33 kHz channel; actual frequency 132.5150 MHz", "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 132525000, "mode": "AM", "band": "air", "name": "Nieuw Milligen Dutch Mil Radar Lower", "location": "Nieuw Milligen", "notes": null, "marine_ch": null, "tags": ["radar", "military"], "source": "Opa Chiel"}, {"freq_hz": 132633300, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Delta Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 132700000, "mode": "AM", "band": "air", "name": "Schiphol Radar Noord West", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 132750000, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Koksy High en Nicky High Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 132850000, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Olno Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 133216600, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Jever en Munster Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 133350000, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Lux Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 133450000, "mode": "AM", "band": "air", "name": "London Area Control Sector 12 Clacton-Oosten", "location": "London", "notes": null, "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 133708300, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Lux en Olno Sector", "location": "Maastricht", "notes": "8.33 kHz channel; actual frequency 133.7100 MHz", "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 133850000, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Koksy Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 133941600, "mode": "AM", "band": "air", "name": "London Area Control Sector 12 Clacton Oosten", "location": "London", "notes": "8.33 kHz channel; actual frequency 133.9400 MHz", "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 133950000, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Cello Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 134325000, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Lux en Orno Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 134375000, "mode": "AM", "band": "air", "name": "Schiphol Radar-1 North", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 134450000, "mode": "AM", "band": "air", "name": "London Area Control Sector 16 Dover Low", "location": "London", "notes": null, "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 134458300, "mode": "AM", "band": "air", "name": "London Area Control Sector 24 London Upper Sector N.", "location": "London", "notes": "8.33 kHz channel; actual frequency 134.4600 MHz", "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 134700000, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Jever High Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 134875000, "mode": "AM", "band": "air", "name": "Schiphol Tower Traffic", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["tower"], "source": "Opa Chiel"}, {"freq_hz": 134900000, "mode": "AM", "band": "air", "name": "London Area Control Sector 15 Dover Low", "location": "London", "notes": null, "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 135491600, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Ruhr Sector", "location": "Maastricht", "notes": "8.33 kHz channel; actual frequency 135.4900 MHz", "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 135958300, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Delta Sector", "location": "Maastricht", "notes": "8.33 kHz channel; actual frequency 135.9600 MHz", "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 135975000, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Flevo en Nicky Sector", "location": "Maastricht", "notes": null, "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 136466600, "mode": "AM", "band": "air", "name": "Maastricht Radar Eurocontrol Jever Sector", "location": "Maastricht", "notes": "8.33 kHz channel; actual frequency 136.4650 MHz", "marine_ch": null, "tags": ["radar"], "source": "Opa Chiel"}, {"freq_hz": 136600000, "mode": "AM", "band": "air", "name": "London Area Control Sector 16 Dover High", "location": "London", "notes": null, "marine_ch": null, "tags": ["acc"], "source": "Opa Chiel"}, {"freq_hz": 136650000, "mode": "AM", "band": "air", "name": "Schiphol Flight Information Service Northsea South", "location": "Schiphol", "notes": null, "marine_ch": null, "tags": ["fis"], "source": "Opa Chiel"}, {"freq_hz": 162475000, "mode": "FM", "band": "marine", "name": "Kustwacht vliegtuig / Douane boot", "location": null, "notes": "Marine ch 97 (duplex shore side). Same frequency as scanner ch 355.", "marine_ch": "97", "tags": ["coastguard", "customs"], "source": "Opa Chiel"}, {"freq_hz": 157050000, "mode": "FM", "band": "marine", "name": "Scheveningen VC Schip", "location": "Scheveningen", "notes": null, "marine_ch": "21", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 161650000, "mode": "FM", "band": "marine", "name": "Scheveningen VC Wal", "location": "Scheveningen", "notes": null, "marine_ch": "21", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 152587500, "mode": "NFM", "band": "marine", "name": "Scheveningen Havendienst Den Haag Brugwachters", "location": "Scheveningen", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156300000, "mode": "FM", "band": "marine", "name": "Scheveningen Sleepdienst en onderling schepen", "location": "Scheveningen", "notes": null, "marine_ch": "06", "tags": ["tugs"], "source": "Opa Chiel"}, {"freq_hz": 160900000, "mode": "FM", "band": "marine", "name": "Baggerschepen", "location": null, "notes": null, "marine_ch": "06", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157550000, "mode": "FM", "band": "marine", "name": "Scheveningen Jachthaven Marina Jachtclub Schip", "location": "Scheveningen", "notes": null, "marine_ch": "31", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162150000, "mode": "FM", "band": "marine", "name": "Scheveningen Jachthaven Marina Jachtclub Wal", "location": "Scheveningen", "notes": null, "marine_ch": "31", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156475000, "mode": "FM", "band": "marine", "name": "Scheveningen WK Zeilen", "location": "Scheveningen", "notes": null, "marine_ch": "69", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161075000, "mode": "FM", "band": "marine", "name": "Rotterdam Loodsen Rotterdam - Rijnmond", "location": "Rotterdam", "notes": null, "marine_ch": "69", "tags": ["pilots"], "source": "Opa Chiel"}, {"freq_hz": 156625000, "mode": "FM", "band": "marine", "name": "Scheveningen Haagse Kust Zeilvereniging", "location": "Scheveningen", "notes": null, "marine_ch": "72", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161225000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 72 (wal)", "location": null, "notes": null, "marine_ch": "72", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156875000, "mode": "FM", "band": "marine", "name": "Scheveningen WK Zeilen Egmond aan Zee", "location": "Scheveningen", "notes": null, "marine_ch": "77", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161475000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 77 (wal)", "location": null, "notes": null, "marine_ch": "77", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156050000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Maas Approach Schip", "location": "Rotterdam", "notes": null, "marine_ch": "01", "tags": ["approach", "vts"], "source": "Opa Chiel"}, {"freq_hz": 160650000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Maas Approach Wal", "location": "Rotterdam", "notes": null, "marine_ch": "01", "tags": ["approach", "vts"], "source": "Opa Chiel"}, {"freq_hz": 156100000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Pilot Maas Schip", "location": "Rotterdam", "notes": null, "marine_ch": "02", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 160700000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Pilot Maas Wal", "location": "Rotterdam", "notes": null, "marine_ch": "02", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 156150000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Maasmond Schip", "location": "Rotterdam", "notes": null, "marine_ch": "03", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 160750000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Maasmond Wal", "location": "Rotterdam", "notes": null, "marine_ch": "03", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 156250000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Maasvlakte Schip", "location": "Rotterdam", "notes": null, "marine_ch": "05", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 160850000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Maasvlakte Wal", "location": "Rotterdam", "notes": null, "marine_ch": "05", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 156275000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Rozenburg Schip", "location": "Rotterdam", "notes": null, "marine_ch": "65", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 160875000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Rozenburg Wal", "location": "Rotterdam", "notes": null, "marine_ch": "65", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 156325000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Europoort Schip", "location": "Rotterdam", "notes": null, "marine_ch": "66", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 160925000, "mode": "FM", "band": "marine", "name": "HvH VC Sector Europoort", "location": "Rotterdam", "notes": null, "marine_ch": "66", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 156550000, "mode": "FM", "band": "marine", "name": "HvH Traffic Center TCR Rotterdam Port Authority", "location": "Rotterdam", "notes": null, "marine_ch": "11", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161150000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 11 (wal)", "location": null, "notes": null, "marine_ch": "11", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156700000, "mode": "FM", "band": "marine", "name": "Rotterdam Centrale Meldkamer HCC Wal", "location": "Rotterdam", "notes": null, "marine_ch": "14", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161300000, "mode": "FM", "band": "marine", "name": "Rotterdam Centrale Meldkamer HCC", "location": "Rotterdam", "notes": null, "marine_ch": "14", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156950000, "mode": "FM", "band": "marine", "name": "Rotterdam Coordinatie Centrum HCC Schip", "location": "Rotterdam", "notes": null, "marine_ch": "19", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161550000, "mode": "FM", "band": "marine", "name": "Rotterdam Coordinatie Centrum HCC Wal", "location": "Rotterdam", "notes": null, "marine_ch": "19", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156025000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Waalhaven Schip", "location": "Rotterdam", "notes": null, "marine_ch": "60", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 160625000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Waalhaven Wal", "location": "Rotterdam", "notes": null, "marine_ch": "60", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 156075000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Botlek Schip", "location": "Rotterdam", "notes": null, "marine_ch": "61", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 160675000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Botlek Wal", "location": "Rotterdam", "notes": null, "marine_ch": "61", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 156125000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Oude Maas Schip", "location": "Rotterdam", "notes": null, "marine_ch": "62", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 160725000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Oude Maas Wal", "location": "Rotterdam", "notes": null, "marine_ch": "62", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 156175000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Eemhaven Schip", "location": "Rotterdam", "notes": null, "marine_ch": "63", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 160775000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Eemhaven Wal", "location": "Rotterdam", "notes": null, "marine_ch": "63", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 157025000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Maassluis Schip", "location": "Rotterdam", "notes": null, "marine_ch": "80", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 161625000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Maassluis Wal", "location": "Rotterdam", "notes": null, "marine_ch": "80", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 157075000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Maasbruggen Schip", "location": "Rotterdam", "notes": null, "marine_ch": "81", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 161675000, "mode": "FM", "band": "marine", "name": "Rotterdam VC Sector Maasbruggen Wal", "location": "Rotterdam", "notes": null, "marine_ch": "81", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 156000000, "mode": "FM", "band": "marine", "name": "Reddings Posten Nederlandse Kust KNRM-KNBRD", "location": null, "notes": null, "marine_ch": "00", "tags": ["rescue"], "source": "Opa Chiel"}, {"freq_hz": 160600000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 00 (wal)", "location": null, "notes": null, "marine_ch": "00", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156800000, "mode": "FM", "band": "marine", "name": "Kustwacht Nood, Spoed, Veiligheid en Aanroepkanaal", "location": null, "notes": null, "marine_ch": "16", "tags": ["coastguard", "emergency"], "source": "Opa Chiel"}, {"freq_hz": 161400000, "mode": "FM", "band": "marine", "name": "Scheveningen Sportvisserij Vrolijk en Trip P2", "location": "Scheveningen", "notes": null, "marine_ch": "16", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157150000, "mode": "FM", "band": "marine", "name": "Kustwacht Schip", "location": null, "notes": null, "marine_ch": "23", "tags": ["coastguard"], "source": "Opa Chiel"}, {"freq_hz": 161750000, "mode": "FM", "band": "marine", "name": "Kustwacht Wal", "location": null, "notes": null, "marine_ch": "23", "tags": ["coastguard"], "source": "Opa Chiel"}, {"freq_hz": 156375000, "mode": "FM", "band": "marine", "name": "Kustwacht Reddingsboten Opsporing en Redding SAR", "location": null, "notes": null, "marine_ch": "67", "tags": ["sar", "rescue", "coastguard"], "source": "Opa Chiel"}, {"freq_hz": 160975000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 67 (wal)", "location": null, "notes": null, "marine_ch": "67", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157175000, "mode": "FM", "band": "marine", "name": "Kustwacht Schip Scheveningen", "location": "Scheveningen", "notes": null, "marine_ch": "83", "tags": ["coastguard"], "source": "Opa Chiel"}, {"freq_hz": 161775000, "mode": "FM", "band": "marine", "name": "Kustwacht Wal Scheveningen", "location": "Scheveningen", "notes": "Weather (weerbericht) 13:05 and 19:05, navigational warnings 17:30.", "marine_ch": "83", "tags": ["coastguard"], "source": "Opa Chiel"}, {"freq_hz": 157875000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 97 (schip)", "location": null, "notes": null, "marine_ch": "97", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162475000, "mode": "FM", "band": "marine", "name": "Kustwacht Reserve kanaal en Vliegtuig Kustwacht", "location": null, "notes": null, "marine_ch": "97", "tags": ["coastguard"], "source": "Opa Chiel"}, {"freq_hz": 156200000, "mode": "FM", "band": "marine", "name": "Dordrecht Sector Heerjansdam Schip", "location": "Dordrecht", "notes": null, "marine_ch": "04", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 160800000, "mode": "FM", "band": "marine", "name": "Dordrecht Sector Heerjansdam Wal", "location": "Dordrecht", "notes": null, "marine_ch": "04", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156575000, "mode": "FM", "band": "marine", "name": "Dordrecht Verkeers Post", "location": "Dordrecht", "notes": null, "marine_ch": "71", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 161175000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 71 (wal)", "location": null, "notes": null, "marine_ch": "71", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156725000, "mode": "FM", "band": "marine", "name": "Dordrecht Centrale Brug Bed .Havend IJmuiden Seaport", "location": "Dordrecht", "notes": null, "marine_ch": "74", "tags": ["bridges"], "source": "Opa Chiel"}, {"freq_hz": 161325000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 74 (wal)", "location": null, "notes": null, "marine_ch": "74", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156975000, "mode": "FM", "band": "marine", "name": "Dordrecht VC Sector Dordrecht", "location": "Dordrecht", "notes": null, "marine_ch": "79", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 161575000, "mode": "FM", "band": "marine", "name": "Dordrecht VC Sector Dordrecht", "location": "Dordrecht", "notes": null, "marine_ch": "79", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 156600000, "mode": "FM", "band": "marine", "name": "IJmuiden Zeehaven Havenoperaties Rotterdam HAL", "location": "Rotterdam", "notes": null, "marine_ch": "12", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161200000, "mode": "FM", "band": "marine", "name": "Baggerkanaal", "location": null, "notes": null, "marine_ch": "12", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156425000, "mode": "FM", "band": "marine", "name": "Maassluis Havenkantoor", "location": "Maassluis", "notes": null, "marine_ch": "68", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161025000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 68 (wal)", "location": null, "notes": null, "marine_ch": "68", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157125000, "mode": "FM", "band": "marine", "name": "Rotterdam Drinkwaterboot Bunkering en Proviand Schip", "location": "Rotterdam", "notes": null, "marine_ch": "82", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161725000, "mode": "FM", "band": "marine", "name": "Rotterdam Drinkwaterboot Bunkering en Proviand Wal", "location": "Rotterdam", "notes": null, "marine_ch": "82", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157375000, "mode": "FM", "band": "marine", "name": "Ouddorp Zeeverkeerspost Rotterdam Spido", "location": "Rotterdam", "notes": null, "marine_ch": "87", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161975000, "mode": "FM", "band": "marine", "name": "AIS 1", "location": null, "notes": "Ship positions (data, not voice).", "marine_ch": "87", "tags": ["ais"], "source": "Opa Chiel"}, {"freq_hz": 157425000, "mode": "FM", "band": "marine", "name": "Scheveningen WK Zeilen Spido", "location": "Scheveningen", "notes": null, "marine_ch": "88", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162025000, "mode": "FM", "band": "marine", "name": "AIS 2", "location": null, "notes": "Ship positions (data, not voice).", "marine_ch": "88", "tags": ["ais"], "source": "Opa Chiel"}, {"freq_hz": 158470000, "mode": "NFM", "band": "marine", "name": "Rotterdam Roeiers Veren. Eendracht RVE", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["boatmen"], "source": "Opa Chiel"}, {"freq_hz": 158590000, "mode": "NFM", "band": "marine", "name": "Rotterdam Roeiers Maasvlakte", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["boatmen"], "source": "Opa Chiel"}, {"freq_hz": 160110000, "mode": "NFM", "band": "marine", "name": "Rotterdam Roeiers Veren. Eendracht RVE", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["boatmen"], "source": "Opa Chiel"}, {"freq_hz": 160550000, "mode": "NFM", "band": "marine", "name": "Rotterdam Roeiers Veren. Eendracht RVE Europoort-Maasvlakte", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["boatmen"], "source": "Opa Chiel"}, {"freq_hz": 159930000, "mode": "NFM", "band": "marine", "name": "Rotterdam Sleep Dienst Storno 1 Kanaal 41 Maasvlakte", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["tugs"], "source": "Opa Chiel"}, {"freq_hz": 160230000, "mode": "NFM", "band": "marine", "name": "Rotterdam Sleep Dienst Storno 3 Kanaal 43 Waalhaven", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["tugs"], "source": "Opa Chiel"}, {"freq_hz": 160330000, "mode": "NFM", "band": "marine", "name": "Rotterdam Sleep Dienst Storno 4 Kanaal 44 Oosten EECV", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["tugs"], "source": "Opa Chiel"}, {"freq_hz": 160430000, "mode": "NFM", "band": "marine", "name": "Rotterdam Sleep Dienst Storno 5 Kanaal 45 Westen EECV", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["tugs"], "source": "Opa Chiel"}, {"freq_hz": 160510000, "mode": "NFM", "band": "marine", "name": "Rotterdam Sleep Dienst Storno 2 Kanaal 42 Eemhaven", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["tugs"], "source": "Opa Chiel"}, {"freq_hz": 168710000, "mode": "NFM", "band": "marine", "name": "Rotterdam Watertaxi Kanaal 2", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["watertaxi"], "source": "Opa Chiel"}, {"freq_hz": 169030000, "mode": "NFM", "band": "marine", "name": "Rotterdam Watertaxi Kanaal 1", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": ["watertaxi"], "source": "Opa Chiel"}, {"freq_hz": 156400000, "mode": "FM", "band": "marine", "name": "Nautisch Intership Sleepdienst en onderling schepen", "location": null, "notes": null, "marine_ch": "08", "tags": ["tugs"], "source": "Opa Chiel"}, {"freq_hz": 161000000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 08 (wal)", "location": null, "notes": null, "marine_ch": "08", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156450000, "mode": "FM", "band": "marine", "name": "Nautisch Gebruik Diverse", "location": null, "notes": null, "marine_ch": "09", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161050000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 09 (wal)", "location": null, "notes": null, "marine_ch": "09", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156500000, "mode": "FM", "band": "marine", "name": "Nautisch Intership Verkeer Aanroep Binnenwater", "location": null, "notes": null, "marine_ch": "10", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161100000, "mode": "FM", "band": "marine", "name": "Rotterdam Loodsen Roeiers Sleepboten", "location": "Rotterdam", "notes": null, "marine_ch": "10", "tags": ["tugs", "pilots", "boatmen"], "source": "Opa Chiel"}, {"freq_hz": 157600000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Smit Havensleepdiensten Schip", "location": null, "notes": null, "marine_ch": "32", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162200000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Smit Havensleepdiensten Wal", "location": null, "notes": null, "marine_ch": "32", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157650000, "mode": "FM", "band": "marine", "name": "Rijkswaterstaat Schip", "location": null, "notes": null, "marine_ch": "33", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162250000, "mode": "FM", "band": "marine", "name": "Rotterdam Sleep Dienst Storno 7 Kanaal 47 Reserve Kanaal", "location": "Rotterdam", "notes": null, "marine_ch": "33", "tags": ["tugs"], "source": "Opa Chiel"}, {"freq_hz": 157975000, "mode": "FM", "band": "marine", "name": "Rotterdam Sleep Dienst Storno 6 Kanaal 46 Maasvlakte", "location": "Rotterdam", "notes": null, "marine_ch": "99", "tags": ["tugs"], "source": "Opa Chiel"}, {"freq_hz": 162575000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 99 (wal)", "location": null, "notes": null, "marine_ch": "99", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156650000, "mode": "FM", "band": "marine", "name": "Nautisch Intership Verkeer", "location": null, "notes": null, "marine_ch": "13", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161250000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 13 (wal)", "location": null, "notes": null, "marine_ch": "13", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156750000, "mode": "FM", "band": "marine", "name": "Onboard Portofoon Verkeer", "location": null, "notes": null, "marine_ch": "15", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161350000, "mode": "FM", "band": "marine", "name": "Onboard Portofoon", "location": null, "notes": null, "marine_ch": "15", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156850000, "mode": "FM", "band": "marine", "name": "Onboard Portofoon Verkeer", "location": null, "notes": null, "marine_ch": "17", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161450000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 17 (wal)", "location": null, "notes": null, "marine_ch": "17", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156350000, "mode": "FM", "band": "marine", "name": "Sluizen Volkeraksluizen Noord Schip", "location": "Volkerak", "notes": null, "marine_ch": "07", "tags": ["locks"], "source": "Opa Chiel"}, {"freq_hz": 160950000, "mode": "FM", "band": "marine", "name": "Sluizen Volkeraksluizen Noord Wal", "location": "Volkerak", "notes": null, "marine_ch": "07", "tags": ["locks"], "source": "Opa Chiel"}, {"freq_hz": 156900000, "mode": "FM", "band": "marine", "name": "Sluizen Volkeraksluizen Jachtensluis Bruggen Den Haag Schip", "location": "Volkerak", "notes": null, "marine_ch": "18", "tags": ["locks", "bridges"], "source": "Opa Chiel"}, {"freq_hz": 161500000, "mode": "FM", "band": "marine", "name": "Sluizen Volkeraksluizen Jachtensluis Bruggen Den Haag Wal", "location": "Volkerak", "notes": null, "marine_ch": "18", "tags": ["locks", "bridges"], "source": "Opa Chiel"}, {"freq_hz": 157000000, "mode": "FM", "band": "marine", "name": "Bruggen en Sluizen Schip", "location": null, "notes": null, "marine_ch": "20", "tags": ["locks", "bridges"], "source": "Opa Chiel"}, {"freq_hz": 161600000, "mode": "FM", "band": "marine", "name": "Bruggen en Sluizen Wal", "location": null, "notes": null, "marine_ch": "20", "tags": ["locks", "bridges"], "source": "Opa Chiel"}, {"freq_hz": 157100000, "mode": "FM", "band": "marine", "name": "Bruggen en Sluizen Schip", "location": null, "notes": null, "marine_ch": "22", "tags": ["locks", "bridges"], "source": "Opa Chiel"}, {"freq_hz": 161700000, "mode": "FM", "band": "marine", "name": "Bruggen en Sluizen Wal", "location": null, "notes": null, "marine_ch": "22", "tags": ["locks", "bridges"], "source": "Opa Chiel"}, {"freq_hz": 156225000, "mode": "FM", "band": "marine", "name": "Sluizen Volkeraksluizen Volgsysteem Schip", "location": "Volkerak", "notes": null, "marine_ch": "64", "tags": ["locks"], "source": "Opa Chiel"}, {"freq_hz": 160825000, "mode": "FM", "band": "marine", "name": "Sluizen Volkeraksluizen Volgsysteem Wal", "location": "Volkerak", "notes": null, "marine_ch": "64", "tags": ["locks"], "source": "Opa Chiel"}, {"freq_hz": 156925000, "mode": "FM", "band": "marine", "name": "Sluizen Volkeraksluizen Zuid Schip", "location": "Volkerak", "notes": null, "marine_ch": "78", "tags": ["locks"], "source": "Opa Chiel"}, {"freq_hz": 161525000, "mode": "FM", "band": "marine", "name": "Sluizen Volkeraksluizen Zuid Wal", "location": "Volkerak", "notes": null, "marine_ch": "78", "tags": ["locks"], "source": "Opa Chiel"}, {"freq_hz": 157225000, "mode": "FM", "band": "marine", "name": "Bruggen en Sluizen Schip", "location": null, "notes": null, "marine_ch": "84", "tags": ["locks", "bridges"], "source": "Opa Chiel"}, {"freq_hz": 161825000, "mode": "FM", "band": "marine", "name": "Bruggen en Sluizen Wal", "location": null, "notes": null, "marine_ch": "84", "tags": ["locks", "bridges"], "source": "Opa Chiel"}, {"freq_hz": 157275000, "mode": "FM", "band": "marine", "name": "Bruggen en Sluizen Schip", "location": null, "notes": null, "marine_ch": "85", "tags": ["locks", "bridges"], "source": "Opa Chiel"}, {"freq_hz": 161875000, "mode": "FM", "band": "marine", "name": "Bruggen en Sluizen Wal", "location": null, "notes": null, "marine_ch": "85", "tags": ["locks", "bridges"], "source": "Opa Chiel"}, {"freq_hz": 157200000, "mode": "FM", "band": "marine", "name": "Nautische Informatie Schip", "location": null, "notes": null, "marine_ch": "24", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161800000, "mode": "FM", "band": "marine", "name": "Nautische Informatie Wal", "location": null, "notes": null, "marine_ch": "24", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157250000, "mode": "FM", "band": "marine", "name": "Verkeersbegeleiding Schip", "location": null, "notes": null, "marine_ch": "25", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 161850000, "mode": "FM", "band": "marine", "name": "Verkeersbegeleiding Wal", "location": null, "notes": null, "marine_ch": "25", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 157300000, "mode": "FM", "band": "marine", "name": "Nautische Informatie Schip", "location": null, "notes": null, "marine_ch": "26", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161900000, "mode": "FM", "band": "marine", "name": "Nautische Informatie Wal", "location": null, "notes": null, "marine_ch": "26", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157350000, "mode": "FM", "band": "marine", "name": "Verkeersbegeleiding Schip", "location": null, "notes": null, "marine_ch": "27", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 161950000, "mode": "FM", "band": "marine", "name": "Verkeersbegeleiding Wal", "location": null, "notes": null, "marine_ch": "27", "tags": ["vts"], "source": "Opa Chiel"}, {"freq_hz": 157400000, "mode": "FM", "band": "marine", "name": "Nautische Informatie Schip", "location": null, "notes": null, "marine_ch": "28", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162000000, "mode": "FM", "band": "marine", "name": "Nautische Informatie Wal", "location": null, "notes": null, "marine_ch": "28", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157450000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Schip", "location": null, "notes": null, "marine_ch": "29", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162050000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Wal", "location": null, "notes": null, "marine_ch": "29", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157500000, "mode": "FM", "band": "marine", "name": "Scheepvaart bedrijven Loodskanaal naar Laad Losplaatsen Schip", "location": null, "notes": null, "marine_ch": "30", "tags": ["pilots"], "source": "Opa Chiel"}, {"freq_hz": 162100000, "mode": "FM", "band": "marine", "name": "Scheepvaart bedrijven Loodskanaal naar Laad Losplaatsen Wal", "location": null, "notes": null, "marine_ch": "30", "tags": ["pilots"], "source": "Opa Chiel"}, {"freq_hz": 157700000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Schip", "location": null, "notes": null, "marine_ch": "34", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162300000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Wal", "location": null, "notes": null, "marine_ch": "34", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157750000, "mode": "FM", "band": "marine", "name": "Rijkswaterstaat Schip HvH P&O Trailer Chauffeurs", "location": "Rotterdam", "notes": null, "marine_ch": "35", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162350000, "mode": "FM", "band": "marine", "name": "Rijkswaterstaat Wal P&O Benelux Haven Pride Of Hull - Rott", "location": null, "notes": null, "marine_ch": "35", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157800000, "mode": "FM", "band": "marine", "name": "Rijkswaterstaat Schip", "location": null, "notes": null, "marine_ch": "36", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162400000, "mode": "FM", "band": "marine", "name": "Rijkswaterstaat Wal", "location": null, "notes": null, "marine_ch": "36", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157850000, "mode": "FM", "band": "marine", "name": "Rijkswaterstaat Jachthavens", "location": null, "notes": null, "marine_ch": "37", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162450000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 37 (wal)", "location": null, "notes": null, "marine_ch": "37", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157900000, "mode": "FM", "band": "marine", "name": "Rijkswaterstaat Schip", "location": null, "notes": null, "marine_ch": "38", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162500000, "mode": "FM", "band": "marine", "name": "Rijkswaterstaat Wal", "location": null, "notes": null, "marine_ch": "38", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157950000, "mode": "FM", "band": "marine", "name": "Rijkswaterstaat Korps Landelijke Politie Diensten", "location": null, "notes": null, "marine_ch": "39", "tags": ["police"], "source": "Opa Chiel"}, {"freq_hz": 162550000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 39 (wal)", "location": null, "notes": null, "marine_ch": "39", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 158000000, "mode": "FM", "band": "marine", "name": "Rijkswaterstaat Korps Landelijke Politie Diensten", "location": null, "notes": null, "marine_ch": "40", "tags": ["police"], "source": "Opa Chiel"}, {"freq_hz": 162600000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 40 (wal)", "location": null, "notes": null, "marine_ch": "40", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 155775000, "mode": "FM", "band": "marine", "name": "Visserij Schepen verder dan 25 KM uit Kust", "location": null, "notes": null, "marine_ch": "55", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 155825000, "mode": "FM", "band": "marine", "name": "Visserij Schepen verder dan 25 KM uit kust", "location": null, "notes": null, "marine_ch": "56", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156525000, "mode": "FM", "band": "marine", "name": "DSC", "location": null, "notes": "Digital selective calling (data bursts, not voice).", "marine_ch": "70", "tags": ["dsc"], "source": "Opa Chiel"}, {"freq_hz": 161125000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 70 (wal)", "location": null, "notes": null, "marine_ch": "70", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156675000, "mode": "FM", "band": "marine", "name": "Nautische Informatie Bestrijding Verontreiniging", "location": null, "notes": null, "marine_ch": "73", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161275000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 73 (wal)", "location": null, "notes": null, "marine_ch": "73", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156775000, "mode": "FM", "band": "marine", "name": "Havenoperaties", "location": null, "notes": null, "marine_ch": "75", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161375000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 75 (wal)", "location": null, "notes": null, "marine_ch": "75", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 156825000, "mode": "FM", "band": "marine", "name": "Nautische Gebruik Diverse", "location": null, "notes": null, "marine_ch": "76", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161425000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 76 (wal)", "location": null, "notes": null, "marine_ch": "76", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157325000, "mode": "FM", "band": "marine", "name": "Nautische Informatie Schip", "location": null, "notes": null, "marine_ch": "86", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 161925000, "mode": "FM", "band": "marine", "name": "Nautische Informatie Wal", "location": null, "notes": null, "marine_ch": "86", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157475000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Schip", "location": null, "notes": null, "marine_ch": "89", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162075000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Wal", "location": null, "notes": null, "marine_ch": "89", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157525000, "mode": "FM", "band": "marine", "name": "Oliebestrijdings Vaartuigen Schip", "location": null, "notes": null, "marine_ch": "90", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162125000, "mode": "FM", "band": "marine", "name": "Oliebestrijdings Vaartuigen Wal", "location": null, "notes": null, "marine_ch": "90", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157575000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Schip", "location": null, "notes": null, "marine_ch": "91", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162175000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Wal", "location": null, "notes": null, "marine_ch": "91", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157625000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Sleepboten Smit Onderling", "location": null, "notes": null, "marine_ch": "92", "tags": ["tugs"], "source": "Opa Chiel"}, {"freq_hz": 162225000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Wal", "location": null, "notes": null, "marine_ch": "92", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157675000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Schip", "location": null, "notes": null, "marine_ch": "93", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162275000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Wal", "location": null, "notes": null, "marine_ch": "93", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157725000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Schip", "location": null, "notes": null, "marine_ch": "94", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162325000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Wal", "location": null, "notes": null, "marine_ch": "94", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157775000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Schip", "location": null, "notes": null, "marine_ch": "95", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162375000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Wal", "location": null, "notes": null, "marine_ch": "95", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157825000, "mode": "FM", "band": "marine", "name": "Coastguard Olie en Oliebestrijding Schip", "location": null, "notes": null, "marine_ch": "96", "tags": ["coastguard"], "source": "Opa Chiel"}, {"freq_hz": 162425000, "mode": "FM", "band": "marine", "name": "Marifoon kanaal 96 (wal)", "location": null, "notes": null, "marine_ch": "96", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 157925000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Schip", "location": null, "notes": null, "marine_ch": "98", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 162525000, "mode": "FM", "band": "marine", "name": "Scheepvaartbedrijven Wal", "location": null, "notes": null, "marine_ch": "98", "tags": [], "source": "Opa Chiel"}, {"freq_hz": 164630000, "mode": "NFM", "band": "marine", "name": "Rotterdam Port Authority Calamiteiten Kanaal 58", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 169830000, "mode": "NFM", "band": "marine", "name": "Rotterdam Port Authority Gevaarlijke Stoffen Kanaal 57", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 169856200, "mode": "NFM", "band": "marine", "name": "Rotterdam Port Authority Onderling Verkeer Kanaal 56", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 164990000, "mode": "NFM", "band": "other", "name": "Reddings Brigade Strandbewaking Kanaal 1 Wit", "location": null, "notes": null, "marine_ch": null, "tags": ["rescue"], "source": "Opa Chiel"}, {"freq_hz": 165010000, "mode": "NFM", "band": "other", "name": "Reddings Brigade Strandbewaking Kanaal 2 Rood", "location": null, "notes": null, "marine_ch": null, "tags": ["rescue"], "source": "Opa Chiel"}, {"freq_hz": 165170000, "mode": "NFM", "band": "other", "name": "Reddings Brigade Strandbewaking Kanaal 3 Geel", "location": null, "notes": null, "marine_ch": null, "tags": ["rescue"], "source": "Opa Chiel"}, {"freq_hz": 164950000, "mode": "NFM", "band": "other", "name": "Reddings Brigade Strandbewaking Kanaal 4 Blauw", "location": null, "notes": null, "marine_ch": null, "tags": ["rescue"], "source": "Opa Chiel"}, {"freq_hz": 164590000, "mode": "NFM", "band": "other", "name": "Reddings Brigade Strandbewaking Kanaal 5 Groen", "location": null, "notes": null, "marine_ch": null, "tags": ["rescue"], "source": "Opa Chiel"}, {"freq_hz": 160290000, "mode": "NFM", "band": "other", "name": "Reddings Brigade Strandbewaking Kanaal 6 Oranje", "location": null, "notes": null, "marine_ch": null, "tags": ["rescue"], "source": "Opa Chiel"}, {"freq_hz": 457525000, "mode": "NFM", "band": "marine", "name": "Landelijk Scheepsportofoon Kanaal 1", "location": null, "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 457537500, "mode": "NFM", "band": "marine", "name": "Landelijk Scheepsportofoon Kanaal 2", "location": null, "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 457550000, "mode": "NFM", "band": "marine", "name": "Landelijk Scheepsportofoon Kanaal 3", "location": null, "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 457562500, "mode": "NFM", "band": "marine", "name": "Landelijk Scheepsportofoon Kanaal 4", "location": null, "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 457575000, "mode": "NFM", "band": "marine", "name": "Landelijk Scheepsportofoon Kanaal 5", "location": null, "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 467525000, "mode": "NFM", "band": "marine", "name": "Landelijk Scheepsportofoon Kanaal 6", "location": null, "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 467537500, "mode": "NFM", "band": "marine", "name": "Landelijk Scheepsportofoon Kanaal 7", "location": null, "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 467550000, "mode": "NFM", "band": "marine", "name": "Landelijk Scheepsportofoon Kanaal 8", "location": null, "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 467562500, "mode": "NFM", "band": "marine", "name": "Landelijk Scheepsportofoon Kanaal 9", "location": null, "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 467575000, "mode": "NFM", "band": "marine", "name": "Landelijk Scheepsportofoon Kanaal 10 HvH Stena Hollandica", "location": "Rotterdam", "notes": null, "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 145450000, "mode": "NFM", "band": "ham", "name": "Haagse ronde", "location": "Den Haag", "notes": "The Hague 2 m net, weekdays 11:00. Opa listens on his own antenna; also on WebSDR PI1DFT (Delft).", "marine_ch": null, "tags": ["net", "2m"], "source": "Opa Chiel"}, {"freq_hz": 3785000, "mode": "LSB", "band": "ham", "name": "KLM ronde", "location": null, "notes": "80 m net. Listen via WebSDR Maasbree; Opa flagged it live on Sun 20 Sep 2026 12:34.", "marine_ch": null, "tags": ["net", "80m", "websdr"], "source": "Opa Chiel"}, {"freq_hz": 145800000, "mode": "NFM", "band": "ham", "name": "ISS voice downlink (ARISS)", "location": null, "notes": "ARISS contacts and SSTV from the ISS. https://live.ariss.org/", "marine_ch": null, "tags": ["iss", "satellite", "2m"], "source": "Opa Chiel"}, {"freq_hz": 120875000, "mode": "AM", "band": "air", "name": "Rotterdam / Schiphol (per Opa)", "location": null, "notes": "Mentioned on WhatsApp, not in his bank list.", "marine_ch": null, "tags": [], "source": "Opa Chiel"}, {"freq_hz": 1090000000, "mode": "DATA", "band": "other", "name": "ADS-B (aircraft transponders)", "location": null, "notes": "The scanner cannot decode it: needs an SDR + 1090 MHz antenna + dump1090 / ADSBSharp / Virtual Radar Server.", "marine_ch": null, "tags": ["adsb", "sdr"], "source": "Opa Chiel"}]$seed$::jsonb) + AS x(freq_hz bigint, mode text, band text, name text, location text, notes text, marine_ch text, tags jsonb, source text) +ON CONFLICT (freq_hz, name) DO NOTHING; +--> statement-breakpoint +INSERT INTO "radio"."channels" (channel, frequency_id) +SELECT c.channel, f.id +FROM jsonb_to_recordset($seed$[{"channel": 151, "freq_hz": 118100000, "name": "Schiphol Tower Primary Baan 18C-36C Zwanenburgbaan"}, {"channel": 152, "freq_hz": 118200000, "name": "Rotterdam Tower"}, {"channel": 153, "freq_hz": 118250000, "name": "Brussel Approach"}, {"channel": 154, "freq_hz": 118275000, "name": "Schiphol Tower Baan 18R-36L Polderbaan Tower West"}, {"channel": 155, "freq_hz": 118400000, "name": "Schiphol Arrival / London Area Control Sector 14 Clacton W."}, {"channel": 156, "freq_hz": 118475000, "name": "London Area Control Sector 14 Clacton West"}, {"channel": 157, "freq_hz": 118800000, "name": "Schiphol Radar Sugol"}, {"channel": 158, "freq_hz": 119050000, "name": "Schiphol Approach Departure TMA East"}, {"channel": 159, "freq_hz": 119225000, "name": "Schiphol Tower Baan 04-22 Oostbaan en 18L-36R Aalsmeerbaan"}, {"channel": 160, "freq_hz": 119575000, "name": "Noordzee Heli's"}, {"channel": 161, "freq_hz": 119700000, "name": "Rotterdam Tower"}, {"channel": 162, "freq_hz": 119900000, "name": "Schiphol Tower 06-24 Kaagbaan"}, {"channel": 163, "freq_hz": 120125000, "name": "Den Helder De Kooy Tower"}, {"channel": 164, "freq_hz": 120550000, "name": "Schiphol Radar IJsselmeer Artip"}, {"channel": 165, "freq_hz": 120825000, "name": "Nieuw Milligen Dutch Mil Radar Upper"}, {"channel": 166, "freq_hz": 121200000, "name": "Schiphol Approach Departure TMA West Polderbaan Toren"}, {"channel": 167, "freq_hz": 121500000, "name": "International Emergency Frequency"}, {"channel": 168, "freq_hz": 121750000, "name": "Rotterdam Toren Havendienst / Brussel Luxemburg"}, {"channel": 169, "freq_hz": 122175000, "name": "Rotterdam Delivery"}, {"channel": 170, "freq_hz": 122250000, "name": "Luchtballonnen"}, {"channel": 171, "freq_hz": 122475000, "name": "Zweefvliegtuigen"}, {"channel": 172, "freq_hz": 122500000, "name": "Zweefvliegtuigen"}, {"channel": 173, "freq_hz": 122600000, "name": "Ballonvaart"}, {"channel": 174, "freq_hz": 122950000, "name": "Noordzee Heli's"}, {"channel": 175, "freq_hz": 123100000, "name": "Internationaal SAR Europa"}, {"channel": 176, "freq_hz": 123175000, "name": "Rapcon South Eindhoven Vonkel Gilze Rijen"}, {"channel": 177, "freq_hz": 123350000, "name": "Zweefvliegtuigen"}, {"channel": 178, "freq_hz": 123375000, "name": "Zweefvliegtuigen"}, {"channel": 179, "freq_hz": 123425000, "name": "Ultra Lights"}, {"channel": 180, "freq_hz": 123450000, "name": "Landelijk Air to Air Nat. Airdrome Northsea Heli"}, {"channel": 181, "freq_hz": 123500000, "name": "Zweefvliegtuigen"}, {"channel": 182, "freq_hz": 123575000, "name": "Rapcon West Woensdrecht"}, {"channel": 183, "freq_hz": 123700000, "name": "Schiphol Radar-5 North-West"}, {"channel": 184, "freq_hz": 123850000, "name": "Schiphol Radar-3 South"}, {"channel": 185, "freq_hz": 124225000, "name": "Den Helder De Kooy Arrival"}, {"channel": 186, "freq_hz": 124300000, "name": "Schiphol Flight Information Service Over Land en Lifeliner"}, {"channel": 187, "freq_hz": 124525000, "name": "Eindhoven Arrival"}, {"channel": 188, "freq_hz": 124875000, "name": "Schiphol Radar-2 East Outbound"}, {"channel": 189, "freq_hz": 125000000, "name": "Brussel ACC Radar Luxemburg Sector"}, {"channel": 190, "freq_hz": 125175000, "name": "Noordzee Heli's"}, {"channel": 191, "freq_hz": 125425000, "name": "Landelijk AFIS Hospital Heli"}, {"channel": 192, "freq_hz": 125750000, "name": "Schiphol Radar-4 South-West"}, {"channel": 193, "freq_hz": 125775000, "name": "Brussel ACC Radar West"}, {"channel": 194, "freq_hz": 125925000, "name": "Nieuw Milligen Dutch Mil Radar Spire"}, {"channel": 195, "freq_hz": 125975000, "name": "Maastricht Radar Eurocontrol Sector Olno High"}, {"channel": 196, "freq_hz": 126375000, "name": "Brussel ACC Radar North High"}, {"channel": 197, "freq_hz": 126525000, "name": "Brussel ACC Radar South Low"}, {"channel": 198, "freq_hz": 126625000, "name": "Brussel Airport Departure"}, {"channel": 199, "freq_hz": 126675000, "name": "Schiphol Arrival Back-Up / Rotterdam Approach Back-Up"}, {"channel": 200, "freq_hz": 126775000, "name": "London Area Control Sector 11 Noordzee"}, {"channel": 201, "freq_hz": 127025000, "name": "Rotterdam Approach"}, {"channel": 202, "freq_hz": 127225000, "name": "Brussel ACC Radar West High"}, {"channel": 203, "freq_hz": 127425000, "name": "London Area Control Sector 02 Upper Sector Oosten"}, {"channel": 204, "freq_hz": 128000000, "name": "Schiphol Politie Landelijke Eenheid Schiphol-Oost"}, {"channel": 205, "freq_hz": 128125000, "name": "London Area Control Sector 10 Noordzee"}, {"channel": 206, "freq_hz": 128158300, "name": "London Area Control Sector 13 Clacton West"}, {"channel": 207, "freq_hz": 128200000, "name": "Brussel ACC Radar East"}, {"channel": 208, "freq_hz": 128350000, "name": "Nieuw Milligen Dutch Mil Radar Lower"}, {"channel": 209, "freq_hz": 128425000, "name": "London Area Control Sector 17 Lydd"}, {"channel": 210, "freq_hz": 128450000, "name": "Brussel ACC Radar Luxemburg Sector"}, {"channel": 211, "freq_hz": 128575000, "name": "Schiphol Radar-2 East Inbound"}, {"channel": 212, "freq_hz": 128800000, "name": "Brussel ACC Radar North Low"}, {"channel": 213, "freq_hz": 129575000, "name": "Brussel ACC Radar East Low"}, {"channel": 214, "freq_hz": 129650000, "name": "Brussel ACC Radar East Low"}, {"channel": 215, "freq_hz": 129975000, "name": "Zweefvliegtuigen"}, {"channel": 216, "freq_hz": 130000000, "name": "Lelystad Heli Holland"}, {"channel": 217, "freq_hz": 130125000, "name": "Zweefvliegtuigen"}, {"channel": 218, "freq_hz": 130300000, "name": "Nationaal Airdromes Heli"}, {"channel": 219, "freq_hz": 130950000, "name": "Schiphol Radar-3 South Inbound"}, {"channel": 220, "freq_hz": 131100000, "name": "Brussel ACC Radar West en Koksijde"}, {"channel": 221, "freq_hz": 131150000, "name": "Schiphol Arrival Secondary"}, {"channel": 222, "freq_hz": 131375000, "name": "Maastricht Radar Eurocontrol Solling High Sector"}, {"channel": 223, "freq_hz": 131400000, "name": "Schiphol Servisair / Eelde OPC"}, {"channel": 224, "freq_hz": 131416600, "name": "Schiphol KLM TLO B/C/D KLM Teamleiders"}, {"channel": 225, "freq_hz": 131425000, "name": "Schiphol KLC Operations / Brussel Oostende"}, {"channel": 226, "freq_hz": 131433000, "name": "Schiphol KLM Flow Control"}, {"channel": 227, "freq_hz": 131450000, "name": "Rotterdam OPC / Oostende OPC"}, {"channel": 228, "freq_hz": 131475000, "name": "Schiphol Martinair"}, {"channel": 229, "freq_hz": 131483300, "name": "Schiphol"}, {"channel": 230, "freq_hz": 131500000, "name": "Schiphol EL-AL / Rotterdam OPC / Brussel"}, {"channel": 231, "freq_hz": 131550000, "name": "Schiphol BA Engineering / Rotterdam"}, {"channel": 232, "freq_hz": 131558300, "name": "Schiphol Swissport Operations"}, {"channel": 233, "freq_hz": 131566600, "name": "Schiphol Jet Nederland / Rotterdam OPC"}, {"channel": 234, "freq_hz": 131575000, "name": "Schiphol Aviapartner Operations / Rotterdam OPC"}, {"channel": 235, "freq_hz": 131600000, "name": "Schiphol Japan Airlines en Heli's"}, {"channel": 236, "freq_hz": 131625000, "name": "Schiphol KLM Jet Center"}, {"channel": 237, "freq_hz": 131650000, "name": "Schiphol KLM Operations"}, {"channel": 238, "freq_hz": 131683300, "name": "Schiphol TUI"}, {"channel": 239, "freq_hz": 131750000, "name": "Schiphol Nayak / Rotterdam / Eelde / Middelburg"}, {"channel": 240, "freq_hz": 131775000, "name": "Bergen op Zoom Helicon Company / Ede / Luxemburg / Lelystad"}, {"channel": 241, "freq_hz": 131800000, "name": "Schiphol Menzies Operations"}, {"channel": 242, "freq_hz": 131850000, "name": "Schiphol / Rotterdam / Oostende"}, {"channel": 243, "freq_hz": 131875000, "name": "Schiphol Jet Support Operations"}, {"channel": 244, "freq_hz": 131900000, "name": "Schiphol Transavia"}, {"channel": 245, "freq_hz": 131925000, "name": "Schiphol Martinair Operations"}, {"channel": 246, "freq_hz": 131941600, "name": "Schiphol KLM Maintenance"}, {"channel": 247, "freq_hz": 131958300, "name": "Schiphol KLM TLO E/F/G"}, {"channel": 248, "freq_hz": 131975000, "name": "Schiphol KLC Maintenance / Rotterdam"}, {"channel": 249, "freq_hz": 132025000, "name": "Rapcon North Leeuwarden en De Kooy"}, {"channel": 250, "freq_hz": 132083300, "name": "Maastricht Radar Eurocontrol Delta High Sector"}, {"channel": 251, "freq_hz": 132200000, "name": "Maastricht Radar Eurocontrol Koksy Sector"}, {"channel": 252, "freq_hz": 132316600, "name": "Maastricht Radar Eurocontrol Lux High Sector"}, {"channel": 253, "freq_hz": 132608300, "name": "London Area Control Sector 26 London Midden"}, {"channel": 254, "freq_hz": 132841600, "name": "London Area Control Sector 01 West"}, {"channel": 255, "freq_hz": 132350000, "name": "Nieuw Milligen Dutch Mil Info en Lifeliner"}, {"channel": 256, "freq_hz": 132516600, "name": "Maastricht Radar Eurocontrol Ruhr Sector"}, {"channel": 257, "freq_hz": 132525000, "name": "Nieuw Milligen Dutch Mil Radar Lower"}, {"channel": 258, "freq_hz": 132633300, "name": "Maastricht Radar Eurocontrol Delta Sector"}, {"channel": 259, "freq_hz": 132700000, "name": "Schiphol Radar Noord West"}, {"channel": 260, "freq_hz": 132750000, "name": "Maastricht Radar Eurocontrol Koksy High en Nicky High Sector"}, {"channel": 261, "freq_hz": 132850000, "name": "Maastricht Radar Eurocontrol Olno Sector"}, {"channel": 262, "freq_hz": 133216600, "name": "Maastricht Radar Eurocontrol Jever en Munster Sector"}, {"channel": 263, "freq_hz": 133350000, "name": "Maastricht Radar Eurocontrol Lux Sector"}, {"channel": 264, "freq_hz": 133450000, "name": "London Area Control Sector 12 Clacton-Oosten"}, {"channel": 265, "freq_hz": 133708300, "name": "Maastricht Radar Eurocontrol Lux en Olno Sector"}, {"channel": 266, "freq_hz": 133850000, "name": "Maastricht Radar Eurocontrol Koksy Sector"}, {"channel": 267, "freq_hz": 133941600, "name": "London Area Control Sector 12 Clacton Oosten"}, {"channel": 268, "freq_hz": 133950000, "name": "Maastricht Radar Eurocontrol Cello Sector"}, {"channel": 269, "freq_hz": 134325000, "name": "Maastricht Radar Eurocontrol Lux en Orno Sector"}, {"channel": 270, "freq_hz": 134375000, "name": "Schiphol Radar-1 North"}, {"channel": 271, "freq_hz": 134450000, "name": "London Area Control Sector 16 Dover Low"}, {"channel": 272, "freq_hz": 134458300, "name": "London Area Control Sector 24 London Upper Sector N."}, {"channel": 273, "freq_hz": 134700000, "name": "Maastricht Radar Eurocontrol Jever High Sector"}, {"channel": 274, "freq_hz": 134875000, "name": "Schiphol Tower Traffic"}, {"channel": 275, "freq_hz": 134900000, "name": "London Area Control Sector 15 Dover Low"}, {"channel": 276, "freq_hz": 135491600, "name": "Maastricht Radar Eurocontrol Ruhr Sector"}, {"channel": 277, "freq_hz": 135958300, "name": "Maastricht Radar Eurocontrol Delta Sector"}, {"channel": 278, "freq_hz": 135975000, "name": "Maastricht Radar Eurocontrol Flevo en Nicky Sector"}, {"channel": 279, "freq_hz": 136466600, "name": "Maastricht Radar Eurocontrol Jever Sector"}, {"channel": 280, "freq_hz": 136600000, "name": "London Area Control Sector 16 Dover High"}, {"channel": 281, "freq_hz": 136650000, "name": "Schiphol Flight Information Service Northsea South"}, {"channel": 282, "freq_hz": 162475000, "name": "Kustwacht vliegtuig / Douane boot"}, {"channel": 301, "freq_hz": 157050000, "name": "Scheveningen VC Schip"}, {"channel": 302, "freq_hz": 161650000, "name": "Scheveningen VC Wal"}, {"channel": 303, "freq_hz": 152587500, "name": "Scheveningen Havendienst Den Haag Brugwachters"}, {"channel": 304, "freq_hz": 156300000, "name": "Scheveningen Sleepdienst en onderling schepen"}, {"channel": 305, "freq_hz": 160900000, "name": "Baggerschepen"}, {"channel": 306, "freq_hz": 157550000, "name": "Scheveningen Jachthaven Marina Jachtclub Schip"}, {"channel": 307, "freq_hz": 162150000, "name": "Scheveningen Jachthaven Marina Jachtclub Wal"}, {"channel": 308, "freq_hz": 156475000, "name": "Scheveningen WK Zeilen"}, {"channel": 309, "freq_hz": 161075000, "name": "Rotterdam Loodsen Rotterdam - Rijnmond"}, {"channel": 310, "freq_hz": 156625000, "name": "Scheveningen Haagse Kust Zeilvereniging"}, {"channel": 311, "freq_hz": 161225000, "name": "Marifoon kanaal 72 (wal)"}, {"channel": 312, "freq_hz": 156875000, "name": "Scheveningen WK Zeilen Egmond aan Zee"}, {"channel": 313, "freq_hz": 161475000, "name": "Marifoon kanaal 77 (wal)"}, {"channel": 314, "freq_hz": 156050000, "name": "HvH VC Sector Maas Approach Schip"}, {"channel": 315, "freq_hz": 160650000, "name": "HvH VC Sector Maas Approach Wal"}, {"channel": 316, "freq_hz": 156100000, "name": "HvH VC Sector Pilot Maas Schip"}, {"channel": 317, "freq_hz": 160700000, "name": "HvH VC Sector Pilot Maas Wal"}, {"channel": 318, "freq_hz": 156150000, "name": "HvH VC Sector Maasmond Schip"}, {"channel": 319, "freq_hz": 160750000, "name": "HvH VC Sector Maasmond Wal"}, {"channel": 320, "freq_hz": 156250000, "name": "HvH VC Sector Maasvlakte Schip"}, {"channel": 321, "freq_hz": 160850000, "name": "HvH VC Sector Maasvlakte Wal"}, {"channel": 322, "freq_hz": 156275000, "name": "HvH VC Sector Rozenburg Schip"}, {"channel": 323, "freq_hz": 160875000, "name": "HvH VC Sector Rozenburg Wal"}, {"channel": 324, "freq_hz": 156325000, "name": "HvH VC Sector Europoort Schip"}, {"channel": 325, "freq_hz": 160925000, "name": "HvH VC Sector Europoort"}, {"channel": 326, "freq_hz": 156550000, "name": "HvH Traffic Center TCR Rotterdam Port Authority"}, {"channel": 327, "freq_hz": 161150000, "name": "Marifoon kanaal 11 (wal)"}, {"channel": 328, "freq_hz": 156700000, "name": "Rotterdam Centrale Meldkamer HCC Wal"}, {"channel": 329, "freq_hz": 161300000, "name": "Rotterdam Centrale Meldkamer HCC"}, {"channel": 330, "freq_hz": 156950000, "name": "Rotterdam Coordinatie Centrum HCC Schip"}, {"channel": 331, "freq_hz": 161550000, "name": "Rotterdam Coordinatie Centrum HCC Wal"}, {"channel": 332, "freq_hz": 156025000, "name": "Rotterdam VC Sector Waalhaven Schip"}, {"channel": 333, "freq_hz": 160625000, "name": "Rotterdam VC Sector Waalhaven Wal"}, {"channel": 334, "freq_hz": 156075000, "name": "Rotterdam VC Sector Botlek Schip"}, {"channel": 335, "freq_hz": 160675000, "name": "Rotterdam VC Sector Botlek Wal"}, {"channel": 336, "freq_hz": 156125000, "name": "Rotterdam VC Sector Oude Maas Schip"}, {"channel": 337, "freq_hz": 160725000, "name": "Rotterdam VC Sector Oude Maas Wal"}, {"channel": 338, "freq_hz": 156175000, "name": "Rotterdam VC Sector Eemhaven Schip"}, {"channel": 339, "freq_hz": 160775000, "name": "Rotterdam VC Sector Eemhaven Wal"}, {"channel": 340, "freq_hz": 157025000, "name": "Rotterdam VC Sector Maassluis Schip"}, {"channel": 341, "freq_hz": 161625000, "name": "Rotterdam VC Sector Maassluis Wal"}, {"channel": 342, "freq_hz": 157075000, "name": "Rotterdam VC Sector Maasbruggen Schip"}, {"channel": 343, "freq_hz": 161675000, "name": "Rotterdam VC Sector Maasbruggen Wal"}, {"channel": 344, "freq_hz": 156000000, "name": "Reddings Posten Nederlandse Kust KNRM-KNBRD"}, {"channel": 345, "freq_hz": 160600000, "name": "Marifoon kanaal 00 (wal)"}, {"channel": 346, "freq_hz": 156800000, "name": "Kustwacht Nood, Spoed, Veiligheid en Aanroepkanaal"}, {"channel": 347, "freq_hz": 161400000, "name": "Scheveningen Sportvisserij Vrolijk en Trip P2"}, {"channel": 348, "freq_hz": 157150000, "name": "Kustwacht Schip"}, {"channel": 349, "freq_hz": 161750000, "name": "Kustwacht Wal"}, {"channel": 350, "freq_hz": 156375000, "name": "Kustwacht Reddingsboten Opsporing en Redding SAR"}, {"channel": 351, "freq_hz": 160975000, "name": "Marifoon kanaal 67 (wal)"}, {"channel": 352, "freq_hz": 157175000, "name": "Kustwacht Schip Scheveningen"}, {"channel": 353, "freq_hz": 161775000, "name": "Kustwacht Wal Scheveningen"}, {"channel": 354, "freq_hz": 157875000, "name": "Marifoon kanaal 97 (schip)"}, {"channel": 355, "freq_hz": 162475000, "name": "Kustwacht Reserve kanaal en Vliegtuig Kustwacht"}, {"channel": 356, "freq_hz": 156200000, "name": "Dordrecht Sector Heerjansdam Schip"}, {"channel": 357, "freq_hz": 160800000, "name": "Dordrecht Sector Heerjansdam Wal"}, {"channel": 358, "freq_hz": 156575000, "name": "Dordrecht Verkeers Post"}, {"channel": 359, "freq_hz": 161175000, "name": "Marifoon kanaal 71 (wal)"}, {"channel": 360, "freq_hz": 156725000, "name": "Dordrecht Centrale Brug Bed .Havend IJmuiden Seaport"}, {"channel": 361, "freq_hz": 161325000, "name": "Marifoon kanaal 74 (wal)"}, {"channel": 362, "freq_hz": 156975000, "name": "Dordrecht VC Sector Dordrecht"}, {"channel": 363, "freq_hz": 161575000, "name": "Dordrecht VC Sector Dordrecht"}, {"channel": 364, "freq_hz": 156600000, "name": "IJmuiden Zeehaven Havenoperaties Rotterdam HAL"}, {"channel": 365, "freq_hz": 161200000, "name": "Baggerkanaal"}, {"channel": 366, "freq_hz": 156425000, "name": "Maassluis Havenkantoor"}, {"channel": 367, "freq_hz": 161025000, "name": "Marifoon kanaal 68 (wal)"}, {"channel": 368, "freq_hz": 157125000, "name": "Rotterdam Drinkwaterboot Bunkering en Proviand Schip"}, {"channel": 369, "freq_hz": 161725000, "name": "Rotterdam Drinkwaterboot Bunkering en Proviand Wal"}, {"channel": 370, "freq_hz": 157375000, "name": "Ouddorp Zeeverkeerspost Rotterdam Spido"}, {"channel": 371, "freq_hz": 161975000, "name": "AIS 1"}, {"channel": 372, "freq_hz": 157425000, "name": "Scheveningen WK Zeilen Spido"}, {"channel": 373, "freq_hz": 162025000, "name": "AIS 2"}, {"channel": 374, "freq_hz": 158470000, "name": "Rotterdam Roeiers Veren. Eendracht RVE"}, {"channel": 375, "freq_hz": 158590000, "name": "Rotterdam Roeiers Maasvlakte"}, {"channel": 376, "freq_hz": 160110000, "name": "Rotterdam Roeiers Veren. Eendracht RVE"}, {"channel": 377, "freq_hz": 160550000, "name": "Rotterdam Roeiers Veren. Eendracht RVE Europoort-Maasvlakte"}, {"channel": 378, "freq_hz": 159930000, "name": "Rotterdam Sleep Dienst Storno 1 Kanaal 41 Maasvlakte"}, {"channel": 379, "freq_hz": 160230000, "name": "Rotterdam Sleep Dienst Storno 3 Kanaal 43 Waalhaven"}, {"channel": 380, "freq_hz": 160330000, "name": "Rotterdam Sleep Dienst Storno 4 Kanaal 44 Oosten EECV"}, {"channel": 381, "freq_hz": 160430000, "name": "Rotterdam Sleep Dienst Storno 5 Kanaal 45 Westen EECV"}, {"channel": 382, "freq_hz": 160510000, "name": "Rotterdam Sleep Dienst Storno 2 Kanaal 42 Eemhaven"}, {"channel": 383, "freq_hz": 168710000, "name": "Rotterdam Watertaxi Kanaal 2"}, {"channel": 384, "freq_hz": 169030000, "name": "Rotterdam Watertaxi Kanaal 1"}, {"channel": 385, "freq_hz": 156400000, "name": "Nautisch Intership Sleepdienst en onderling schepen"}, {"channel": 386, "freq_hz": 161000000, "name": "Marifoon kanaal 08 (wal)"}, {"channel": 387, "freq_hz": 156450000, "name": "Nautisch Gebruik Diverse"}, {"channel": 388, "freq_hz": 161050000, "name": "Marifoon kanaal 09 (wal)"}, {"channel": 389, "freq_hz": 156500000, "name": "Nautisch Intership Verkeer Aanroep Binnenwater"}, {"channel": 390, "freq_hz": 161100000, "name": "Rotterdam Loodsen Roeiers Sleepboten"}, {"channel": 391, "freq_hz": 157600000, "name": "Scheepvaartbedrijven Smit Havensleepdiensten Schip"}, {"channel": 392, "freq_hz": 162200000, "name": "Scheepvaartbedrijven Smit Havensleepdiensten Wal"}, {"channel": 393, "freq_hz": 157650000, "name": "Rijkswaterstaat Schip"}, {"channel": 394, "freq_hz": 162250000, "name": "Rotterdam Sleep Dienst Storno 7 Kanaal 47 Reserve Kanaal"}, {"channel": 395, "freq_hz": 157975000, "name": "Rotterdam Sleep Dienst Storno 6 Kanaal 46 Maasvlakte"}, {"channel": 396, "freq_hz": 162575000, "name": "Marifoon kanaal 99 (wal)"}, {"channel": 397, "freq_hz": 156650000, "name": "Nautisch Intership Verkeer"}, {"channel": 398, "freq_hz": 161250000, "name": "Marifoon kanaal 13 (wal)"}, {"channel": 399, "freq_hz": 156750000, "name": "Onboard Portofoon Verkeer"}, {"channel": 400, "freq_hz": 161350000, "name": "Onboard Portofoon"}, {"channel": 401, "freq_hz": 156850000, "name": "Onboard Portofoon Verkeer"}, {"channel": 402, "freq_hz": 161450000, "name": "Marifoon kanaal 17 (wal)"}, {"channel": 403, "freq_hz": 156350000, "name": "Sluizen Volkeraksluizen Noord Schip"}, {"channel": 404, "freq_hz": 160950000, "name": "Sluizen Volkeraksluizen Noord Wal"}, {"channel": 405, "freq_hz": 156900000, "name": "Sluizen Volkeraksluizen Jachtensluis Bruggen Den Haag Schip"}, {"channel": 406, "freq_hz": 161500000, "name": "Sluizen Volkeraksluizen Jachtensluis Bruggen Den Haag Wal"}, {"channel": 407, "freq_hz": 157000000, "name": "Bruggen en Sluizen Schip"}, {"channel": 408, "freq_hz": 161600000, "name": "Bruggen en Sluizen Wal"}, {"channel": 409, "freq_hz": 157100000, "name": "Bruggen en Sluizen Schip"}, {"channel": 410, "freq_hz": 161700000, "name": "Bruggen en Sluizen Wal"}, {"channel": 411, "freq_hz": 156225000, "name": "Sluizen Volkeraksluizen Volgsysteem Schip"}, {"channel": 412, "freq_hz": 160825000, "name": "Sluizen Volkeraksluizen Volgsysteem Wal"}, {"channel": 413, "freq_hz": 156925000, "name": "Sluizen Volkeraksluizen Zuid Schip"}, {"channel": 414, "freq_hz": 161525000, "name": "Sluizen Volkeraksluizen Zuid Wal"}, {"channel": 415, "freq_hz": 157225000, "name": "Bruggen en Sluizen Schip"}, {"channel": 416, "freq_hz": 161825000, "name": "Bruggen en Sluizen Wal"}, {"channel": 417, "freq_hz": 157275000, "name": "Bruggen en Sluizen Schip"}, {"channel": 418, "freq_hz": 161875000, "name": "Bruggen en Sluizen Wal"}, {"channel": 419, "freq_hz": 157200000, "name": "Nautische Informatie Schip"}, {"channel": 420, "freq_hz": 161800000, "name": "Nautische Informatie Wal"}, {"channel": 421, "freq_hz": 157250000, "name": "Verkeersbegeleiding Schip"}, {"channel": 422, "freq_hz": 161850000, "name": "Verkeersbegeleiding Wal"}, {"channel": 423, "freq_hz": 157300000, "name": "Nautische Informatie Schip"}, {"channel": 424, "freq_hz": 161900000, "name": "Nautische Informatie Wal"}, {"channel": 425, "freq_hz": 157350000, "name": "Verkeersbegeleiding Schip"}, {"channel": 426, "freq_hz": 161950000, "name": "Verkeersbegeleiding Wal"}, {"channel": 427, "freq_hz": 157400000, "name": "Nautische Informatie Schip"}, {"channel": 428, "freq_hz": 162000000, "name": "Nautische Informatie Wal"}, {"channel": 429, "freq_hz": 157450000, "name": "Scheepvaartbedrijven Schip"}, {"channel": 430, "freq_hz": 162050000, "name": "Scheepvaartbedrijven Wal"}, {"channel": 431, "freq_hz": 157500000, "name": "Scheepvaart bedrijven Loodskanaal naar Laad Losplaatsen Schip"}, {"channel": 432, "freq_hz": 162100000, "name": "Scheepvaart bedrijven Loodskanaal naar Laad Losplaatsen Wal"}, {"channel": 433, "freq_hz": 157700000, "name": "Scheepvaartbedrijven Schip"}, {"channel": 434, "freq_hz": 162300000, "name": "Scheepvaartbedrijven Wal"}, {"channel": 435, "freq_hz": 157750000, "name": "Rijkswaterstaat Schip HvH P&O Trailer Chauffeurs"}, {"channel": 436, "freq_hz": 162350000, "name": "Rijkswaterstaat Wal P&O Benelux Haven Pride Of Hull - Rott"}, {"channel": 437, "freq_hz": 157800000, "name": "Rijkswaterstaat Schip"}, {"channel": 438, "freq_hz": 162400000, "name": "Rijkswaterstaat Wal"}, {"channel": 439, "freq_hz": 157850000, "name": "Rijkswaterstaat Jachthavens"}, {"channel": 440, "freq_hz": 162450000, "name": "Marifoon kanaal 37 (wal)"}, {"channel": 441, "freq_hz": 157900000, "name": "Rijkswaterstaat Schip"}, {"channel": 442, "freq_hz": 162500000, "name": "Rijkswaterstaat Wal"}, {"channel": 443, "freq_hz": 157950000, "name": "Rijkswaterstaat Korps Landelijke Politie Diensten"}, {"channel": 444, "freq_hz": 162550000, "name": "Marifoon kanaal 39 (wal)"}, {"channel": 445, "freq_hz": 158000000, "name": "Rijkswaterstaat Korps Landelijke Politie Diensten"}, {"channel": 446, "freq_hz": 162600000, "name": "Marifoon kanaal 40 (wal)"}, {"channel": 447, "freq_hz": 155775000, "name": "Visserij Schepen verder dan 25 KM uit Kust"}, {"channel": 448, "freq_hz": 155825000, "name": "Visserij Schepen verder dan 25 KM uit kust"}, {"channel": 449, "freq_hz": 156525000, "name": "DSC"}, {"channel": 450, "freq_hz": 161125000, "name": "Marifoon kanaal 70 (wal)"}, {"channel": 451, "freq_hz": 156675000, "name": "Nautische Informatie Bestrijding Verontreiniging"}, {"channel": 452, "freq_hz": 161275000, "name": "Marifoon kanaal 73 (wal)"}, {"channel": 453, "freq_hz": 156775000, "name": "Havenoperaties"}, {"channel": 454, "freq_hz": 161375000, "name": "Marifoon kanaal 75 (wal)"}, {"channel": 455, "freq_hz": 156825000, "name": "Nautische Gebruik Diverse"}, {"channel": 456, "freq_hz": 161425000, "name": "Marifoon kanaal 76 (wal)"}, {"channel": 457, "freq_hz": 157325000, "name": "Nautische Informatie Schip"}, {"channel": 458, "freq_hz": 161925000, "name": "Nautische Informatie Wal"}, {"channel": 459, "freq_hz": 157475000, "name": "Scheepvaartbedrijven Schip"}, {"channel": 460, "freq_hz": 162075000, "name": "Scheepvaartbedrijven Wal"}, {"channel": 461, "freq_hz": 157525000, "name": "Oliebestrijdings Vaartuigen Schip"}, {"channel": 462, "freq_hz": 162125000, "name": "Oliebestrijdings Vaartuigen Wal"}, {"channel": 463, "freq_hz": 157575000, "name": "Scheepvaartbedrijven Schip"}, {"channel": 464, "freq_hz": 162175000, "name": "Scheepvaartbedrijven Wal"}, {"channel": 465, "freq_hz": 157625000, "name": "Scheepvaartbedrijven Sleepboten Smit Onderling"}, {"channel": 466, "freq_hz": 162225000, "name": "Scheepvaartbedrijven Wal"}, {"channel": 467, "freq_hz": 157675000, "name": "Scheepvaartbedrijven Schip"}, {"channel": 468, "freq_hz": 162275000, "name": "Scheepvaartbedrijven Wal"}, {"channel": 469, "freq_hz": 157725000, "name": "Scheepvaartbedrijven Schip"}, {"channel": 470, "freq_hz": 162325000, "name": "Scheepvaartbedrijven Wal"}, {"channel": 471, "freq_hz": 157775000, "name": "Scheepvaartbedrijven Schip"}, {"channel": 472, "freq_hz": 162375000, "name": "Scheepvaartbedrijven Wal"}, {"channel": 473, "freq_hz": 157825000, "name": "Coastguard Olie en Oliebestrijding Schip"}, {"channel": 474, "freq_hz": 162425000, "name": "Marifoon kanaal 96 (wal)"}, {"channel": 475, "freq_hz": 157925000, "name": "Scheepvaartbedrijven Schip"}, {"channel": 476, "freq_hz": 162525000, "name": "Scheepvaartbedrijven Wal"}, {"channel": 477, "freq_hz": 164630000, "name": "Rotterdam Port Authority Calamiteiten Kanaal 58"}, {"channel": 478, "freq_hz": 169830000, "name": "Rotterdam Port Authority Gevaarlijke Stoffen Kanaal 57"}, {"channel": 479, "freq_hz": 169856200, "name": "Rotterdam Port Authority Onderling Verkeer Kanaal 56"}, {"channel": 480, "freq_hz": 164990000, "name": "Reddings Brigade Strandbewaking Kanaal 1 Wit"}, {"channel": 481, "freq_hz": 165010000, "name": "Reddings Brigade Strandbewaking Kanaal 2 Rood"}, {"channel": 482, "freq_hz": 165170000, "name": "Reddings Brigade Strandbewaking Kanaal 3 Geel"}, {"channel": 483, "freq_hz": 164950000, "name": "Reddings Brigade Strandbewaking Kanaal 4 Blauw"}, {"channel": 484, "freq_hz": 164590000, "name": "Reddings Brigade Strandbewaking Kanaal 5 Groen"}, {"channel": 485, "freq_hz": 160290000, "name": "Reddings Brigade Strandbewaking Kanaal 6 Oranje"}, {"channel": 486, "freq_hz": 457525000, "name": "Landelijk Scheepsportofoon Kanaal 1"}, {"channel": 487, "freq_hz": 457537500, "name": "Landelijk Scheepsportofoon Kanaal 2"}, {"channel": 488, "freq_hz": 457550000, "name": "Landelijk Scheepsportofoon Kanaal 3"}, {"channel": 489, "freq_hz": 457562500, "name": "Landelijk Scheepsportofoon Kanaal 4"}, {"channel": 490, "freq_hz": 457575000, "name": "Landelijk Scheepsportofoon Kanaal 5"}, {"channel": 491, "freq_hz": 467525000, "name": "Landelijk Scheepsportofoon Kanaal 6"}, {"channel": 492, "freq_hz": 467537500, "name": "Landelijk Scheepsportofoon Kanaal 7"}, {"channel": 493, "freq_hz": 467550000, "name": "Landelijk Scheepsportofoon Kanaal 8"}, {"channel": 494, "freq_hz": 467562500, "name": "Landelijk Scheepsportofoon Kanaal 9"}, {"channel": 495, "freq_hz": 467575000, "name": "Landelijk Scheepsportofoon Kanaal 10 HvH Stena Hollandica"}]$seed$::jsonb) AS c(channel smallint, freq_hz bigint, name text) +JOIN "radio"."frequencies" f ON f.freq_hz = c.freq_hz AND f.name = c.name +ON CONFLICT (channel) DO NOTHING; +--> statement-breakpoint +INSERT INTO "radio"."nets" (name, frequency_id, days, times, kind, remind, sort_order, notes) +SELECT n.name, f.id, ARRAY(SELECT jsonb_array_elements_text(n.days)::smallint), + ARRAY(SELECT jsonb_array_elements_text(n.times)), n.kind, n.remind, n.sort_order, n.notes +FROM jsonb_to_recordset($seed$[{"name": "Haagse ronde", "freq_hz": 145450000, "fname": "Haagse ronde", "days": [1, 2, 3, 4, 5], "times": ["11:00"], "kind": "net", "remind": true, "sort_order": 10, "notes": "The Hague 2 m net. Opa corrected 145.350 to 145.450. Listen on the scanner or WebSDR PI1DFT: https://websdr.pi1dft.ampr.org/#freq=145450000,mod=nfm,sql=-66"}, {"name": "Kustwacht weerbericht (ch 83)", "freq_hz": 161775000, "fname": "Kustwacht Wal Scheveningen", "days": [1, 2, 3, 4, 5, 6, 7], "times": ["13:05", "19:05"], "kind": "broadcast", "remind": true, "sort_order": 20, "notes": "Coastguard weather report on marine ch 83 (Scheveningen shore), scanner ch 353."}, {"name": "Kustwacht navigatieberichten (ch 83)", "freq_hz": 161775000, "fname": "Kustwacht Wal Scheveningen", "days": [1, 2, 3, 4, 5, 6, 7], "times": ["17:30"], "kind": "broadcast", "remind": false, "sort_order": 30, "notes": "Coastguard navigational warnings on marine ch 83, scanner ch 353."}, {"name": "KLM ronde (80 m)", "freq_hz": 3785000, "fname": "KLM ronde", "days": [7], "times": [], "kind": "net", "remind": false, "sort_order": 40, "notes": "3785 kHz LSB via WebSDR Maasbree. Regular time unknown: Opa saw it live on Sun 20 Sep 2026 12:34. Add a time once known."}]$seed$::jsonb) + AS n(name text, freq_hz bigint, fname text, days jsonb, times jsonb, kind text, remind boolean, sort_order int, notes text) +LEFT JOIN "radio"."frequencies" f ON f.freq_hz = n.freq_hz AND f.name = n.fname; +--> statement-breakpoint +-- Privacy: owner-only on the site (ownerOnlyPrefixes). Like plant and notes, only the app role +-- can read or write (no personal_ro). Grants only run on prod (migrations as `personal`). +REVOKE ALL ON SCHEMA radio FROM PUBLIC; +--> statement-breakpoint +DO $$ +BEGIN + IF current_user = 'personal' AND EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'personal_app') THEN + GRANT USAGE ON SCHEMA radio TO personal_app; + GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA radio TO personal_app; + GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA radio TO personal_app; + ALTER DEFAULT PRIVILEGES FOR ROLE personal IN SCHEMA radio + GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO personal_app; + ALTER DEFAULT PRIVILEGES FOR ROLE personal IN SCHEMA radio + GRANT USAGE, SELECT ON SEQUENCES TO personal_app; + END IF; +END $$; diff --git a/drizzle/20261026165544_radio/snapshot.json b/drizzle/20261026165544_radio/snapshot.json new file mode 100644 index 0000000..df26d4f --- /dev/null +++ b/drizzle/20261026165544_radio/snapshot.json @@ -0,0 +1,45168 @@ +{ + "version": "8", + "dialect": "postgres", + "id": "66faf7d7-a92e-4842-bac4-16edac012553", + "prevIds": [ + "e7a63fc4-c635-472b-af68-b8edb330133f" + ], + "ddl": [ + { + "name": "ai", + "entityType": "schemas" + }, + { + "name": "animaldex", + "entityType": "schemas" + }, + { + "name": "auth", + "entityType": "schemas" + }, + { + "name": "books", + "entityType": "schemas" + }, + { + "name": "cars", + "entityType": "schemas" + }, + { + "name": "cs", + "entityType": "schemas" + }, + { + "name": "dataholders", + "entityType": "schemas" + }, + { + "name": "games", + "entityType": "schemas" + }, + { + "name": "groceries", + "entityType": "schemas" + }, + { + "name": "hardware", + "entityType": "schemas" + }, + { + "name": "health", + "entityType": "schemas" + }, + { + "name": "home", + "entityType": "schemas" + }, + { + "name": "house", + "entityType": "schemas" + }, + { + "name": "math", + "entityType": "schemas" + }, + { + "name": "meta", + "entityType": "schemas" + }, + { + "name": "money", + "entityType": "schemas" + }, + { + "name": "movies", + "entityType": "schemas" + }, + { + "name": "music", + "entityType": "schemas" + }, + { + "name": "notes", + "entityType": "schemas" + }, + { + "name": "planes", + "entityType": "schemas" + }, + { + "name": "plant", + "entityType": "schemas" + }, + { + "name": "radio", + "entityType": "schemas" + }, + { + "name": "ref", + "entityType": "schemas" + }, + { + "name": "site", + "entityType": "schemas" + }, + { + "name": "stats", + "entityType": "schemas" + }, + { + "name": "tasks", + "entityType": "schemas" + }, + { + "name": "trains", + "entityType": "schemas" + }, + { + "name": "wildlife", + "entityType": "schemas" + }, + { + "name": "worldtodo", + "entityType": "schemas" + }, + { + "values": [ + "draft", + "published" + ], + "name": "blog_article_status", + "entityType": "enums", + "schema": "site" + }, + { + "values": [ + "catchable", + "trade_only", + "transfer_only", + "event_only", + "unknown", + "evolve", + "breed" + ], + "name": "availability", + "entityType": "enums", + "schema": "ref" + }, + { + "values": [ + "book", + "paper", + "article" + ], + "name": "kind", + "entityType": "enums", + "schema": "books" + }, + { + "values": [ + "pending", + "matched", + "low_confidence", + "not_found", + "manual" + ], + "name": "metadata_status", + "entityType": "enums", + "schema": "books" + }, + { + "values": [ + "want_to_read", + "reading", + "finished", + "abandoned" + ], + "name": "reading_status", + "entityType": "enums", + "schema": "books" + }, + { + "values": [ + "exact", + "approximate", + "none" + ], + "name": "location_precision", + "entityType": "enums", + "schema": "worldtodo" + }, + { + "values": [ + "add", + "edit", + "delete" + ], + "name": "req_kind", + "entityType": "enums", + "schema": "worldtodo" + }, + { + "values": [ + "pending", + "approved", + "rejected" + ], + "name": "req_status", + "entityType": "enums", + "schema": "worldtodo" + }, + { + "values": [ + "planet", + "region", + "country", + "city", + "street" + ], + "name": "scale", + "entityType": "enums", + "schema": "worldtodo" + }, + { + "values": [ + "open", + "in_progress", + "done" + ], + "name": "status", + "entityType": "enums", + "schema": "worldtodo" + }, + { + "isRlsEnabled": false, + "name": "account", + "entityType": "tables", + "schema": "auth" + }, + { + "isRlsEnabled": false, + "name": "session", + "entityType": "tables", + "schema": "auth" + }, + { + "isRlsEnabled": false, + "name": "user", + "entityType": "tables", + "schema": "auth" + }, + { + "isRlsEnabled": false, + "name": "verification", + "entityType": "tables", + "schema": "auth" + }, + { + "isRlsEnabled": false, + "name": "blog_articles", + "entityType": "tables", + "schema": "site" + }, + { + "isRlsEnabled": false, + "name": "tasks", + "entityType": "tables", + "schema": "site" + }, + { + "isRlsEnabled": false, + "name": "task_topics", + "entityType": "tables", + "schema": "site" + }, + { + "isRlsEnabled": false, + "name": "topics", + "entityType": "tables", + "schema": "site" + }, + { + "isRlsEnabled": false, + "name": "catch_em_all_settings", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "pokemon_games", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "pokemon", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "pokemon_encounters", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "pokemon_evolutions", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "pokemon_game_entries", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "pokemon_locations", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "catch_em_all_entries", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "catch_em_all_games", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "tracker_games", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "tracker_items", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "tracker_progress", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "library", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "cs2_share_codes", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "accounts", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "match_players", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "matches", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "seasons", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "snapshots", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "osu_entries", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "pokemon_catches", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "pokemon_dex_numbers", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "pokemon_game_research", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "pokemon_journeys", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "pokemon_learnsets", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "pokemon_milestones", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "pokemon_moves", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "pokemon_research", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "pokemon_seen", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "tracker_challenge_progress", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "tracker_challenges", + "entityType": "tables", + "schema": "ref" + }, + { + "isRlsEnabled": false, + "name": "tracker_ranks", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "tracker_weapon_ranks", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "animals", + "entityType": "tables", + "schema": "animaldex" + }, + { + "isRlsEnabled": false, + "name": "sighting_photos", + "entityType": "tables", + "schema": "animaldex" + }, + { + "isRlsEnabled": false, + "name": "sightings", + "entityType": "tables", + "schema": "animaldex" + }, + { + "isRlsEnabled": false, + "name": "columns", + "entityType": "tables", + "schema": "meta" + }, + { + "isRlsEnabled": false, + "name": "edit_log", + "entityType": "tables", + "schema": "meta" + }, + { + "isRlsEnabled": false, + "name": "tables", + "entityType": "tables", + "schema": "meta" + }, + { + "isRlsEnabled": false, + "name": "accounts", + "entityType": "tables", + "schema": "money" + }, + { + "isRlsEnabled": false, + "name": "bank_sessions", + "entityType": "tables", + "schema": "money" + }, + { + "isRlsEnabled": false, + "name": "forecasts", + "entityType": "tables", + "schema": "money" + }, + { + "isRlsEnabled": false, + "name": "insurances", + "entityType": "tables", + "schema": "money" + }, + { + "isRlsEnabled": false, + "name": "projection_settings", + "entityType": "tables", + "schema": "money" + }, + { + "isRlsEnabled": false, + "name": "recurring", + "entityType": "tables", + "schema": "money" + }, + { + "isRlsEnabled": false, + "name": "transactions", + "entityType": "tables", + "schema": "money" + }, + { + "isRlsEnabled": false, + "name": "utility_readings", + "entityType": "tables", + "schema": "money" + }, + { + "isRlsEnabled": false, + "name": "utility_settings", + "entityType": "tables", + "schema": "money" + }, + { + "isRlsEnabled": false, + "name": "wishlist", + "entityType": "tables", + "schema": "money" + }, + { + "isRlsEnabled": false, + "name": "daily_prices", + "entityType": "tables", + "schema": "cs" + }, + { + "isRlsEnabled": false, + "name": "fx_rates", + "entityType": "tables", + "schema": "cs" + }, + { + "isRlsEnabled": false, + "name": "history_fetches", + "entityType": "tables", + "schema": "cs" + }, + { + "isRlsEnabled": false, + "name": "item_dimensions", + "entityType": "tables", + "schema": "cs" + }, + { + "isRlsEnabled": false, + "name": "items", + "entityType": "tables", + "schema": "cs" + }, + { + "isRlsEnabled": false, + "name": "price_observations", + "entityType": "tables", + "schema": "cs" + }, + { + "isRlsEnabled": false, + "name": "price_streams", + "entityType": "tables", + "schema": "cs" + }, + { + "isRlsEnabled": false, + "name": "price_windows", + "entityType": "tables", + "schema": "cs" + }, + { + "isRlsEnabled": false, + "name": "skins", + "entityType": "tables", + "schema": "cs" + }, + { + "isRlsEnabled": false, + "name": "alert_rules", + "entityType": "tables", + "schema": "house" + }, + { + "isRlsEnabled": false, + "name": "listings", + "entityType": "tables", + "schema": "house" + }, + { + "isRlsEnabled": false, + "name": "price_history", + "entityType": "tables", + "schema": "house" + }, + { + "isRlsEnabled": false, + "name": "searches", + "entityType": "tables", + "schema": "house" + }, + { + "isRlsEnabled": false, + "name": "worker_runs", + "entityType": "tables", + "schema": "house" + }, + { + "isRlsEnabled": false, + "name": "appointments", + "entityType": "tables", + "schema": "health" + }, + { + "isRlsEnabled": false, + "name": "body_measurements", + "entityType": "tables", + "schema": "health" + }, + { + "isRlsEnabled": false, + "name": "medications", + "entityType": "tables", + "schema": "health" + }, + { + "isRlsEnabled": false, + "name": "nutrition_daily", + "entityType": "tables", + "schema": "health" + }, + { + "isRlsEnabled": false, + "name": "sleep", + "entityType": "tables", + "schema": "health" + }, + { + "isRlsEnabled": false, + "name": "vaccinations", + "entityType": "tables", + "schema": "health" + }, + { + "isRlsEnabled": false, + "name": "workouts", + "entityType": "tables", + "schema": "health" + }, + { + "isRlsEnabled": false, + "name": "deleted_works", + "entityType": "tables", + "schema": "books" + }, + { + "isRlsEnabled": false, + "name": "files", + "entityType": "tables", + "schema": "books" + }, + { + "isRlsEnabled": false, + "name": "notes", + "entityType": "tables", + "schema": "books" + }, + { + "isRlsEnabled": false, + "name": "progress", + "entityType": "tables", + "schema": "books" + }, + { + "isRlsEnabled": false, + "name": "sessions", + "entityType": "tables", + "schema": "books" + }, + { + "isRlsEnabled": false, + "name": "shelf_works", + "entityType": "tables", + "schema": "books" + }, + { + "isRlsEnabled": false, + "name": "shelves", + "entityType": "tables", + "schema": "books" + }, + { + "isRlsEnabled": false, + "name": "works", + "entityType": "tables", + "schema": "books" + }, + { + "isRlsEnabled": false, + "name": "activity", + "entityType": "tables", + "schema": "tasks" + }, + { + "isRlsEnabled": false, + "name": "areas", + "entityType": "tables", + "schema": "tasks" + }, + { + "isRlsEnabled": false, + "name": "goals", + "entityType": "tables", + "schema": "tasks" + }, + { + "isRlsEnabled": false, + "name": "metric_sources", + "entityType": "tables", + "schema": "tasks" + }, + { + "isRlsEnabled": false, + "name": "tasks", + "entityType": "tables", + "schema": "tasks" + }, + { + "isRlsEnabled": false, + "name": "categories", + "entityType": "tables", + "schema": "groceries" + }, + { + "isRlsEnabled": false, + "name": "groups", + "entityType": "tables", + "schema": "groceries" + }, + { + "isRlsEnabled": false, + "name": "import_runs", + "entityType": "tables", + "schema": "groceries" + }, + { + "isRlsEnabled": false, + "name": "item_prices", + "entityType": "tables", + "schema": "groceries" + }, + { + "isRlsEnabled": false, + "name": "item_sizes", + "entityType": "tables", + "schema": "groceries" + }, + { + "isRlsEnabled": false, + "name": "items", + "entityType": "tables", + "schema": "groceries" + }, + { + "isRlsEnabled": false, + "name": "manual_prices", + "entityType": "tables", + "schema": "groceries" + }, + { + "isRlsEnabled": false, + "name": "stats_snapshots", + "entityType": "tables", + "schema": "groceries" + }, + { + "isRlsEnabled": false, + "name": "stores", + "entityType": "tables", + "schema": "groceries" + }, + { + "isRlsEnabled": false, + "name": "synonyms", + "entityType": "tables", + "schema": "groceries" + }, + { + "isRlsEnabled": false, + "name": "links", + "entityType": "tables", + "schema": "home" + }, + { + "isRlsEnabled": false, + "name": "snapshots", + "entityType": "tables", + "schema": "home" + }, + { + "isRlsEnabled": false, + "name": "activity", + "entityType": "tables", + "schema": "cars" + }, + { + "isRlsEnabled": false, + "name": "brands", + "entityType": "tables", + "schema": "cars" + }, + { + "isRlsEnabled": false, + "name": "models", + "entityType": "tables", + "schema": "cars" + }, + { + "isRlsEnabled": false, + "name": "photos", + "entityType": "tables", + "schema": "cars" + }, + { + "isRlsEnabled": false, + "name": "seen", + "entityType": "tables", + "schema": "cars" + }, + { + "isRlsEnabled": false, + "name": "variants", + "entityType": "tables", + "schema": "cars" + }, + { + "isRlsEnabled": false, + "name": "activity", + "entityType": "tables", + "schema": "planes" + }, + { + "isRlsEnabled": false, + "name": "makers", + "entityType": "tables", + "schema": "planes" + }, + { + "isRlsEnabled": false, + "name": "photos", + "entityType": "tables", + "schema": "planes" + }, + { + "isRlsEnabled": false, + "name": "seen", + "entityType": "tables", + "schema": "planes" + }, + { + "isRlsEnabled": false, + "name": "types", + "entityType": "tables", + "schema": "planes" + }, + { + "isRlsEnabled": false, + "name": "activity", + "entityType": "tables", + "schema": "wildlife" + }, + { + "isRlsEnabled": false, + "name": "groups", + "entityType": "tables", + "schema": "wildlife" + }, + { + "isRlsEnabled": false, + "name": "photos", + "entityType": "tables", + "schema": "wildlife" + }, + { + "isRlsEnabled": false, + "name": "seen", + "entityType": "tables", + "schema": "wildlife" + }, + { + "isRlsEnabled": false, + "name": "species", + "entityType": "tables", + "schema": "wildlife" + }, + { + "isRlsEnabled": false, + "name": "activity", + "entityType": "tables", + "schema": "trains" + }, + { + "isRlsEnabled": false, + "name": "makers", + "entityType": "tables", + "schema": "trains" + }, + { + "isRlsEnabled": false, + "name": "operators", + "entityType": "tables", + "schema": "trains" + }, + { + "isRlsEnabled": false, + "name": "photos", + "entityType": "tables", + "schema": "trains" + }, + { + "isRlsEnabled": false, + "name": "seen", + "entityType": "tables", + "schema": "trains" + }, + { + "isRlsEnabled": false, + "name": "type_operators", + "entityType": "tables", + "schema": "trains" + }, + { + "isRlsEnabled": false, + "name": "types", + "entityType": "tables", + "schema": "trains" + }, + { + "isRlsEnabled": false, + "name": "albums", + "entityType": "tables", + "schema": "music" + }, + { + "isRlsEnabled": false, + "name": "artist_tag_fetch", + "entityType": "tables", + "schema": "music" + }, + { + "isRlsEnabled": false, + "name": "artist_tags", + "entityType": "tables", + "schema": "music" + }, + { + "isRlsEnabled": false, + "name": "artists", + "entityType": "tables", + "schema": "music" + }, + { + "isRlsEnabled": false, + "name": "import_state", + "entityType": "tables", + "schema": "music" + }, + { + "isRlsEnabled": false, + "name": "now_playing", + "entityType": "tables", + "schema": "music" + }, + { + "isRlsEnabled": false, + "name": "osu_match_cache", + "entityType": "tables", + "schema": "music" + }, + { + "isRlsEnabled": false, + "name": "plays", + "entityType": "tables", + "schema": "music" + }, + { + "isRlsEnabled": false, + "name": "spotify_auth", + "entityType": "tables", + "schema": "music" + }, + { + "isRlsEnabled": false, + "name": "track_artists", + "entityType": "tables", + "schema": "music" + }, + { + "isRlsEnabled": false, + "name": "tracks", + "entityType": "tables", + "schema": "music" + }, + { + "isRlsEnabled": false, + "name": "components", + "entityType": "tables", + "schema": "hardware" + }, + { + "isRlsEnabled": false, + "name": "devices", + "entityType": "tables", + "schema": "hardware" + }, + { + "isRlsEnabled": false, + "name": "sensitivities", + "entityType": "tables", + "schema": "hardware" + }, + { + "isRlsEnabled": false, + "name": "setup_photos", + "entityType": "tables", + "schema": "hardware" + }, + { + "isRlsEnabled": false, + "name": "identity", + "entityType": "tables", + "schema": "dataholders" + }, + { + "isRlsEnabled": false, + "name": "orgs", + "entityType": "tables", + "schema": "dataholders" + }, + { + "isRlsEnabled": false, + "name": "bis_policy_rate", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "cbs_code", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "cbs_obs", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "cbs_table", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "cw_cbcs_bop", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "cw_cbs_cpi", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "cw_cbs_file", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "cw_cbs_gdp_industry", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "cw_cbs_gov_finance", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "cw_cbs_lfs", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "cw_cbs_population", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "cw_cbs_tourism", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "eb_item", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "ec_crossborder", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "ec_dayahead_price", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "elec_election", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "elec_result", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "elec_turnout", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "ep_label_agg", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "eurostat_dataset", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "eurostat_obs", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "fetch_run", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "fred_obs", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "gdelt_theme_vol", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "gt_trending", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "hist_event", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "hist_fact", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "hist_holiday", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "hist_office", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "hist_person", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "imf_weo", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "obs", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "op_poll", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "op_wiki_snapshot", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "owid_energy", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "owid_maddison", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "region", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "rf_budget_table", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "series", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "source", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "unesco_site", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "usas_agency_fy", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "ust_debt_daily", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "ust_mts_outlays", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "ust_mts_receipts", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "wb_indicator", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "whr_score", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "wo_compass_override", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "wo_country", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "wo_cultural_map", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "wo_narrative", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "wo_party", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "wo_party_position", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "wo_source", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "wo_value_score", + "entityType": "tables", + "schema": "stats" + }, + { + "isRlsEnabled": false, + "name": "pubg_markers", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "pubg_matches", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "pubg_rooms", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "bot_status", + "entityType": "tables", + "schema": "ai" + }, + { + "isRlsEnabled": false, + "name": "news_items", + "entityType": "tables", + "schema": "ai" + }, + { + "isRlsEnabled": false, + "name": "provider_setup_entries", + "entityType": "tables", + "schema": "ai" + }, + { + "isRlsEnabled": false, + "name": "provider_setup_providers", + "entityType": "tables", + "schema": "ai" + }, + { + "isRlsEnabled": false, + "name": "usage_entries", + "entityType": "tables", + "schema": "ai" + }, + { + "isRlsEnabled": false, + "name": "episodes", + "entityType": "tables", + "schema": "movies" + }, + { + "isRlsEnabled": false, + "name": "plays", + "entityType": "tables", + "schema": "movies" + }, + { + "isRlsEnabled": false, + "name": "recs", + "entityType": "tables", + "schema": "movies" + }, + { + "isRlsEnabled": false, + "name": "settings", + "entityType": "tables", + "schema": "movies" + }, + { + "isRlsEnabled": false, + "name": "titles", + "entityType": "tables", + "schema": "movies" + }, + { + "isRlsEnabled": false, + "name": "categories", + "entityType": "tables", + "schema": "worldtodo" + }, + { + "isRlsEnabled": false, + "name": "change_requests", + "entityType": "tables", + "schema": "worldtodo" + }, + { + "isRlsEnabled": false, + "name": "tasks", + "entityType": "tables", + "schema": "worldtodo" + }, + { + "isRlsEnabled": false, + "name": "osu_goals", + "entityType": "tables", + "schema": "games" + }, + { + "isRlsEnabled": false, + "name": "files", + "entityType": "tables", + "schema": "notes" + }, + { + "isRlsEnabled": false, + "name": "links", + "entityType": "tables", + "schema": "notes" + }, + { + "isRlsEnabled": false, + "name": "activity", + "entityType": "tables", + "schema": "math" + }, + { + "isRlsEnabled": false, + "name": "chapters", + "entityType": "tables", + "schema": "math" + }, + { + "isRlsEnabled": false, + "name": "parts", + "entityType": "tables", + "schema": "math" + }, + { + "isRlsEnabled": false, + "name": "sections", + "entityType": "tables", + "schema": "math" + }, + { + "isRlsEnabled": false, + "name": "entries", + "entityType": "tables", + "schema": "plant" + }, + { + "isRlsEnabled": false, + "name": "links", + "entityType": "tables", + "schema": "plant" + }, + { + "isRlsEnabled": false, + "name": "pending", + "entityType": "tables", + "schema": "plant" + }, + { + "isRlsEnabled": false, + "name": "channels", + "entityType": "tables", + "schema": "radio" + }, + { + "isRlsEnabled": false, + "name": "frequencies", + "entityType": "tables", + "schema": "radio" + }, + { + "isRlsEnabled": false, + "name": "iss_passes", + "entityType": "tables", + "schema": "radio" + }, + { + "isRlsEnabled": false, + "name": "iss_tle", + "entityType": "tables", + "schema": "radio" + }, + { + "isRlsEnabled": false, + "name": "log", + "entityType": "tables", + "schema": "radio" + }, + { + "isRlsEnabled": false, + "name": "nets", + "entityType": "tables", + "schema": "radio" + }, + { + "isRlsEnabled": false, + "name": "reminders", + "entityType": "tables", + "schema": "radio" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "issuer", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "provider_id", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "access_token", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "refresh_token", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id_token", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "access_token_expires_at", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "refresh_token_expires_at", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "scope", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "password", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "auth", + "table": "account" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "auth", + "table": "session" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "expires_at", + "entityType": "columns", + "schema": "auth", + "table": "session" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "token", + "entityType": "columns", + "schema": "auth", + "table": "session" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "auth", + "table": "session" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "auth", + "table": "session" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ip_address", + "entityType": "columns", + "schema": "auth", + "table": "session" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_agent", + "entityType": "columns", + "schema": "auth", + "table": "session" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "auth", + "table": "session" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "auth", + "table": "user" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "auth", + "table": "user" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'user'", + "generated": null, + "identity": null, + "name": "role", + "entityType": "columns", + "schema": "auth", + "table": "user" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "email", + "entityType": "columns", + "schema": "auth", + "table": "user" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "email_verified", + "entityType": "columns", + "schema": "auth", + "table": "user" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image", + "entityType": "columns", + "schema": "auth", + "table": "user" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "auth", + "table": "user" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "auth", + "table": "user" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "auth", + "table": "verification" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "identifier", + "entityType": "columns", + "schema": "auth", + "table": "verification" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "auth", + "table": "verification" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "expires_at", + "entityType": "columns", + "schema": "auth", + "table": "verification" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "auth", + "table": "verification" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "auth", + "table": "verification" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "site", + "table": "blog_articles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "site", + "table": "blog_articles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "site", + "table": "blog_articles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "''", + "generated": null, + "identity": null, + "name": "content", + "entityType": "columns", + "schema": "site", + "table": "blog_articles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "tags", + "entityType": "columns", + "schema": "site", + "table": "blog_articles" + }, + { + "type": "blog_article_status", + "typeSchema": "site", + "notNull": true, + "dimensions": 0, + "default": "'draft'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "site", + "table": "blog_articles" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "site", + "table": "blog_articles" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "site", + "table": "blog_articles" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "site", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "site", + "table": "tasks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "current_points", + "entityType": "columns", + "schema": "site", + "table": "tasks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "total_points", + "entityType": "columns", + "schema": "site", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "site", + "table": "tasks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "site", + "table": "tasks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "site", + "table": "tasks" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "site", + "table": "task_topics" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "task_id", + "entityType": "columns", + "schema": "site", + "table": "task_topics" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "topic_id", + "entityType": "columns", + "schema": "site", + "table": "task_topics" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "site", + "table": "task_topics" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "site", + "table": "task_topics" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "site", + "table": "topics" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "site", + "table": "topics" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "emoji", + "entityType": "columns", + "schema": "site", + "table": "topics" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "site", + "table": "topics" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "site", + "table": "topics" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_settings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_settings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_settings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_settings" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_games" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_games" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_games" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_games" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "generation", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_games" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_games" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "breeding", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_games" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_games" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_games" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "number", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "generation", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type1", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type2", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "hp", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "attack", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "defense", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "special_attack", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "special_defense", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "speed", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "evolves_from", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "evolution_chain", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "is_baby", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "is_legendary", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "is_mythical", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pokemon_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "location_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "method", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "min_level", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_level", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rarity", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "form", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "conditions", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'pokeapi'", + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "from_pokemon_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "to_pokemon_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "method", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'pokeapi'", + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pokemon_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "type": "availability", + "typeSchema": "ref", + "notNull": true, + "dimensions": 0, + "default": "'catchable'", + "generated": null, + "identity": null, + "name": "availability", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'pokeapi'", + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_locations" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_locations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_locations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_locations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "region", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_locations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_locations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image_key", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_locations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image_credit", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_locations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'pokeapi'", + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_locations" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_locations" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_locations" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_entries" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pokemon_game_entry_id", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_entries" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_games" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_games" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_games" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_games" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "catch_em_all_games" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "tracker_games" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "ref", + "table": "tracker_games" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "franchise", + "entityType": "columns", + "schema": "ref", + "table": "tracker_games" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "ref", + "table": "tracker_games" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "short_name", + "entityType": "columns", + "schema": "ref", + "table": "tracker_games" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "release_year", + "entityType": "columns", + "schema": "ref", + "table": "tracker_games" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "ref", + "table": "tracker_games" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rules", + "entityType": "columns", + "schema": "ref", + "table": "tracker_games" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ref", + "table": "tracker_games" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ref", + "table": "tracker_games" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "icon", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "post_launch", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ref", + "table": "tracker_items" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "tracker_progress" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "tracker_progress" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "games", + "table": "tracker_progress" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'done'", + "generated": null, + "identity": null, + "name": "milestone", + "entityType": "columns", + "schema": "games", + "table": "tracker_progress" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "tracker_progress" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "tracker_progress" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "short_name", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'video'", + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'unknown'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "platform", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "tracker_href", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "current_rank", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "peak_rank", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rank_label", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "aliases", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "100", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "active", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "library" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code", + "entityType": "columns", + "schema": "games", + "table": "cs2_share_codes" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "steam_id", + "entityType": "columns", + "schema": "games", + "table": "cs2_share_codes" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "match_id", + "entityType": "columns", + "schema": "games", + "table": "cs2_share_codes" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "outcome_id", + "entityType": "columns", + "schema": "games", + "table": "cs2_share_codes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "token", + "entityType": "columns", + "schema": "games", + "table": "cs2_share_codes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "found_at", + "entityType": "columns", + "schema": "games", + "table": "cs2_share_codes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "demo_parsed_at", + "entityType": "columns", + "schema": "games", + "table": "cs2_share_codes" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "external_id", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "enabled", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "state", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_polled_at", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_success_at", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_error", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "accounts" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "match_id", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "player_id", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "team", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "is_me", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kills", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "deaths", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "assists", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "damage", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "headshots", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "placement", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "numeric", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rating", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "stats", + "entityType": "columns", + "schema": "games", + "table": "match_players" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "external_id", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "played_at", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "duration_s", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mode", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "map", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "result", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "score_own", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "score_opp", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "placement", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "team_count", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kills", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "deaths", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "assists", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "damage", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "headshots", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "numeric", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rating", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rating_label", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "match_count", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "share_code", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "extra", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "raw", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "matches" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "season", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'all'", + "generated": null, + "identity": null, + "name": "board", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rank", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_rank", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rank_points", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_rank_points", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "matches", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wins", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "losses", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kills", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "deaths", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "raw", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "seasons" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "snapshots" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game", + "entityType": "columns", + "schema": "games", + "table": "snapshots" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "games", + "table": "snapshots" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "games", + "table": "snapshots" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "taken_at", + "entityType": "columns", + "schema": "games", + "table": "snapshots" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "data", + "entityType": "columns", + "schema": "games", + "table": "snapshots" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'osu'", + "generated": null, + "identity": null, + "name": "mode", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "beatmap_url", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "score_url", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'pass'", + "generated": null, + "identity": null, + "name": "goal", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'stamina'", + "generated": null, + "identity": null, + "name": "skill", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bpm", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "duration", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "numeric", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "accuracy", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "combo", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "misses", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "numeric", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pp", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'NM'", + "generated": null, + "identity": null, + "name": "mods", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "numeric(4,2)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1.00", + "generated": null, + "identity": null, + "name": "rate", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "achieved", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "played_on", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "''", + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "osu_entries" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pokemon_id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "''", + "generated": null, + "identity": null, + "name": "nickname", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "level", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "moves", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "party_slot", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "shiny", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nature", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ability", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ball", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "location", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'caught'", + "generated": null, + "identity": null, + "name": "obtained", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'story'", + "generated": null, + "identity": null, + "name": "stage", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "''", + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "caught_on", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "pokemon_catches" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_dex_numbers" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pokemon_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_dex_numbers" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_dex_numbers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dex", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_dex_numbers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dex_name", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_dex_numbers" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "number", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_dex_numbers" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_game_research" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "version_group", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_game_research" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "regions", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_game_research" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'story'", + "generated": null, + "identity": null, + "name": "stage", + "entityType": "columns", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "location", + "entityType": "columns", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "completed", + "entityType": "columns", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_learnsets" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pokemon_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_learnsets" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "version_group", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_learnsets" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "moves", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_learnsets" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'story'", + "generated": null, + "identity": null, + "name": "stage", + "entityType": "columns", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "done", + "entityType": "columns", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "''", + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_moves" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_moves" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_moves" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_moves" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "power", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_moves" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "accuracy", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_moves" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pp", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_moves" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "priority", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_moves" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_moves" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pokemon_id", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_research" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "facts", + "entityType": "columns", + "schema": "ref", + "table": "pokemon_research" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_seen" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_seen" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_seen" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pokemon_id", + "entityType": "columns", + "schema": "games", + "table": "pokemon_seen" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "pokemon_seen" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "pokemon_seen" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "tracker_challenge_progress" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "tracker_challenge_progress" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "challenge_id", + "entityType": "columns", + "schema": "games", + "table": "tracker_challenge_progress" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "current", + "entityType": "columns", + "schema": "games", + "table": "tracker_challenge_progress" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "done", + "entityType": "columns", + "schema": "games", + "table": "tracker_challenge_progress" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "tracker_challenge_progress" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "tracker_challenge_progress" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "requirement", + "entityType": "columns", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "reward", + "entityType": "columns", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "icon", + "entityType": "columns", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target", + "entityType": "columns", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_url", + "entityType": "columns", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "tracker_ranks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "tracker_ranks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game_id", + "entityType": "columns", + "schema": "games", + "table": "tracker_ranks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "level", + "entityType": "columns", + "schema": "games", + "table": "tracker_ranks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "prestige", + "entityType": "columns", + "schema": "games", + "table": "tracker_ranks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "tracker_ranks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "tracker_ranks" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "level", + "entityType": "columns", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "prestige", + "entityType": "columns", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "species", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "breed", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "animal_name", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ai_breed_suggestion", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ai_breed_confidence", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "submitted_at", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "accepted_at", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "denied_at", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "animaldex", + "table": "animals" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "animaldex", + "table": "sighting_photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sighting_id", + "entityType": "columns", + "schema": "animaldex", + "table": "sighting_photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "r2_key", + "entityType": "columns", + "schema": "animaldex", + "table": "sighting_photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "animaldex", + "table": "sighting_photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "animaldex", + "table": "sighting_photos" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "uploaded_at", + "entityType": "columns", + "schema": "animaldex", + "table": "sighting_photos" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "animaldex", + "table": "sighting_photos" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "animaldex", + "table": "sighting_photos" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "animaldex", + "table": "sightings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "animal_id", + "entityType": "columns", + "schema": "animaldex", + "table": "sightings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "reporter_name", + "entityType": "columns", + "schema": "animaldex", + "table": "sightings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "seen_at", + "entityType": "columns", + "schema": "animaldex", + "table": "sightings" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lat", + "entityType": "columns", + "schema": "animaldex", + "table": "sightings" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lng", + "entityType": "columns", + "schema": "animaldex", + "table": "sightings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "submitted_at", + "entityType": "columns", + "schema": "animaldex", + "table": "sightings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "accepted_at", + "entityType": "columns", + "schema": "animaldex", + "table": "sightings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "denied_at", + "entityType": "columns", + "schema": "animaldex", + "table": "sightings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "animaldex", + "table": "sightings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "animaldex", + "table": "sightings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "byDefault", + "name": "columns_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "meta", + "table": "columns" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "table_id", + "entityType": "columns", + "schema": "meta", + "table": "columns" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "column_name", + "entityType": "columns", + "schema": "meta", + "table": "columns" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "meta", + "table": "columns" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ui_type", + "entityType": "columns", + "schema": "meta", + "table": "columns" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "options", + "entityType": "columns", + "schema": "meta", + "table": "columns" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "position", + "entityType": "columns", + "schema": "meta", + "table": "columns" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "hidden", + "entityType": "columns", + "schema": "meta", + "table": "columns" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "help_text", + "entityType": "columns", + "schema": "meta", + "table": "columns" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "meta", + "table": "columns" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "meta", + "table": "columns" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "always", + "name": "edit_log_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "9223372036854775807", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "meta", + "table": "edit_log" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "at", + "entityType": "columns", + "schema": "meta", + "table": "edit_log" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "meta", + "table": "edit_log" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_email", + "entityType": "columns", + "schema": "meta", + "table": "edit_log" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "schema_name", + "entityType": "columns", + "schema": "meta", + "table": "edit_log" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "table_name", + "entityType": "columns", + "schema": "meta", + "table": "edit_log" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "action", + "entityType": "columns", + "schema": "meta", + "table": "edit_log" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pk", + "entityType": "columns", + "schema": "meta", + "table": "edit_log" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "before", + "entityType": "columns", + "schema": "meta", + "table": "edit_log" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "after", + "entityType": "columns", + "schema": "meta", + "table": "edit_log" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "byDefault", + "name": "tables_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "schema_name", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "table_name", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "display_name", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "icon", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "picture_url", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "editable", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "has_done", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "default_sort", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "archived_at", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "meta", + "table": "tables" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "opening_balance_cents", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'spendable'", + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "include_in_total", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "archived", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "color", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'personal'", + "generated": null, + "identity": null, + "name": "scope", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "owner", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iban", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "external_uid", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'manual'", + "generated": null, + "identity": null, + "name": "provider", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bank_balance_cents", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bank_balance_type", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bank_balance_at", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "money", + "table": "accounts" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'enablebanking'", + "generated": null, + "identity": null, + "name": "provider", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "session_id", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "aspsp_name", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "aspsp_country", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "psu_type", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'authorized'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "valid_until", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'[]'", + "generated": null, + "identity": null, + "name": "accounts", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_synced_at", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_error", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "money", + "table": "bank_sessions" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "money", + "table": "forecasts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "money", + "table": "forecasts" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "money", + "table": "forecasts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "money", + "table": "forecasts" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "amount_cents", + "entityType": "columns", + "schema": "money", + "table": "forecasts" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "money", + "table": "forecasts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "money", + "table": "forecasts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "money", + "table": "forecasts" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "money", + "table": "insurances" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "money", + "table": "insurances" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "money", + "table": "insurances" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "provider", + "entityType": "columns", + "schema": "money", + "table": "insurances" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "coverage", + "entityType": "columns", + "schema": "money", + "table": "insurances" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "premium_cents", + "entityType": "columns", + "schema": "money", + "table": "insurances" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'monthly'", + "generated": null, + "identity": null, + "name": "cadence", + "entityType": "columns", + "schema": "money", + "table": "insurances" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "money", + "table": "insurances" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "money", + "table": "insurances" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "money", + "table": "projection_settings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "money", + "table": "projection_settings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "investment_account_id", + "entityType": "columns", + "schema": "money", + "table": "projection_settings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "100000", + "generated": null, + "identity": null, + "name": "reserve_cents", + "entityType": "columns", + "schema": "money", + "table": "projection_settings" + }, + { + "type": "numeric(5,2)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'5.00'", + "generated": null, + "identity": null, + "name": "annual_return_percent", + "entityType": "columns", + "schema": "money", + "table": "projection_settings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'excess'", + "generated": null, + "identity": null, + "name": "contribution_mode", + "entityType": "columns", + "schema": "money", + "table": "projection_settings" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "include_recurring", + "entityType": "columns", + "schema": "money", + "table": "projection_settings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "fixed_monthly_cents", + "entityType": "columns", + "schema": "money", + "table": "projection_settings" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "end_date", + "entityType": "columns", + "schema": "money", + "table": "projection_settings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "money", + "table": "projection_settings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "money", + "table": "projection_settings" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "money", + "table": "recurring" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "money", + "table": "recurring" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "money", + "table": "recurring" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "amount_cents", + "entityType": "columns", + "schema": "money", + "table": "recurring" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cadence", + "entityType": "columns", + "schema": "money", + "table": "recurring" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "starts_on", + "entityType": "columns", + "schema": "money", + "table": "recurring" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ends_on", + "entityType": "columns", + "schema": "money", + "table": "recurring" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "money", + "table": "recurring" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "money", + "table": "recurring" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "money", + "table": "recurring" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "amount_cents", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "external_id", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'manual'", + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "booking_status", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "counterparty", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "raw", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value_date", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "money", + "table": "transactions" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "money", + "table": "utility_readings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "money", + "table": "utility_readings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "money", + "table": "utility_readings" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "money", + "table": "utility_readings" + }, + { + "type": "numeric(12,3)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "reading", + "entityType": "columns", + "schema": "money", + "table": "utility_readings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "money", + "table": "utility_readings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "money", + "table": "utility_readings" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "money", + "table": "utility_settings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "money", + "table": "utility_settings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "money", + "table": "utility_settings" + }, + { + "type": "numeric(12,4)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'0'", + "generated": null, + "identity": null, + "name": "rate_per_unit", + "entityType": "columns", + "schema": "money", + "table": "utility_settings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "monthly_advance_cents", + "entityType": "columns", + "schema": "money", + "table": "utility_settings" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "billing_start", + "entityType": "columns", + "schema": "money", + "table": "utility_settings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "money", + "table": "utility_settings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "money", + "table": "utility_settings" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "money", + "table": "wishlist" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "user_id", + "entityType": "columns", + "schema": "money", + "table": "wishlist" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "money", + "table": "wishlist" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "estimated_cents", + "entityType": "columns", + "schema": "money", + "table": "wishlist" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "3", + "generated": null, + "identity": null, + "name": "priority", + "entityType": "columns", + "schema": "money", + "table": "wishlist" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "money", + "table": "wishlist" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "money", + "table": "wishlist" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "money", + "table": "wishlist" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "cs", + "table": "daily_prices" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "stream_id", + "entityType": "columns", + "schema": "cs", + "table": "daily_prices" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "day", + "entityType": "columns", + "schema": "cs", + "table": "daily_prices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "price_cents", + "entityType": "columns", + "schema": "cs", + "table": "daily_prices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "volume", + "entityType": "columns", + "schema": "cs", + "table": "daily_prices" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "day", + "entityType": "columns", + "schema": "cs", + "table": "fx_rates" + }, + { + "type": "numeric(12,8)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "usd_eur", + "entityType": "columns", + "schema": "cs", + "table": "fx_rates" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "cs", + "table": "history_fetches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "cs", + "table": "history_fetches" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "fetched_at", + "entityType": "columns", + "schema": "cs", + "table": "history_fetches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "points", + "entityType": "columns", + "schema": "cs", + "table": "history_fetches" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "first_day", + "entityType": "columns", + "schema": "cs", + "table": "history_fetches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error", + "entityType": "columns", + "schema": "cs", + "table": "history_fetches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "cs", + "table": "item_dimensions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "cs", + "table": "item_dimensions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "cs", + "table": "item_dimensions" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "market_hash_name", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "icon_url", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_type", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "skin_id", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "phase", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wear", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "stattrak", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "souvenir", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "first_seen_at", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "last_seen_at", + "entityType": "columns", + "schema": "cs", + "table": "items" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "always", + "name": "price_observations_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "9223372036854775807", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "cs", + "table": "price_observations" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "cs", + "table": "price_observations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "cs", + "table": "price_observations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "currency", + "entityType": "columns", + "schema": "cs", + "table": "price_observations" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "observed_at", + "entityType": "columns", + "schema": "cs", + "table": "price_observations" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "price_cents", + "entityType": "columns", + "schema": "cs", + "table": "price_observations" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "volume", + "entityType": "columns", + "schema": "cs", + "table": "price_observations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "cs", + "table": "price_observations" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "imported_at", + "entityType": "columns", + "schema": "cs", + "table": "price_observations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "cs", + "table": "price_streams" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "currency", + "entityType": "columns", + "schema": "cs", + "table": "price_streams" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "cs", + "table": "price_streams" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "byDefault", + "name": "price_streams_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "32767", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "cs", + "table": "price_streams" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "cs", + "table": "price_streams" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_fetched_at", + "entityType": "columns", + "schema": "cs", + "table": "price_streams" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_rows", + "entityType": "columns", + "schema": "cs", + "table": "price_streams" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_error", + "entityType": "columns", + "schema": "cs", + "table": "price_streams" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "cs", + "table": "price_windows" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "cs", + "table": "price_windows" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "currency", + "entityType": "columns", + "schema": "cs", + "table": "price_windows" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "span", + "entityType": "columns", + "schema": "cs", + "table": "price_windows" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "median_cents", + "entityType": "columns", + "schema": "cs", + "table": "price_windows" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "avg_cents", + "entityType": "columns", + "schema": "cs", + "table": "price_windows" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "min_cents", + "entityType": "columns", + "schema": "cs", + "table": "price_windows" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_cents", + "entityType": "columns", + "schema": "cs", + "table": "price_windows" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "volume", + "entityType": "columns", + "schema": "cs", + "table": "price_windows" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "cs", + "table": "price_windows" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "weapon", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pattern", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rarity", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rarity_color", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "min_float", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_float", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "collections", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'bymykel'", + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "cs", + "table": "skins" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "enabled", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'rent'", + "generated": null, + "identity": null, + "name": "offer", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "min_price", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_price", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "min_area", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "min_bedrooms", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "cities", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "property_types", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "house", + "table": "alert_rules" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_id", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "external_id", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "offer", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "property_type", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "street", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "postal_code", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "city", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "city_slug", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "neighbourhood", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "price_eur", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area_m2", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rooms", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bedrooms", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bathrooms", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "construction_year", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "energy_label", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "interior", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "deposit_eur", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "available_from", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "contract_type", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "agent", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image_url", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "features", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lat", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lng", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "offered_at", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "first_seen_at", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'slow'", + "generated": null, + "identity": null, + "name": "first_seen_lane", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "last_seen_at", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "detail_fetched_at", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "removed_at", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "alerted_at", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "address_key", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "duplicate_of", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "total_price_eur", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lbm_score", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lbm_class", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lbm_onv_class", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lbm_level", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lbm_precision", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lbm_buurt_code", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lbm_buurt_name", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lbm_year", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lbm_detail", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lbm_query", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lbm_scored_at", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "contact_status", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "contact_at", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "contact_by", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "contact_note", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "contact_ref", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "viewing_at", + "entityType": "columns", + "schema": "house", + "table": "listings" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "listing_id", + "entityType": "columns", + "schema": "house", + "table": "price_history" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "observed_at", + "entityType": "columns", + "schema": "house", + "table": "price_history" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "price_eur", + "entityType": "columns", + "schema": "house", + "table": "price_history" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "search_url", + "entityType": "columns", + "schema": "house", + "table": "searches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "house", + "table": "searches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lane", + "entityType": "columns", + "schema": "house", + "table": "searches" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "first_synced_at", + "entityType": "columns", + "schema": "house", + "table": "searches" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "last_synced_at", + "entityType": "columns", + "schema": "house", + "table": "searches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "last_found", + "entityType": "columns", + "schema": "house", + "table": "searches" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "always", + "name": "worker_runs_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "9223372036854775807", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "house", + "table": "worker_runs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "house", + "table": "worker_runs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lane", + "entityType": "columns", + "schema": "house", + "table": "worker_runs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "house", + "table": "worker_runs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "house", + "table": "worker_runs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "http_status", + "entityType": "columns", + "schema": "house", + "table": "worker_runs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "found", + "entityType": "columns", + "schema": "house", + "table": "worker_runs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "duration_ms", + "entityType": "columns", + "schema": "house", + "table": "worker_runs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "message", + "entityType": "columns", + "schema": "house", + "table": "worker_runs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "house", + "table": "worker_runs" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "gen_random_uuid()", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "health", + "table": "appointments" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "health", + "table": "appointments" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'appointment'", + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "health", + "table": "appointments" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "provider", + "entityType": "columns", + "schema": "health", + "table": "appointments" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "health", + "table": "appointments" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "health", + "table": "appointments" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "health", + "table": "appointments" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "gen_random_uuid()", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "numeric(5,2)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "weight_kg", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "numeric(5,1)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "waist_cm", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "numeric(4,1)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "body_fat_pct", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "numeric(5,2)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "muscle_mass_kg", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "numeric(5,2)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "skeletal_muscle_kg", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "numeric(4,2)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bone_mass_kg", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "numeric(4,1)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "visceral_fat", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "numeric(4,1)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "body_water_pct", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "numeric(4,1)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "protein_pct", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bmr_kcal", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "numeric(4,1)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bmi", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "measured_at", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "health", + "table": "body_measurements" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "gen_random_uuid()", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "health", + "table": "medications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "health", + "table": "medications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'medication'", + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "health", + "table": "medications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dose", + "entityType": "columns", + "schema": "health", + "table": "medications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "frequency", + "entityType": "columns", + "schema": "health", + "table": "medications" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "start_date", + "entityType": "columns", + "schema": "health", + "table": "medications" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "stop_date", + "entityType": "columns", + "schema": "health", + "table": "medications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "health", + "table": "medications" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "health", + "table": "medications" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "health", + "table": "medications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "gen_random_uuid()", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "health", + "table": "nutrition_daily" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "health", + "table": "nutrition_daily" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kcal", + "entityType": "columns", + "schema": "health", + "table": "nutrition_daily" + }, + { + "type": "numeric(5,1)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "protein_g", + "entityType": "columns", + "schema": "health", + "table": "nutrition_daily" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "health", + "table": "nutrition_daily" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "health", + "table": "nutrition_daily" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "health", + "table": "nutrition_daily" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "gen_random_uuid()", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "health", + "table": "sleep" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "health", + "table": "sleep" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bedtime", + "entityType": "columns", + "schema": "health", + "table": "sleep" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wake_time", + "entityType": "columns", + "schema": "health", + "table": "sleep" + }, + { + "type": "numeric(4,2)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": { + "as": "round((extract(epoch from (wake_time - bedtime)) / 3600)::numeric, 2)", + "type": "stored" + }, + "identity": null, + "name": "hours", + "entityType": "columns", + "schema": "health", + "table": "sleep" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "health", + "table": "sleep" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "health", + "table": "sleep" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "health", + "table": "sleep" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "gen_random_uuid()", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "health", + "table": "vaccinations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "vaccine", + "entityType": "columns", + "schema": "health", + "table": "vaccinations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target", + "entityType": "columns", + "schema": "health", + "table": "vaccinations" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dose_no", + "entityType": "columns", + "schema": "health", + "table": "vaccinations" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "health", + "table": "vaccinations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "batch_lot", + "entityType": "columns", + "schema": "health", + "table": "vaccinations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "provider", + "entityType": "columns", + "schema": "health", + "table": "vaccinations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "health", + "table": "vaccinations" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "health", + "table": "vaccinations" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "health", + "table": "vaccinations" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "health", + "table": "vaccinations" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "gen_random_uuid()", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "health", + "table": "workouts" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "health", + "table": "workouts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "session_id", + "entityType": "columns", + "schema": "health", + "table": "workouts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "exercise", + "entityType": "columns", + "schema": "health", + "table": "workouts" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sets", + "entityType": "columns", + "schema": "health", + "table": "workouts" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "reps", + "entityType": "columns", + "schema": "health", + "table": "workouts" + }, + { + "type": "numeric(6,2)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "load_kg", + "entityType": "columns", + "schema": "health", + "table": "workouts" + }, + { + "type": "numeric(3,1)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rpe", + "entityType": "columns", + "schema": "health", + "table": "workouts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "health", + "table": "workouts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "health", + "table": "workouts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "health", + "table": "workouts" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "books", + "table": "deleted_works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "books", + "table": "deleted_works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "authors", + "entityType": "columns", + "schema": "books", + "table": "deleted_works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "isbn13", + "entityType": "columns", + "schema": "books", + "table": "deleted_works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "annas_md5", + "entityType": "columns", + "schema": "books", + "table": "deleted_works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "file_sha256", + "entityType": "columns", + "schema": "books", + "table": "deleted_works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "file_paths", + "entityType": "columns", + "schema": "books", + "table": "deleted_works" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "source_refs", + "entityType": "columns", + "schema": "books", + "table": "deleted_works" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "merged_into", + "entityType": "columns", + "schema": "books", + "table": "deleted_works" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "deleted_at", + "entityType": "columns", + "schema": "books", + "table": "deleted_works" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "quarantined_at", + "entityType": "columns", + "schema": "books", + "table": "deleted_works" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "books", + "table": "files" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "work_id", + "entityType": "columns", + "schema": "books", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "path", + "entityType": "columns", + "schema": "books", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "format", + "entityType": "columns", + "schema": "books", + "table": "files" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "size_bytes", + "entityType": "columns", + "schema": "books", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sha256", + "entityType": "columns", + "schema": "books", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "md5", + "entityType": "columns", + "schema": "books", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "books", + "table": "files" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "books", + "table": "files" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "books", + "table": "files" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "books", + "table": "notes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "work_id", + "entityType": "columns", + "schema": "books", + "table": "notes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "file_id", + "entityType": "columns", + "schema": "books", + "table": "notes" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "locator", + "entityType": "columns", + "schema": "books", + "table": "notes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "page", + "entityType": "columns", + "schema": "books", + "table": "notes" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "highlight", + "entityType": "columns", + "schema": "books", + "table": "notes" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "books", + "table": "notes" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "color", + "entityType": "columns", + "schema": "books", + "table": "notes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "books", + "table": "notes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "books", + "table": "notes" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "work_id", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "file_id", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "locator", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "page", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "real", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "percent", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "finished_at", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "reading_status", + "typeSchema": "books", + "notNull": true, + "dimensions": 0, + "default": "'want_to_read'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rating", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_read_at", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "books", + "table": "progress" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "work_id", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "file_id", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ended_at", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "start_percent", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "end_percent", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "start_page", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "end_page", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pages_read", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'reader'", + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "books", + "table": "sessions" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "shelf_id", + "entityType": "columns", + "schema": "books", + "table": "shelf_works" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "work_id", + "entityType": "columns", + "schema": "books", + "table": "shelf_works" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "books", + "table": "shelf_works" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "added_at", + "entityType": "columns", + "schema": "books", + "table": "shelf_works" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "books", + "table": "shelves" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "books", + "table": "shelves" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "books", + "table": "shelves" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "books", + "table": "shelves" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "books", + "table": "shelves" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "books", + "table": "shelves" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "kind", + "typeSchema": "books", + "notNull": true, + "dimensions": 0, + "default": "'book'", + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "subtitle", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "authors", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "isbn10", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "isbn13", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "publisher", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "language", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "page_count", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "tags", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cover_url", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cover_path", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "openlibrary_work_id", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "openlibrary_edition_id", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "google_books_id", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "annas_md5", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "source_refs", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "metadata_status", + "typeSchema": "books", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "metadata_status", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metadata_source", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metadata_fetched_at", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "site_name", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "published_at", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "archived_at", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "books", + "table": "works" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "tasks", + "table": "activity" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "task_id", + "entityType": "columns", + "schema": "tasks", + "table": "activity" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "goal_id", + "entityType": "columns", + "schema": "tasks", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "tasks", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "from_status", + "entityType": "columns", + "schema": "tasks", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "to_status", + "entityType": "columns", + "schema": "tasks", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "tasks", + "table": "activity" + }, + { + "type": "numeric(14,2)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "tasks", + "table": "activity" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "tasks", + "table": "activity" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "tasks", + "table": "areas" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "tasks", + "table": "areas" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "tasks", + "table": "areas" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "tasks", + "table": "areas" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "color", + "entityType": "columns", + "schema": "tasks", + "table": "areas" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "tasks", + "table": "areas" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "archived_at", + "entityType": "columns", + "schema": "tasks", + "table": "areas" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "tasks", + "table": "areas" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "tasks", + "table": "areas" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'active'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area_id", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_date", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metric", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metric_unit", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "numeric(14,2)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metric_target", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "numeric(14,2)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metric_current", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metric_key", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metric_detail", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metric_computed_at", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "flagged", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "achieved_at", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "tasks", + "table": "goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "tasks", + "table": "metric_sources" + }, + { + "type": "numeric(14,2)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "tasks", + "table": "metric_sources" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "detail", + "entityType": "columns", + "schema": "tasks", + "table": "metric_sources" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "computed_at", + "entityType": "columns", + "schema": "tasks", + "table": "metric_sources" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "attempted_at", + "entityType": "columns", + "schema": "tasks", + "table": "metric_sources" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error", + "entityType": "columns", + "schema": "tasks", + "table": "metric_sources" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'todo'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "priority", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "flagged", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "due_date", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "time", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "due_time", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "reminder_at", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "recurrence", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area_id", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "goal_id", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "parent_id", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "tags", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "external_id", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "auto_handle", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "start_at", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "time_zone", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "completed_at", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "tasks", + "table": "tasks" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "groceries", + "table": "categories" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "groceries", + "table": "categories" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "groceries", + "table": "categories" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "parent_id", + "entityType": "columns", + "schema": "groceries", + "table": "categories" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "icon", + "entityType": "columns", + "schema": "groceries", + "table": "categories" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "color", + "entityType": "columns", + "schema": "groceries", + "table": "categories" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "groceries", + "table": "categories" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "is_food", + "entityType": "columns", + "schema": "groceries", + "table": "categories" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "groceries", + "table": "categories" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "groceries", + "table": "categories" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "brand", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category_id", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "family_key", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "favorite", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "manual", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "merged_into_id", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "item_count", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "store_count", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "store_ids", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "min_unit_price_cents", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "min_price_cents", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "promo_count", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image_url", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "is_food", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "''", + "generated": null, + "identity": null, + "name": "search_text", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "groceries", + "table": "groups" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "groceries", + "table": "import_runs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "store_id", + "entityType": "columns", + "schema": "groceries", + "table": "import_runs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "groceries", + "table": "import_runs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "finished_at", + "entityType": "columns", + "schema": "groceries", + "table": "import_runs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'running'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "groceries", + "table": "import_runs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "requests", + "entityType": "columns", + "schema": "groceries", + "table": "import_runs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "fetched", + "entityType": "columns", + "schema": "groceries", + "table": "import_runs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "inserted", + "entityType": "columns", + "schema": "groceries", + "table": "import_runs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "price_changes", + "entityType": "columns", + "schema": "groceries", + "table": "import_runs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error", + "entityType": "columns", + "schema": "groceries", + "table": "import_runs" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "groceries", + "table": "item_prices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "groceries", + "table": "item_prices" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "observed_on", + "entityType": "columns", + "schema": "groceries", + "table": "item_prices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "price_cents", + "entityType": "columns", + "schema": "groceries", + "table": "item_prices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "promo_price_cents", + "entityType": "columns", + "schema": "groceries", + "table": "item_prices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "promo_label", + "entityType": "columns", + "schema": "groceries", + "table": "item_prices" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "groceries", + "table": "item_prices" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "groceries", + "table": "item_sizes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "groceries", + "table": "item_sizes" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "observed_on", + "entityType": "columns", + "schema": "groceries", + "table": "item_sizes" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit", + "entityType": "columns", + "schema": "groceries", + "table": "item_sizes" + }, + { + "type": "numeric(12,4)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit_amount", + "entityType": "columns", + "schema": "groceries", + "table": "item_sizes" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "size_text", + "entityType": "columns", + "schema": "groceries", + "table": "item_sizes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "price_cents", + "entityType": "columns", + "schema": "groceries", + "table": "item_sizes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "groceries", + "table": "item_sizes" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "store_id", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "store_product_id", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "brand", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "size_text", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "numeric(12,4)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit_amount", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit_source", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "price_cents", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "promo_price_cents", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "promo_label", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit_price_cents", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "promo_unit_price_cents", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category_path", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category_id", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gtin", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gtin_checked_at", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image_url", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "available", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "is_food", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "first_seen_at", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "last_seen_at", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "group_id", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "match_key", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "match_method", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "match_confidence", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "match_locked", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "groceries", + "table": "items" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "store_id", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "group_id", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "price_cents", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "promo", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "size_text", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "numeric(12,4)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit_amount", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit_price_cents", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "observed_on", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photo_url", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "groceries", + "table": "manual_prices" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "groceries", + "table": "stats_snapshots" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "computed_on", + "entityType": "columns", + "schema": "groceries", + "table": "stats_snapshots" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "scope", + "entityType": "columns", + "schema": "groceries", + "table": "stats_snapshots" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "computed_at", + "entityType": "columns", + "schema": "groceries", + "table": "stats_snapshots" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "duration_ms", + "entityType": "columns", + "schema": "groceries", + "table": "stats_snapshots" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "data", + "entityType": "columns", + "schema": "groceries", + "table": "stats_snapshots" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "series", + "entityType": "columns", + "schema": "groceries", + "table": "stats_snapshots" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "groceries", + "table": "stores" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "groceries", + "table": "stores" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "groceries", + "table": "stores" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "website", + "entityType": "columns", + "schema": "groceries", + "table": "stores" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "color", + "entityType": "columns", + "schema": "groceries", + "table": "stores" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "groceries", + "table": "stores" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "archived_at", + "entityType": "columns", + "schema": "groceries", + "table": "stores" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "groceries", + "table": "stores" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "groceries", + "table": "stores" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "groceries", + "table": "synonyms" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "term", + "entityType": "columns", + "schema": "groceries", + "table": "synonyms" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "synonym", + "entityType": "columns", + "schema": "groceries", + "table": "synonyms" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "groceries", + "table": "synonyms" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "groceries", + "table": "synonyms" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "home", + "table": "links" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "home", + "table": "links" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "home", + "table": "links" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'links'", + "generated": null, + "identity": null, + "name": "section", + "entityType": "columns", + "schema": "home", + "table": "links" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "home", + "table": "links" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "home", + "table": "links" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "home", + "table": "links" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "home", + "table": "snapshots" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "data", + "entityType": "columns", + "schema": "home", + "table": "snapshots" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "collected_at", + "entityType": "columns", + "schema": "home", + "table": "snapshots" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "model_id", + "entityType": "columns", + "schema": "cars", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area", + "entityType": "columns", + "schema": "cars", + "table": "activity" + }, + { + "type": "real", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "score", + "entityType": "columns", + "schema": "cars", + "table": "activity" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "model_count", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "nl_count", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "first_year", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_year", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "sources", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikidata", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikipedia", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_file", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_author", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_license", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photo", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "cars", + "table": "brands" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dex", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "brand_id", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "search", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "first_year", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_year", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "bodies", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "size_classes", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "fuels", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "drives", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "transmissions", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "engine_l_min", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "engine_l_max", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cylinders_min", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cylinders_max", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "turbo", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "power_kw_min", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "power_kw_max", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "l100_min", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "l100_max", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "co2_min", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "co2_max", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mpg_min", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mpg_max", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "range_km_max", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "seats", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "doors", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mass_kg", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "nl_count", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nl_rank", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nl_first_year", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nl_last_year", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nl_price", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nl_price_latest", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nl_price_latest_year", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'[]'", + "generated": null, + "identity": null, + "name": "nl_years", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'[]'", + "generated": null, + "identity": null, + "name": "nl_names", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "us_years", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "variant_count", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "sources", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikidata", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikipedia", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photo", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "photo_count", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photos_checked_at", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "cars", + "table": "models" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "model_id", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "position", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "file", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "caption", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "thumb", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "width", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "height", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "author", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "license", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "license_url", + "entityType": "columns", + "schema": "cars", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "model_id", + "entityType": "columns", + "schema": "cars", + "table": "seen" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "seen_on", + "entityType": "columns", + "schema": "cars", + "table": "seen" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "cars", + "table": "seen" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "cars", + "table": "seen" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "cars", + "table": "seen" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "model_id", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'fueleconomy.gov'", + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_id", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "engine_l", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cylinders", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "transmission", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "drive", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "fuel", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "size_class", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mpg_city", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mpg_hwy", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mpg_comb", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "co2_gpm", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "range_mi", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ev_motor", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "turbo", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "supercharged", + "entityType": "columns", + "schema": "cars", + "table": "variants" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type_id", + "entityType": "columns", + "schema": "planes", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area", + "entityType": "columns", + "schema": "planes", + "table": "activity" + }, + { + "type": "real", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "score", + "entityType": "columns", + "schema": "planes", + "table": "activity" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "full_name", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikidata", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikipedia", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "type_count", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "first_year", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_year", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "built_total", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "sources", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_file", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_author", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_license", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photo", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "planes", + "table": "makers" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type_id", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "position", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "file", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "caption", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "thumb", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "width", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "height", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "author", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "license", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "license_url", + "entityType": "columns", + "schema": "planes", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type_id", + "entityType": "columns", + "schema": "planes", + "table": "seen" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "seen_on", + "entityType": "columns", + "schema": "planes", + "table": "seen" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "planes", + "table": "seen" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "planes", + "table": "seen" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "planes", + "table": "seen" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dex", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "maker_id", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "family_id", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "full_name", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "search", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikidata", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikipedia", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "summary", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "role", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "roles", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "role_label", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "first_flight", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "first_flight_year", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "introduced_year", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "retired_year", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "in_service", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "number_built", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "makers", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "engine_type", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "engine_count", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "engines", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "crew", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "passengers", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "length_m", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wingspan_m", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "height_m", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rotor_m", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mtow_kg", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_speed_kmh", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cruise_kmh", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "range_km", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ceiling_m", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wing", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gear", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "icao", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "recognize", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "sources", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photo", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "photo_count", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photos_checked_at", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "planes", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "species_id", + "entityType": "columns", + "schema": "wildlife", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area", + "entityType": "columns", + "schema": "wildlife", + "table": "activity" + }, + { + "type": "real", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "score", + "entityType": "columns", + "schema": "wildlife", + "table": "activity" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "wildlife", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "wildlife", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "wildlife", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name_nl", + "entityType": "columns", + "schema": "wildlife", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "emoji", + "entityType": "columns", + "schema": "wildlife", + "table": "groups" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "wildlife", + "table": "groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "species_count", + "entityType": "columns", + "schema": "wildlife", + "table": "groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "nl_count", + "entityType": "columns", + "schema": "wildlife", + "table": "groups" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photo", + "entityType": "columns", + "schema": "wildlife", + "table": "groups" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "wildlife", + "table": "groups" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "wildlife", + "table": "groups" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "species_id", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "position", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photo_id", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "width", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "height", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "author", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "license", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "page_url", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "place", + "entityType": "columns", + "schema": "wildlife", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "species_id", + "entityType": "columns", + "schema": "wildlife", + "table": "seen" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "seen_on", + "entityType": "columns", + "schema": "wildlife", + "table": "seen" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "wildlife", + "table": "seen" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "wildlife", + "table": "seen" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "wildlife", + "table": "seen" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dex", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "group_id", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "scientific_name", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name_en", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name_nl", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "search", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "inat_id", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gbif_key", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikidata", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikipedia_en", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikipedia_nl", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "class_name", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "order_name", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "family_name", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iucn", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nl_status", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nl_establishment", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "extinct", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "nl_obs", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "europe_obs", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "world_obs", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gbif_nl", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "scope", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "summary", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "summary_nl", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "facts", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mass_kg", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "length_m", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lifespan_years", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "named_year", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "named_by", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "sources", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photo", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "photo_count", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photos_checked_at", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "wildlife", + "table": "species" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type_id", + "entityType": "columns", + "schema": "trains", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area", + "entityType": "columns", + "schema": "trains", + "table": "activity" + }, + { + "type": "real", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "score", + "entityType": "columns", + "schema": "trains", + "table": "activity" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "full_name", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikidata", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikipedia", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "type_count", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "first_year", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_year", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "built_total", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "sources", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_file", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_author", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_license", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photo", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "trains", + "table": "makers" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "full_name", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikidata", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikipedia", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "type_count", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_file", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_author", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "logo_license", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photo", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "trains", + "table": "operators" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type_id", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "position", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "file", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "caption", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "thumb", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "width", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "height", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "author", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "license", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "license_url", + "entityType": "columns", + "schema": "trains", + "table": "photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type_id", + "entityType": "columns", + "schema": "trains", + "table": "seen" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "seen_on", + "entityType": "columns", + "schema": "trains", + "table": "seen" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "trains", + "table": "seen" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "trains", + "table": "seen" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "trains", + "table": "seen" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type_id", + "entityType": "columns", + "schema": "trains", + "table": "type_operators" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "operator_id", + "entityType": "columns", + "schema": "trains", + "table": "type_operators" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "position", + "entityType": "columns", + "schema": "trains", + "table": "type_operators" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dex", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "maker_id", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "family_id", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "full_name", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nl_name", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "search", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikidata", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikipedia", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "summary", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category_label", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "traction", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "countries", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "makers", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "operators", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "first_built", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_built", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "introduced_year", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "retired_year", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "in_service", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "number_built", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_speed_kmh", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "power_kw", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gauge", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gauge_mm", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "electric_system", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wheels", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "length_m", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "weight_t", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "capacity", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "formation", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "designer", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nicknames", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "sources", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photo", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "photo_count", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "photos_checked_at", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "trains", + "table": "types" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "music", + "table": "albums" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "spotify_id", + "entityType": "columns", + "schema": "music", + "table": "albums" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "music", + "table": "albums" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "artist_id", + "entityType": "columns", + "schema": "music", + "table": "albums" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image_url", + "entityType": "columns", + "schema": "music", + "table": "albums" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image_url_small", + "entityType": "columns", + "schema": "music", + "table": "albums" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "release_date", + "entityType": "columns", + "schema": "music", + "table": "albums" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "music", + "table": "albums" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "artist_id", + "entityType": "columns", + "schema": "music", + "table": "artist_tag_fetch" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "music", + "table": "artist_tag_fetch" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "fetched_at", + "entityType": "columns", + "schema": "music", + "table": "artist_tag_fetch" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "artist_id", + "entityType": "columns", + "schema": "music", + "table": "artist_tags" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "tag", + "entityType": "columns", + "schema": "music", + "table": "artist_tags" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "weight", + "entityType": "columns", + "schema": "music", + "table": "artist_tags" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "music", + "table": "artists" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "spotify_id", + "entityType": "columns", + "schema": "music", + "table": "artists" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "music", + "table": "artists" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image_url", + "entityType": "columns", + "schema": "music", + "table": "artists" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "music", + "table": "artists" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "music", + "table": "import_state" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "data", + "entityType": "columns", + "schema": "music", + "table": "import_state" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "music", + "table": "import_state" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "music", + "table": "now_playing" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "track_id", + "entityType": "columns", + "schema": "music", + "table": "now_playing" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "is_playing", + "entityType": "columns", + "schema": "music", + "table": "now_playing" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "progress_ms", + "entityType": "columns", + "schema": "music", + "table": "now_playing" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "device_name", + "entityType": "columns", + "schema": "music", + "table": "now_playing" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "device_type", + "entityType": "columns", + "schema": "music", + "table": "now_playing" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "context_uri", + "entityType": "columns", + "schema": "music", + "table": "now_playing" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "music", + "table": "now_playing" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "music", + "table": "osu_match_cache" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "result", + "entityType": "columns", + "schema": "music", + "table": "osu_match_cache" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "searched_at", + "entityType": "columns", + "schema": "music", + "table": "osu_match_cache" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "music", + "table": "plays" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "track_id", + "entityType": "columns", + "schema": "music", + "table": "plays" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "played_at", + "entityType": "columns", + "schema": "music", + "table": "plays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'spotify'", + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "music", + "table": "plays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'api'", + "generated": null, + "identity": null, + "name": "origin", + "entityType": "columns", + "schema": "music", + "table": "plays" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ms_played", + "entityType": "columns", + "schema": "music", + "table": "plays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "context_type", + "entityType": "columns", + "schema": "music", + "table": "plays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "context_uri", + "entityType": "columns", + "schema": "music", + "table": "plays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "platform", + "entityType": "columns", + "schema": "music", + "table": "plays" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "music", + "table": "plays" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "spotify_user_id", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "display_name", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "refresh_token", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "access_token", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "access_expires_at", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "scope", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "recent_cursor", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "needs_reauth", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lease_until", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lease_holder", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_poll_at", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_error", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "connected_at", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "music", + "table": "spotify_auth" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "track_id", + "entityType": "columns", + "schema": "music", + "table": "track_artists" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "artist_id", + "entityType": "columns", + "schema": "music", + "table": "track_artists" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "position", + "entityType": "columns", + "schema": "music", + "table": "track_artists" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "music", + "table": "tracks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "spotify_id", + "entityType": "columns", + "schema": "music", + "table": "tracks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "music", + "table": "tracks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "album_id", + "entityType": "columns", + "schema": "music", + "table": "tracks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "artist_id", + "entityType": "columns", + "schema": "music", + "table": "tracks" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "duration_ms", + "entityType": "columns", + "schema": "music", + "table": "tracks" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "explicit", + "entityType": "columns", + "schema": "music", + "table": "tracks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "match_key", + "entityType": "columns", + "schema": "music", + "table": "tracks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "music", + "table": "tracks" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "always", + "name": "components_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "9223372036854775807", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "device_id", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "brand", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "model", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "quantity", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "specs", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit_price_cents", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "total_price_cents", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "shop", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "order_number", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "order_date", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "warranty_until", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "invoice_number", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'in_use'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "verified", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dpi", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "measured_dpi", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image_url", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "section", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slot", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "installed_at", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "removed_at", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "replaces_id", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "usage", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "image_urls", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "image_sources", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "hidden", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "hardware", + "table": "components" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "always", + "name": "devices_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "9223372036854775807", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "hostnames", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'active'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "brand", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "model", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "specs", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "price_cents", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "monthly_cents", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "budget_cents", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "shop", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "purchase_date", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image_url", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "100", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "installed_at", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "removed_at", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "image_urls", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "image_sources", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "hidden", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "hardware", + "table": "devices" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "always", + "name": "sensitivities_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "9223372036854775807", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "hardware", + "table": "sensitivities" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "game", + "entityType": "columns", + "schema": "hardware", + "table": "sensitivities" + }, + { + "type": "numeric(7,2)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cm_per_360", + "entityType": "columns", + "schema": "hardware", + "table": "sensitivities" + }, + { + "type": "numeric(10,6)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "yaw", + "entityType": "columns", + "schema": "hardware", + "table": "sensitivities" + }, + { + "type": "numeric(10,4)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "in_game_sens", + "entityType": "columns", + "schema": "hardware", + "table": "sensitivities" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mouse_id", + "entityType": "columns", + "schema": "hardware", + "table": "sensitivities" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "fov", + "entityType": "columns", + "schema": "hardware", + "table": "sensitivities" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "hardware", + "table": "sensitivities" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "100", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "hardware", + "table": "sensitivities" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "hardware", + "table": "sensitivities" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "hardware", + "table": "sensitivities" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "always", + "name": "setup_photos_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "9223372036854775807", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "hardware", + "table": "setup_photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "hardware", + "table": "setup_photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "caption", + "entityType": "columns", + "schema": "hardware", + "table": "setup_photos" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "taken_at", + "entityType": "columns", + "schema": "hardware", + "table": "setup_photos" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "100", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "hardware", + "table": "setup_photos" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "hardware", + "table": "setup_photos" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "dataholders", + "table": "identity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "dataholders", + "table": "identity" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "since", + "entityType": "columns", + "schema": "dataholders", + "table": "identity" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "dataholders", + "table": "identity" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "dataholders", + "table": "identity" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "always", + "name": "orgs_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'Other'", + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "login", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "domains", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "import_key", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "holds_address", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "holds_email", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "holds_phone", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "holds_iban", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "holds_bsn", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "holds_card", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "holds_dob", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "holds_id_doc", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "data_held", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "address_on_file", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'unknown'", + "generated": null, + "identity": null, + "name": "address_status", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "follows_brp", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "email_on_file", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "phone_on_file", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'update'", + "generated": null, + "identity": null, + "name": "action", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'should'", + "generated": null, + "identity": null, + "name": "priority", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "how_to_change", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "link", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "evidence", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "address_updated_on", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "email_updated_on", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "phone_updated_on", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iban_updated_on", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_checked", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "archived", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "edited_at", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "dataholders", + "table": "orgs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ref_area", + "entityType": "columns", + "schema": "stats", + "table": "bis_policy_rate" + }, + { + "type": "char(1)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "freq", + "entityType": "columns", + "schema": "stats", + "table": "bis_policy_rate" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "period", + "entityType": "columns", + "schema": "stats", + "table": "bis_policy_rate" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rate", + "entityType": "columns", + "schema": "stats", + "table": "bis_policy_rate" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "table_id", + "entityType": "columns", + "schema": "stats", + "table": "cbs_code" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dimension", + "entityType": "columns", + "schema": "stats", + "table": "cbs_code" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code", + "entityType": "columns", + "schema": "stats", + "table": "cbs_code" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "stats", + "table": "cbs_code" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit", + "entityType": "columns", + "schema": "stats", + "table": "cbs_code" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "decimals", + "entityType": "columns", + "schema": "stats", + "table": "cbs_code" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "group_id", + "entityType": "columns", + "schema": "stats", + "table": "cbs_code" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sort_index", + "entityType": "columns", + "schema": "stats", + "table": "cbs_code" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "table_id", + "entityType": "columns", + "schema": "stats", + "table": "cbs_obs" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "obs_id", + "entityType": "columns", + "schema": "stats", + "table": "cbs_obs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "measure", + "entityType": "columns", + "schema": "stats", + "table": "cbs_obs" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dims", + "entityType": "columns", + "schema": "stats", + "table": "cbs_obs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "period", + "entityType": "columns", + "schema": "stats", + "table": "cbs_obs" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "cbs_obs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value_attribute", + "entityType": "columns", + "schema": "stats", + "table": "cbs_obs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "table_id", + "entityType": "columns", + "schema": "stats", + "table": "cbs_table" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "stats", + "table": "cbs_table" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "modified", + "entityType": "columns", + "schema": "stats", + "table": "cbs_table" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "stats", + "table": "cbs_table" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "filter", + "entityType": "columns", + "schema": "stats", + "table": "cbs_table" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "obs_count", + "entityType": "columns", + "schema": "stats", + "table": "cbs_table" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "fetched_at", + "entityType": "columns", + "schema": "stats", + "table": "cbs_table" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "period", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbcs_bop" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbcs_bop" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mln_ang", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbcs_bop" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "uploaded_at", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbcs_bop" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "period", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_cpi" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cpi_index", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_cpi" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "infl_mom", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_cpi" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "infl_yoy", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_cpi" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "infl_12m_avg", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_cpi" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "base", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_cpi" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_file" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "topic", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_file" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "filename", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_file" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sha256", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_file" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "fetched_at", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_file" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_gdp_industry" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "isic", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_gdp_industry" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_gdp_industry" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mln_ang", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_gdp_industry" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "provisional", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_gdp_industry" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_gov_finance" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_code", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_gov_finance" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_gov_finance" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mln_ang", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_gov_finance" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "provisional", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_gov_finance" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_lfs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sex", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_lfs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "age_group", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_lfs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "measure", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_lfs" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_lfs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_population" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sex", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_population" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "age_group", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_population" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_population" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_population" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "period", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_tourism" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "measure", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_tourism" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "market", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_tourism" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "cw_cbs_tourism" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wave", + "entityType": "columns", + "schema": "stats", + "table": "eb_item" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "fieldwork_end", + "entityType": "columns", + "schema": "stats", + "table": "eb_item" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "topic", + "entityType": "columns", + "schema": "stats", + "table": "eb_item" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "qcode", + "entityType": "columns", + "schema": "stats", + "table": "eb_item" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item", + "entityType": "columns", + "schema": "stats", + "table": "eb_item" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "stats", + "table": "eb_item" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "share", + "entityType": "columns", + "schema": "stats", + "table": "eb_item" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "stats", + "table": "ec_crossborder" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "neighbour", + "entityType": "columns", + "schema": "stats", + "table": "ec_crossborder" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ts", + "entityType": "columns", + "schema": "stats", + "table": "ec_crossborder" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gw", + "entityType": "columns", + "schema": "stats", + "table": "ec_crossborder" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bzn", + "entityType": "columns", + "schema": "stats", + "table": "ec_dayahead_price" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ts", + "entityType": "columns", + "schema": "stats", + "table": "ec_dayahead_price" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "eur_mwh", + "entityType": "columns", + "schema": "stats", + "table": "ec_dayahead_price" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "election_id", + "entityType": "columns", + "schema": "stats", + "table": "elec_election" + }, + { + "type": "char(3)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "stats", + "table": "elec_election" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "stats", + "table": "elec_election" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "stats", + "table": "elec_election" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "stats", + "table": "elec_election" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_id", + "entityType": "columns", + "schema": "stats", + "table": "elec_election" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "total_seats", + "entityType": "columns", + "schema": "stats", + "table": "elec_election" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "election_id", + "entityType": "columns", + "schema": "stats", + "table": "elec_result" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "level", + "entityType": "columns", + "schema": "stats", + "table": "elec_result" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area_code", + "entityType": "columns", + "schema": "stats", + "table": "elec_result" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area_name", + "entityType": "columns", + "schema": "stats", + "table": "elec_result" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "party", + "entityType": "columns", + "schema": "stats", + "table": "elec_result" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "votes", + "entityType": "columns", + "schema": "stats", + "table": "elec_result" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "seats", + "entityType": "columns", + "schema": "stats", + "table": "elec_result" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "election_id", + "entityType": "columns", + "schema": "stats", + "table": "elec_turnout" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "level", + "entityType": "columns", + "schema": "stats", + "table": "elec_turnout" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area_code", + "entityType": "columns", + "schema": "stats", + "table": "elec_turnout" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area_name", + "entityType": "columns", + "schema": "stats", + "table": "elec_turnout" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "electorate", + "entityType": "columns", + "schema": "stats", + "table": "elec_turnout" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ballots", + "entityType": "columns", + "schema": "stats", + "table": "elec_turnout" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "valid", + "entityType": "columns", + "schema": "stats", + "table": "elec_turnout" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "blank", + "entityType": "columns", + "schema": "stats", + "table": "elec_turnout" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "invalid", + "entityType": "columns", + "schema": "stats", + "table": "elec_turnout" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "snapshot", + "entityType": "columns", + "schema": "stats", + "table": "ep_label_agg" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "area", + "entityType": "columns", + "schema": "stats", + "table": "ep_label_agg" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "stats", + "table": "ep_label_agg" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "homes", + "entityType": "columns", + "schema": "stats", + "table": "ep_label_agg" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_dataset" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_dataset" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_dataset" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "query", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_dataset" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "dims", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_dataset" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "obs_count", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_dataset" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "fetched_at", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_dataset" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dataset", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_obs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_obs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "geo", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_obs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "period", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_obs" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_obs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "stats", + "table": "eurostat_obs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "always", + "name": "fetch_run_run_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "2147483647", + "cache": 1, + "cycle": false + }, + "name": "run_id", + "entityType": "columns", + "schema": "stats", + "table": "fetch_run" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_id", + "entityType": "columns", + "schema": "stats", + "table": "fetch_run" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'refresh'", + "generated": null, + "identity": null, + "name": "job", + "entityType": "columns", + "schema": "stats", + "table": "fetch_run" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "stats", + "table": "fetch_run" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "finished_at", + "entityType": "columns", + "schema": "stats", + "table": "fetch_run" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rows", + "entityType": "columns", + "schema": "stats", + "table": "fetch_run" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ok", + "entityType": "columns", + "schema": "stats", + "table": "fetch_run" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error", + "entityType": "columns", + "schema": "stats", + "table": "fetch_run" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "series_id", + "entityType": "columns", + "schema": "stats", + "table": "fred_obs" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "period", + "entityType": "columns", + "schema": "stats", + "table": "fred_obs" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "fred_obs" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "stats", + "table": "gdelt_theme_vol" + }, + { + "type": "char(3)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "stats", + "table": "gdelt_theme_vol" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "theme", + "entityType": "columns", + "schema": "stats", + "table": "gdelt_theme_vol" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "vol_pct", + "entityType": "columns", + "schema": "stats", + "table": "gdelt_theme_vol" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "geo", + "entityType": "columns", + "schema": "stats", + "table": "gt_trending" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "stats", + "table": "gt_trending" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rank", + "entityType": "columns", + "schema": "stats", + "table": "gt_trending" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "query", + "entityType": "columns", + "schema": "stats", + "table": "gt_trending" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "approx_traffic", + "entityType": "columns", + "schema": "stats", + "table": "gt_trending" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pub_date", + "entityType": "columns", + "schema": "stats", + "table": "gt_trending" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "news", + "entityType": "columns", + "schema": "stats", + "table": "gt_trending" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "place", + "entityType": "columns", + "schema": "stats", + "table": "hist_event" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "stats", + "table": "hist_event" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "hist_event" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year_end", + "entityType": "columns", + "schema": "stats", + "table": "hist_event" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date_label", + "entityType": "columns", + "schema": "stats", + "table": "hist_event" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "stats", + "table": "hist_event" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "summary", + "entityType": "columns", + "schema": "stats", + "table": "hist_event" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "theme", + "entityType": "columns", + "schema": "stats", + "table": "hist_event" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_url", + "entityType": "columns", + "schema": "stats", + "table": "hist_event" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "place", + "entityType": "columns", + "schema": "stats", + "table": "hist_fact" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "stats", + "table": "hist_fact" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "topic", + "entityType": "columns", + "schema": "stats", + "table": "hist_fact" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "stats", + "table": "hist_fact" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "body", + "entityType": "columns", + "schema": "stats", + "table": "hist_fact" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_url", + "entityType": "columns", + "schema": "stats", + "table": "hist_fact" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sort", + "entityType": "columns", + "schema": "stats", + "table": "hist_fact" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "place", + "entityType": "columns", + "schema": "stats", + "table": "hist_holiday" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "stats", + "table": "hist_holiday" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "stats", + "table": "hist_holiday" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "local_name", + "entityType": "columns", + "schema": "stats", + "table": "hist_holiday" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "global", + "entityType": "columns", + "schema": "stats", + "table": "hist_holiday" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "types", + "entityType": "columns", + "schema": "stats", + "table": "hist_holiday" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "place", + "entityType": "columns", + "schema": "stats", + "table": "hist_office" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "stats", + "table": "hist_office" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "office_qid", + "entityType": "columns", + "schema": "stats", + "table": "hist_office" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "office_label", + "entityType": "columns", + "schema": "stats", + "table": "hist_office" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "person_qid", + "entityType": "columns", + "schema": "stats", + "table": "hist_office" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "person_label", + "entityType": "columns", + "schema": "stats", + "table": "hist_office" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "party", + "entityType": "columns", + "schema": "stats", + "table": "hist_office" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "start_date", + "entityType": "columns", + "schema": "stats", + "table": "hist_office" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "end_date", + "entityType": "columns", + "schema": "stats", + "table": "hist_office" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "place", + "entityType": "columns", + "schema": "stats", + "table": "hist_person" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "person_qid", + "entityType": "columns", + "schema": "stats", + "table": "hist_person" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "stats", + "table": "hist_person" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "stats", + "table": "hist_person" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "birth_year", + "entityType": "columns", + "schema": "stats", + "table": "hist_person" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "death_year", + "entityType": "columns", + "schema": "stats", + "table": "hist_person" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sitelinks", + "entityType": "columns", + "schema": "stats", + "table": "hist_person" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "stats", + "table": "hist_person" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rank", + "entityType": "columns", + "schema": "stats", + "table": "hist_person" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "vintage", + "entityType": "columns", + "schema": "stats", + "table": "imf_weo" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "indicator", + "entityType": "columns", + "schema": "stats", + "table": "imf_weo" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country_iso3", + "entityType": "columns", + "schema": "stats", + "table": "imf_weo" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "imf_weo" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "imf_weo" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "is_forecast", + "entityType": "columns", + "schema": "stats", + "table": "imf_weo" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "series_id", + "entityType": "columns", + "schema": "stats", + "table": "obs" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "period", + "entityType": "columns", + "schema": "stats", + "table": "obs" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "obs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "stats", + "table": "obs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "fetched_at", + "entityType": "columns", + "schema": "stats", + "table": "obs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "series", + "entityType": "columns", + "schema": "stats", + "table": "op_poll" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "poll_key", + "entityType": "columns", + "schema": "stats", + "table": "op_poll" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "fieldwork_end", + "entityType": "columns", + "schema": "stats", + "table": "op_poll" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pollster", + "entityType": "columns", + "schema": "stats", + "table": "op_poll" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sample", + "entityType": "columns", + "schema": "stats", + "table": "op_poll" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "option", + "entityType": "columns", + "schema": "stats", + "table": "op_poll" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "op_poll" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "seen_at", + "entityType": "columns", + "schema": "stats", + "table": "op_poll" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "page", + "entityType": "columns", + "schema": "stats", + "table": "op_wiki_snapshot" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "revid", + "entityType": "columns", + "schema": "stats", + "table": "op_wiki_snapshot" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "fetched_at", + "entityType": "columns", + "schema": "stats", + "table": "op_wiki_snapshot" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wikitext", + "entityType": "columns", + "schema": "stats", + "table": "op_wiki_snapshot" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "stats", + "table": "owid_energy" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iso3", + "entityType": "columns", + "schema": "stats", + "table": "owid_energy" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "owid_energy" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "values", + "entityType": "columns", + "schema": "stats", + "table": "owid_energy" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "entity", + "entityType": "columns", + "schema": "stats", + "table": "owid_maddison" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iso3", + "entityType": "columns", + "schema": "stats", + "table": "owid_maddison" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "owid_maddison" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gdp_pc", + "entityType": "columns", + "schema": "stats", + "table": "owid_maddison" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "region_code", + "entityType": "columns", + "schema": "stats", + "table": "region" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "stats", + "table": "region" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "stats", + "table": "region" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "parent", + "entityType": "columns", + "schema": "stats", + "table": "region" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "phase", + "entityType": "columns", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "row_key", + "entityType": "columns", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "type": "char(1)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "vuo", + "entityType": "columns", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "chapter", + "entityType": "columns", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "chapter_name", + "entityType": "columns", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "article", + "entityType": "columns", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "article_name", + "entityType": "columns", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "detail", + "entityType": "columns", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "amount_eur_k", + "entityType": "columns", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "series_id", + "entityType": "columns", + "schema": "stats", + "table": "series" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_id", + "entityType": "columns", + "schema": "stats", + "table": "series" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_code", + "entityType": "columns", + "schema": "stats", + "table": "series" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "stats", + "table": "series" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit", + "entityType": "columns", + "schema": "stats", + "table": "series" + }, + { + "type": "char(1)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "freq", + "entityType": "columns", + "schema": "stats", + "table": "series" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "region_code", + "entityType": "columns", + "schema": "stats", + "table": "series" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "theme", + "entityType": "columns", + "schema": "stats", + "table": "series" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "meta", + "entityType": "columns", + "schema": "stats", + "table": "series" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_id", + "entityType": "columns", + "schema": "stats", + "table": "source" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "stats", + "table": "source" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "base_url", + "entityType": "columns", + "schema": "stats", + "table": "source" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "licence", + "entityType": "columns", + "schema": "stats", + "table": "source" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "key_required", + "entityType": "columns", + "schema": "stats", + "table": "source" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "attribution", + "entityType": "columns", + "schema": "stats", + "table": "source" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id_no", + "entityType": "columns", + "schema": "stats", + "table": "unesco_site" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "stats", + "table": "unesco_site" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "places", + "entityType": "columns", + "schema": "stats", + "table": "unesco_site" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "stats", + "table": "unesco_site" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year_inscribed", + "entityType": "columns", + "schema": "stats", + "table": "unesco_site" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "danger", + "entityType": "columns", + "schema": "stats", + "table": "unesco_site" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "stats", + "table": "unesco_site" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lat", + "entityType": "columns", + "schema": "stats", + "table": "unesco_site" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lon", + "entityType": "columns", + "schema": "stats", + "table": "unesco_site" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "image_url", + "entityType": "columns", + "schema": "stats", + "table": "unesco_site" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "toptier_code", + "entityType": "columns", + "schema": "stats", + "table": "usas_agency_fy" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "fiscal_year", + "entityType": "columns", + "schema": "stats", + "table": "usas_agency_fy" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "agency_name", + "entityType": "columns", + "schema": "stats", + "table": "usas_agency_fy" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "abbreviation", + "entityType": "columns", + "schema": "stats", + "table": "usas_agency_fy" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "budgetary_resources", + "entityType": "columns", + "schema": "stats", + "table": "usas_agency_fy" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "obligated", + "entityType": "columns", + "schema": "stats", + "table": "usas_agency_fy" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "outlayed", + "entityType": "columns", + "schema": "stats", + "table": "usas_agency_fy" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "record_date", + "entityType": "columns", + "schema": "stats", + "table": "ust_debt_daily" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "debt_held_public", + "entityType": "columns", + "schema": "stats", + "table": "ust_debt_daily" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "intragov_holdings", + "entityType": "columns", + "schema": "stats", + "table": "ust_debt_daily" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "total_debt", + "entityType": "columns", + "schema": "stats", + "table": "ust_debt_daily" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "record_date", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_outlays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "classification_id", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_outlays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "parent_id", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_outlays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_outlays" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "level", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_outlays" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "print_order", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_outlays" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "net_month", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_outlays" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "net_fytd", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_outlays" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gross_month", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_outlays" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "record_date", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_receipts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "classification_id", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_receipts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "parent_id", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_receipts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_receipts" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "level", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_receipts" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "print_order", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_receipts" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "net_month", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_receipts" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "net_fytd", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_receipts" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gross_month", + "entityType": "columns", + "schema": "stats", + "table": "ust_mts_receipts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "indicator_id", + "entityType": "columns", + "schema": "stats", + "table": "wb_indicator" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country_iso3", + "entityType": "columns", + "schema": "stats", + "table": "wb_indicator" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "wb_indicator" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "wb_indicator" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "char(3)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iso3", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rank", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ladder", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lower", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "upper", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "gdp", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "social", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "health", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "freedom", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "generosity", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "corruption", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dystopia", + "entityType": "columns", + "schema": "stats", + "table": "whr_score" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "party_id", + "entityType": "columns", + "schema": "stats", + "table": "wo_compass_override" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "x", + "entityType": "columns", + "schema": "stats", + "table": "wo_compass_override" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "y", + "entityType": "columns", + "schema": "stats", + "table": "wo_compass_override" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "stats", + "table": "wo_compass_override" + }, + { + "type": "char(3)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iso3", + "entityType": "columns", + "schema": "stats", + "table": "wo_country" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "stats", + "table": "wo_country" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iso_num", + "entityType": "columns", + "schema": "stats", + "table": "wo_country" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "stats", + "table": "wo_country" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "region", + "entityType": "columns", + "schema": "stats", + "table": "wo_country" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "liberal_meaning", + "entityType": "columns", + "schema": "stats", + "table": "wo_country" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "main_divide", + "entityType": "columns", + "schema": "stats", + "table": "wo_country" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "stats", + "table": "wo_country" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "profile", + "entityType": "columns", + "schema": "stats", + "table": "wo_country" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sort", + "entityType": "columns", + "schema": "stats", + "table": "wo_country" + }, + { + "type": "char(3)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iso3", + "entityType": "columns", + "schema": "stats", + "table": "wo_cultural_map" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wave", + "entityType": "columns", + "schema": "stats", + "table": "wo_cultural_map" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year_from", + "entityType": "columns", + "schema": "stats", + "table": "wo_cultural_map" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year_to", + "entityType": "columns", + "schema": "stats", + "table": "wo_cultural_map" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "trad_secular", + "entityType": "columns", + "schema": "stats", + "table": "wo_cultural_map" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "surv_selfexp", + "entityType": "columns", + "schema": "stats", + "table": "wo_cultural_map" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "n", + "entityType": "columns", + "schema": "stats", + "table": "wo_cultural_map" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "stats", + "table": "wo_cultural_map" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sort", + "entityType": "columns", + "schema": "stats", + "table": "wo_narrative" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "event", + "entityType": "columns", + "schema": "stats", + "table": "wo_narrative" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "years", + "entityType": "columns", + "schema": "stats", + "table": "wo_narrative" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "views", + "entityType": "columns", + "schema": "stats", + "table": "wo_narrative" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "party_id", + "entityType": "columns", + "schema": "stats", + "table": "wo_party" + }, + { + "type": "char(3)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iso3", + "entityType": "columns", + "schema": "stats", + "table": "wo_party" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "stats", + "table": "wo_party" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "abbrev", + "entityType": "columns", + "schema": "stats", + "table": "wo_party" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "family", + "entityType": "columns", + "schema": "stats", + "table": "wo_party" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ches_id", + "entityType": "columns", + "schema": "stats", + "table": "wo_party" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "manifesto_id", + "entityType": "columns", + "schema": "stats", + "table": "wo_party" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "vparty_id", + "entityType": "columns", + "schema": "stats", + "table": "wo_party" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "partyfacts_id", + "entityType": "columns", + "schema": "stats", + "table": "wo_party" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sort", + "entityType": "columns", + "schema": "stats", + "table": "wo_party" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "party_id", + "entityType": "columns", + "schema": "stats", + "table": "wo_party_position" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "stats", + "table": "wo_party_position" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "stats", + "table": "wo_party_position" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "dim", + "entityType": "columns", + "schema": "stats", + "table": "wo_party_position" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "wo_party_position" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "vote_share", + "entityType": "columns", + "schema": "stats", + "table": "wo_party_position" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sort", + "entityType": "columns", + "schema": "stats", + "table": "wo_source" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "stats", + "table": "wo_source" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "href", + "entityType": "columns", + "schema": "stats", + "table": "wo_source" + }, + { + "type": "char(3)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iso3", + "entityType": "columns", + "schema": "stats", + "table": "wo_value_score" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "wave", + "entityType": "columns", + "schema": "stats", + "table": "wo_value_score" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_code", + "entityType": "columns", + "schema": "stats", + "table": "wo_value_score" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_label", + "entityType": "columns", + "schema": "stats", + "table": "wo_value_score" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "stat", + "entityType": "columns", + "schema": "stats", + "table": "wo_value_score" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "stats", + "table": "wo_value_score" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "n", + "entityType": "columns", + "schema": "stats", + "table": "wo_value_score" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "match_id", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "x", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "y", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "x2", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "y2", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "player", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "color", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "pubg_markers" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "pubg_matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "room_id", + "entityType": "columns", + "schema": "games", + "table": "pubg_matches" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "number", + "entityType": "columns", + "schema": "games", + "table": "pubg_matches" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "map", + "entityType": "columns", + "schema": "games", + "table": "pubg_matches" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "games", + "table": "pubg_matches" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ended_at", + "entityType": "columns", + "schema": "games", + "table": "pubg_matches" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "pubg_rooms" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code", + "entityType": "columns", + "schema": "games", + "table": "pubg_rooms" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "games", + "table": "pubg_rooms" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "pubg_rooms" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "pubg_rooms" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ai", + "table": "bot_status" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "ai", + "table": "bot_status" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "focus", + "entityType": "columns", + "schema": "ai", + "table": "bot_status" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "recent", + "entityType": "columns", + "schema": "ai", + "table": "bot_status" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_active", + "entityType": "columns", + "schema": "ai", + "table": "bot_status" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ai", + "table": "bot_status" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ai", + "table": "bot_status" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ai", + "table": "news_items" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "ai", + "table": "news_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "ai", + "table": "news_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "ai", + "table": "news_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "ai", + "table": "news_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'ai'", + "generated": null, + "identity": null, + "name": "section", + "entityType": "columns", + "schema": "ai", + "table": "news_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ai", + "table": "news_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ai", + "table": "news_items" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "provider_id", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "section", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "scope", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "link", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "body", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_providers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_providers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "products", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_providers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'zinc'", + "generated": null, + "identity": null, + "name": "color", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_providers" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_providers" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_providers" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ai", + "table": "provider_setup_providers" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "ai", + "table": "usage_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "provider", + "entityType": "columns", + "schema": "ai", + "table": "usage_entries" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "date", + "entityType": "columns", + "schema": "ai", + "table": "usage_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metric", + "entityType": "columns", + "schema": "ai", + "table": "usage_entries" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "ai", + "table": "usage_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "unit", + "entityType": "columns", + "schema": "ai", + "table": "usage_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'manual'", + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "ai", + "table": "usage_entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "note", + "entityType": "columns", + "schema": "ai", + "table": "usage_entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "ai", + "table": "usage_entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "ai", + "table": "usage_entries" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "movies", + "table": "episodes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title_id", + "entityType": "columns", + "schema": "movies", + "table": "episodes" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ep_key", + "entityType": "columns", + "schema": "movies", + "table": "episodes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "season", + "entityType": "columns", + "schema": "movies", + "table": "episodes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "episode", + "entityType": "columns", + "schema": "movies", + "table": "episodes" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "movies", + "table": "episodes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "runtime_min", + "entityType": "columns", + "schema": "movies", + "table": "episodes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "movies", + "table": "episodes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "movies", + "table": "episodes" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title_id", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "episode_id", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "watched_on", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "watched_at", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "duration_min", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'stan'", + "generated": null, + "identity": null, + "name": "who", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "platform", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_key", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "movies", + "table": "plays" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "tmdb_id", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "for_whom", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "reason", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "added_at", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "poster_path", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "genres", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metadata_at", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "movies", + "table": "recs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "movies", + "table": "settings" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "value", + "entityType": "columns", + "schema": "movies", + "table": "settings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "movies", + "table": "settings" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "movies", + "table": "settings" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "tmdb_id", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "match_key", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "original_title", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "year", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'watched'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "real", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rating", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "rewatch_count", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "first_watched", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "date", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_watched", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "watched_by", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "platform", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "sources", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "match_status", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "poster_path", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "backdrop_path", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "overview", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "genres", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "cast", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "runtime_min", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "total_seasons", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "total_episodes", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metadata_at", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "movies", + "table": "titles" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "worldtodo", + "table": "categories" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "worldtodo", + "table": "categories" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "icon", + "entityType": "columns", + "schema": "worldtodo", + "table": "categories" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "colour", + "entityType": "columns", + "schema": "worldtodo", + "table": "categories" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "byDefault", + "name": "change_requests_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "9223372036854775807", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "req_kind", + "typeSchema": "worldtodo", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "task_id", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "payload", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "applied", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "task_updated_at", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "reason", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "display_name", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "req_status", + "typeSchema": "worldtodo", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "owner_note", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "decided_at", + "entityType": "columns", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": { + "type": "byDefault", + "name": "tasks_id_seq", + "increment": "1", + "startWith": "1", + "minValue": "1", + "maxValue": "9223372036854775807", + "cache": 1, + "cycle": false + }, + "name": "id", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "scale", + "typeSchema": "worldtodo", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "scale", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "location_name", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "country_code", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lat", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "lon", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "location_precision", + "typeSchema": "worldtodo", + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "location_precision", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "status", + "typeSchema": "worldtodo", + "notNull": true, + "dimensions": 0, + "default": "'open'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "source_urls", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source_date", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'high'", + "generated": null, + "identity": null, + "name": "confidence", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "verification_note", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "date", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "as_of", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "deleted_at", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "tsvector", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": { + "as": "to_tsvector('simple', title || ' ' || description || ' ' || location_name)", + "type": "stored" + }, + "identity": null, + "name": "search", + "entityType": "columns", + "schema": "worldtodo", + "table": "tasks" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "goal", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "mods", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "list_item_id", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'unmatched'", + "generated": null, + "identity": null, + "name": "match_status", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "match_note", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'[]'", + "generated": null, + "identity": null, + "name": "candidates", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "beatmapset_id", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "beatmap_id", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mode", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "artist", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "artist_unicode", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title_unicode", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mapper", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mapper_id", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "version", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "diff_mapper_id", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ranked_at", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "submitted_at", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "genre", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "language", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "tags", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "user_tags", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bpm", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bpm_min", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bpm_max", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "length_seconds", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "drain_seconds", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ar", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "od", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cs", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "hp", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_combo", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "circles", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sliders", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "spinners", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "stars", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "stars_dt", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "stars_hr", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "stars_hd", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "stars_hddt", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "stars_hdhr", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "attributes", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "longest_stream", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "stream_notes", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "play_count", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "pass_count", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "favourite_count", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "map_play_count", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cover_url", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "card_url", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "list_url", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "preview_url", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "focus", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "metadata_at", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "my_play_count", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "best_score_id", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "best_score", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "best_accuracy", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "best_mods", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "best_rank", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "double precision", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "best_pp", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "best_combo", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "best_misses", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "best_fc", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "best_at", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "passed", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "fc", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "achieved_at", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'[]'", + "generated": null, + "identity": null, + "name": "scores", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "scores_at", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_error", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "games", + "table": "osu_goals" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "path", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "folder", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ext", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "size", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mtime", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "hash", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "tags", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "frontmatter", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "body", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "tsvector", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "search", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "indexed_at", + "entityType": "columns", + "schema": "notes", + "table": "files" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "src_path", + "entityType": "columns", + "schema": "notes", + "table": "links" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "seq", + "entityType": "columns", + "schema": "notes", + "table": "links" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target", + "entityType": "columns", + "schema": "notes", + "table": "links" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_key", + "entityType": "columns", + "schema": "notes", + "table": "links" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "embed", + "entityType": "columns", + "schema": "notes", + "table": "links" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "math", + "table": "activity" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "chapter_id", + "entityType": "columns", + "schema": "math", + "table": "activity" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "section_id", + "entityType": "columns", + "schema": "math", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "math", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "from_value", + "entityType": "columns", + "schema": "math", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "to_value", + "entityType": "columns", + "schema": "math", + "table": "activity" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "delta", + "entityType": "columns", + "schema": "math", + "table": "activity" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'sql'", + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "math", + "table": "activity" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "math", + "table": "activity" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "part_id", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "page_start", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "page_end", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "exercise_count", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "prereqs", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'not_started'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "exercises_done", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "completed_at", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "math", + "table": "chapters" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "math", + "table": "parts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "math", + "table": "parts" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "num", + "entityType": "columns", + "schema": "math", + "table": "parts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "math", + "table": "parts" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "math", + "table": "parts" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "math", + "table": "sections" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "chapter_id", + "entityType": "columns", + "schema": "math", + "table": "sections" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "key", + "entityType": "columns", + "schema": "math", + "table": "sections" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "math", + "table": "sections" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "math", + "table": "sections" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "done_at", + "entityType": "columns", + "schema": "math", + "table": "sections" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "slug", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "summary", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "body", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "parent_id", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "tags", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'assumed'", + "generated": null, + "identity": null, + "name": "confidence", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "answered_at", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "plant", + "table": "entries" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "plant", + "table": "links" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "from_id", + "entityType": "columns", + "schema": "plant", + "table": "links" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "to_id", + "entityType": "columns", + "schema": "plant", + "table": "links" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "relation", + "entityType": "columns", + "schema": "plant", + "table": "links" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "plant", + "table": "links" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "dashed", + "entityType": "columns", + "schema": "plant", + "table": "links" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'confirmed'", + "generated": null, + "identity": null, + "name": "confidence", + "entityType": "columns", + "schema": "plant", + "table": "links" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "plant", + "table": "links" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "plant", + "table": "pending" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "from_id", + "entityType": "columns", + "schema": "plant", + "table": "pending" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "field", + "entityType": "columns", + "schema": "plant", + "table": "pending" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "to_ref", + "entityType": "columns", + "schema": "plant", + "table": "pending" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "plant", + "table": "pending" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "dashed", + "entityType": "columns", + "schema": "plant", + "table": "pending" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'confirmed'", + "generated": null, + "identity": null, + "name": "confidence", + "entityType": "columns", + "schema": "plant", + "table": "pending" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "plant", + "table": "pending" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "channel", + "entityType": "columns", + "schema": "radio", + "table": "channels" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "frequency_id", + "entityType": "columns", + "schema": "radio", + "table": "channels" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "alpha_tag", + "entityType": "columns", + "schema": "radio", + "table": "channels" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "delay", + "entityType": "columns", + "schema": "radio", + "table": "channels" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "lockout", + "entityType": "columns", + "schema": "radio", + "table": "channels" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "priority", + "entityType": "columns", + "schema": "radio", + "table": "channels" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "radio", + "table": "channels" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "freq_hz", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'FM'", + "generated": null, + "identity": null, + "name": "mode", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "band", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "location", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "marine_ch", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "tags", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "source", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "radio", + "table": "frequencies" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "start_at", + "entityType": "columns", + "schema": "radio", + "table": "iss_passes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_at", + "entityType": "columns", + "schema": "radio", + "table": "iss_passes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "end_at", + "entityType": "columns", + "schema": "radio", + "table": "iss_passes" + }, + { + "type": "real", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_el", + "entityType": "columns", + "schema": "radio", + "table": "iss_passes" + }, + { + "type": "real", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "start_az", + "entityType": "columns", + "schema": "radio", + "table": "iss_passes" + }, + { + "type": "real", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "max_az", + "entityType": "columns", + "schema": "radio", + "table": "iss_passes" + }, + { + "type": "real", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "end_az", + "entityType": "columns", + "schema": "radio", + "table": "iss_passes" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "sunlit", + "entityType": "columns", + "schema": "radio", + "table": "iss_passes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "computed_at", + "entityType": "columns", + "schema": "radio", + "table": "iss_passes" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "radio", + "table": "iss_tle" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "radio", + "table": "iss_tle" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "line1", + "entityType": "columns", + "schema": "radio", + "table": "iss_tle" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "line2", + "entityType": "columns", + "schema": "radio", + "table": "iss_tle" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "epoch", + "entityType": "columns", + "schema": "radio", + "table": "iss_tle" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "fetched_at", + "entityType": "columns", + "schema": "radio", + "table": "iss_tle" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "radio", + "table": "log" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "heard_at", + "entityType": "columns", + "schema": "radio", + "table": "log" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "frequency_id", + "entityType": "columns", + "schema": "radio", + "table": "log" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "freq_hz", + "entityType": "columns", + "schema": "radio", + "table": "log" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "mode", + "entityType": "columns", + "schema": "radio", + "table": "log" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "what", + "entityType": "columns", + "schema": "radio", + "table": "log" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "signal", + "entityType": "columns", + "schema": "radio", + "table": "log" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "radio", + "table": "log" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "radio", + "table": "log" + }, + { + "type": "serial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "frequency_id", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "days", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "times", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "duration_min", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'net'", + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "notes", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "remind", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "active", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "sort_order", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "created_at", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "updated_at", + "entityType": "columns", + "schema": "radio", + "table": "nets" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "radio", + "table": "reminders" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ref_id", + "entityType": "columns", + "schema": "radio", + "table": "reminders" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "at", + "entityType": "columns", + "schema": "radio", + "table": "reminders" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "now()", + "generated": null, + "identity": null, + "name": "sent_at", + "entityType": "columns", + "schema": "radio", + "table": "reminders" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "account_userId_idx", + "entityType": "indexes", + "schema": "auth", + "table": "account" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "issuer", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "account_issuer_account_id_unique", + "entityType": "indexes", + "schema": "auth", + "table": "account" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "session_userId_idx", + "entityType": "indexes", + "schema": "auth", + "table": "session" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "identifier", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "verification_identifier_idx", + "entityType": "indexes", + "schema": "auth", + "table": "verification" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "pokemon_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "game_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pokemon_encounters_pokemon_id_game_id_index", + "entityType": "indexes", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "location_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pokemon_encounters_location_id_index", + "entityType": "indexes", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "game_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pokemon_evolutions_game_id_index", + "entityType": "indexes", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "game_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pokemon_game_entries_game_id_index", + "entityType": "indexes", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "catch_em_all_entries_user_id_index", + "entityType": "indexes", + "schema": "games", + "table": "catch_em_all_entries" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "catch_em_all_games_user_id_index", + "entityType": "indexes", + "schema": "games", + "table": "catch_em_all_games" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "game_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "tracker_items_game_id_index", + "entityType": "indexes", + "schema": "ref", + "table": "tracker_items" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "tracker_progress_user_id_index", + "entityType": "indexes", + "schema": "games", + "table": "tracker_progress" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "game", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "external_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "accounts_game_source_ext_idx", + "entityType": "indexes", + "schema": "games", + "table": "accounts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "match_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "player_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "match_players_match_player_idx", + "entityType": "indexes", + "schema": "games", + "table": "match_players" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "player_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "match_players_player_idx", + "entityType": "indexes", + "schema": "games", + "table": "match_players" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "game", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "external_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "matches_source_ext_idx", + "entityType": "indexes", + "schema": "games", + "table": "matches" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "game", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "played_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "matches_game_played_idx", + "entityType": "indexes", + "schema": "games", + "table": "matches" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "game", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "season", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "board", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "seasons_key_idx", + "entityType": "indexes", + "schema": "games", + "table": "seasons" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "game", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "kind", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "taken_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "snapshots_game_kind_idx", + "entityType": "indexes", + "schema": "games", + "table": "snapshots" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "kind", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "osu_entries_user_id_kind_index", + "entityType": "indexes", + "schema": "games", + "table": "osu_entries" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "game_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "pokemon_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pokemon_catches_user_id_game_id_pokemon_id_index", + "entityType": "indexes", + "schema": "games", + "table": "pokemon_catches" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "game_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pokemon_dex_numbers_game_id_index", + "entityType": "indexes", + "schema": "ref", + "table": "pokemon_dex_numbers" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pokemon_seen_user_id_index", + "entityType": "indexes", + "schema": "games", + "table": "pokemon_seen" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "table_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "columns_table_id_index", + "entityType": "indexes", + "schema": "meta", + "table": "columns" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "schema_name", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "table_name", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "edit_log_table_at_index", + "entityType": "indexes", + "schema": "meta", + "table": "edit_log" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "accounts_user_id_index", + "entityType": "indexes", + "schema": "money", + "table": "accounts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "bank_sessions_user_id_index", + "entityType": "indexes", + "schema": "money", + "table": "bank_sessions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "forecasts_user_id_date_index", + "entityType": "indexes", + "schema": "money", + "table": "forecasts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "insurances_user_id_index", + "entityType": "indexes", + "schema": "money", + "table": "insurances" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "recurring_user_id_index", + "entityType": "indexes", + "schema": "money", + "table": "recurring" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "transactions_user_id_date_id_index", + "entityType": "indexes", + "schema": "money", + "table": "transactions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "transactions_account_id_index", + "entityType": "indexes", + "schema": "money", + "table": "transactions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "kind", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "utility_readings_user_id_kind_date_index", + "entityType": "indexes", + "schema": "money", + "table": "utility_readings" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "user_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "wishlist_user_id_index", + "entityType": "indexes", + "schema": "money", + "table": "wishlist" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "day", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "stream_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "daily_prices_day_idx", + "entityType": "indexes", + "schema": "cs", + "table": "daily_prices" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "value", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "item_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "item_dimensions_filter_idx", + "entityType": "indexes", + "schema": "cs", + "table": "item_dimensions" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "market_hash_name", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "coalesce(\"phase\", '')", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "items_config_idx", + "entityType": "indexes", + "schema": "cs", + "table": "items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "name", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "items_name_idx", + "entityType": "indexes", + "schema": "cs", + "table": "items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "skin_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "items_skin_idx", + "entityType": "indexes", + "schema": "cs", + "table": "items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "item_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "currency", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "observed_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "kind", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "price_observations_unique_idx", + "entityType": "indexes", + "schema": "cs", + "table": "price_observations" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "item_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "currency", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "observed_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "price_observations_lookup_idx", + "entityType": "indexes", + "schema": "cs", + "table": "price_observations" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "observed_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "price_observations_time_idx", + "entityType": "indexes", + "schema": "cs", + "table": "price_observations" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "price_streams_id_idx", + "entityType": "indexes", + "schema": "cs", + "table": "price_streams" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "skins_slug_idx", + "entityType": "indexes", + "schema": "cs", + "table": "skins" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "name", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "skins_name_idx", + "entityType": "indexes", + "schema": "cs", + "table": "skins" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "kind", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "skins_kind_idx", + "entityType": "indexes", + "schema": "cs", + "table": "skins" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "source_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "listings_source_idx", + "entityType": "indexes", + "schema": "house", + "table": "listings" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "offer", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "first_seen_at", + "isExpression": false, + "asc": false, + "nullsFirst": true, + "opclass": null + } + ], + "isUnique": false, + "where": "removed_at IS NULL", + "with": "", + "method": "btree", + "concurrently": false, + "name": "listings_active_idx", + "entityType": "indexes", + "schema": "house", + "table": "listings" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "offer", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "city_slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "listings_city_idx", + "entityType": "indexes", + "schema": "house", + "table": "listings" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "first_seen_at", + "isExpression": false, + "asc": false, + "nullsFirst": true, + "opclass": null + } + ], + "isUnique": false, + "where": "detail_fetched_at IS NULL", + "with": "", + "method": "btree", + "concurrently": false, + "name": "listings_details_idx", + "entityType": "indexes", + "schema": "house", + "table": "listings" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "contact_status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "contact_status IS NOT NULL", + "with": "", + "method": "btree", + "concurrently": false, + "name": "listings_contact_idx", + "entityType": "indexes", + "schema": "house", + "table": "listings" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "address_key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "address_key IS NOT NULL", + "with": "", + "method": "btree", + "concurrently": false, + "name": "listings_address_idx", + "entityType": "indexes", + "schema": "house", + "table": "listings" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "created_at", + "isExpression": false, + "asc": false, + "nullsFirst": true, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "worker_runs_created_idx", + "entityType": "indexes", + "schema": "house", + "table": "worker_runs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "appointments_date_idx", + "entityType": "indexes", + "schema": "health", + "table": "appointments" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "body_measurements_date_idx", + "entityType": "indexes", + "schema": "health", + "table": "body_measurements" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "weight_kg", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "body_measurements_date_weight_key", + "entityType": "indexes", + "schema": "health", + "table": "body_measurements" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "measured_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "body_measurements_measured_at_key", + "entityType": "indexes", + "schema": "health", + "table": "body_measurements" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "start_date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "medications_start_date_idx", + "entityType": "indexes", + "schema": "health", + "table": "medications" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "stop_date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "medications_stop_date_idx", + "entityType": "indexes", + "schema": "health", + "table": "medications" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "vaccinations_date_idx", + "entityType": "indexes", + "schema": "health", + "table": "vaccinations" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "workouts_date_idx", + "entityType": "indexes", + "schema": "health", + "table": "workouts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "session_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "workouts_session_idx", + "entityType": "indexes", + "schema": "health", + "table": "workouts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "merged_into", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "deleted_works_merged_into_idx", + "entityType": "indexes", + "schema": "books", + "table": "deleted_works" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "path", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "files_path_key", + "entityType": "indexes", + "schema": "books", + "table": "files" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "sha256", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "files_sha256_key", + "entityType": "indexes", + "schema": "books", + "table": "files" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "work_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "files_work_id_idx", + "entityType": "indexes", + "schema": "books", + "table": "files" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "work_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notes_work_id_idx", + "entityType": "indexes", + "schema": "books", + "table": "notes" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "work_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "progress_work_id_key", + "entityType": "indexes", + "schema": "books", + "table": "progress" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "progress_status_idx", + "entityType": "indexes", + "schema": "books", + "table": "progress" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "work_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "sessions_work_id_idx", + "entityType": "indexes", + "schema": "books", + "table": "sessions" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "started_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "sessions_started_at_idx", + "entityType": "indexes", + "schema": "books", + "table": "sessions" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "work_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "shelf_works_work_id_idx", + "entityType": "indexes", + "schema": "books", + "table": "shelf_works" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "shelves_slug_key", + "entityType": "indexes", + "schema": "books", + "table": "shelves" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "url", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": "\"url\" is not null", + "with": "", + "method": "btree", + "concurrently": false, + "name": "works_url_key", + "entityType": "indexes", + "schema": "books", + "table": "works" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "kind", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "works_kind_idx", + "entityType": "indexes", + "schema": "books", + "table": "works" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "archived_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "works_archived_at_idx", + "entityType": "indexes", + "schema": "books", + "table": "works" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "isbn13", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": "\"isbn13\" is not null", + "with": "", + "method": "btree", + "concurrently": false, + "name": "works_isbn13_key", + "entityType": "indexes", + "schema": "books", + "table": "works" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "lower(\"title\")", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "works_title_idx", + "entityType": "indexes", + "schema": "books", + "table": "works" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "task_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "activity_task_idx", + "entityType": "indexes", + "schema": "tasks", + "table": "activity" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "goal_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "activity_goal_idx", + "entityType": "indexes", + "schema": "tasks", + "table": "activity" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "areas_slug_key", + "entityType": "indexes", + "schema": "tasks", + "table": "areas" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "lower(\"title\")", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "goals_title_key", + "entityType": "indexes", + "schema": "tasks", + "table": "goals" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "area_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "tasks_area_idx", + "entityType": "indexes", + "schema": "tasks", + "table": "tasks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "goal_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "tasks_goal_idx", + "entityType": "indexes", + "schema": "tasks", + "table": "tasks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "parent_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "tasks_parent_idx", + "entityType": "indexes", + "schema": "tasks", + "table": "tasks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "due_date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "tasks_status_due_idx", + "entityType": "indexes", + "schema": "tasks", + "table": "tasks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "tags", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "tasks_tags_idx", + "entityType": "indexes", + "schema": "tasks", + "table": "tasks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "external_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": "\"external_id\" IS NOT NULL", + "with": "", + "method": "btree", + "concurrently": false, + "name": "tasks_source_external_key", + "entityType": "indexes", + "schema": "tasks", + "table": "tasks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "categories_slug_key", + "entityType": "indexes", + "schema": "groceries", + "table": "categories" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "parent_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "categories_parent_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "categories" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "groups_key_key", + "entityType": "indexes", + "schema": "groceries", + "table": "groups" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "family_key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "groups_family_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "groups" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "category", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "groups_category_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "groups" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "category_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "groups_category_id_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "groups" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "store_ids", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "groups_store_ids_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "groups" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "\"search_text\" gin_trgm_ops", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "groups_search_trgm_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "groups" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "store_count", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "name", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "groups_list_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "groups" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "store_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "started_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_runs_store_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "import_runs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "item_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "observed_on", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "item_prices_item_day_key", + "entityType": "indexes", + "schema": "groceries", + "table": "item_prices" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "item_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "observed_on", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "item_sizes_item_day_key", + "entityType": "indexes", + "schema": "groceries", + "table": "item_sizes" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "store_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "store_product_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "items_store_product_key", + "entityType": "indexes", + "schema": "groceries", + "table": "items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "group_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "items_group_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "gtin", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "items_gtin_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "category_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "items_category_id_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "\"name\" gin_trgm_ops", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "items_name_trgm_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "group_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "observed_on", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "manual_prices_group_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "manual_prices" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "item_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "manual_prices_item_idx", + "entityType": "indexes", + "schema": "groceries", + "table": "manual_prices" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "computed_on", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "scope", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "stats_snapshots_day_scope_key", + "entityType": "indexes", + "schema": "groceries", + "table": "stats_snapshots" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "stores_slug_key", + "entityType": "indexes", + "schema": "groceries", + "table": "stores" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "term", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "synonym", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "synonyms_term_synonym_key", + "entityType": "indexes", + "schema": "groceries", + "table": "synonyms" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "section", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "sort_order", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "links_sort_idx", + "entityType": "indexes", + "schema": "home", + "table": "links" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "area", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "score", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "activity_area_score_idx", + "entityType": "indexes", + "schema": "cars", + "table": "activity" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "brands_slug_key", + "entityType": "indexes", + "schema": "cars", + "table": "brands" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "dex", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "models_dex_key", + "entityType": "indexes", + "schema": "cars", + "table": "models" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "brand_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "models_brand_slug_key", + "entityType": "indexes", + "schema": "cars", + "table": "models" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "nl_count", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "models_nl_count_idx", + "entityType": "indexes", + "schema": "cars", + "table": "models" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "\"search\" public.gin_trgm_ops", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "models_search_trgm_idx", + "entityType": "indexes", + "schema": "cars", + "table": "models" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "model_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "position", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "photos_model_position_key", + "entityType": "indexes", + "schema": "cars", + "table": "photos" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "model_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "year", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "variants_model_year_idx", + "entityType": "indexes", + "schema": "cars", + "table": "variants" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "area", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "score", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "activity_area_score_idx", + "entityType": "indexes", + "schema": "planes", + "table": "activity" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "makers_slug_key", + "entityType": "indexes", + "schema": "planes", + "table": "makers" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "type_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "position", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "photos_type_position_key", + "entityType": "indexes", + "schema": "planes", + "table": "photos" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "dex", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "types_dex_key", + "entityType": "indexes", + "schema": "planes", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "wikidata", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "types_wikidata_key", + "entityType": "indexes", + "schema": "planes", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "maker_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "types_maker_slug_key", + "entityType": "indexes", + "schema": "planes", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "number_built", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "types_number_built_idx", + "entityType": "indexes", + "schema": "planes", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "first_flight_year", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "types_first_flight_year_idx", + "entityType": "indexes", + "schema": "planes", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "\"search\" public.gin_trgm_ops", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "types_search_trgm_idx", + "entityType": "indexes", + "schema": "planes", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "area", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "score", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "activity_area_score_idx", + "entityType": "indexes", + "schema": "wildlife", + "table": "activity" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "groups_slug_key", + "entityType": "indexes", + "schema": "wildlife", + "table": "groups" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "species_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "position", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "photos_species_position_key", + "entityType": "indexes", + "schema": "wildlife", + "table": "photos" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "species_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "photo_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "photos_species_photo_key", + "entityType": "indexes", + "schema": "wildlife", + "table": "photos" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "dex", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "species_dex_key", + "entityType": "indexes", + "schema": "wildlife", + "table": "species" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "inat_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "species_inat_key", + "entityType": "indexes", + "schema": "wildlife", + "table": "species" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "species_slug_key", + "entityType": "indexes", + "schema": "wildlife", + "table": "species" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "group_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "species_group_idx", + "entityType": "indexes", + "schema": "wildlife", + "table": "species" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "nl_obs", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "species_nl_obs_idx", + "entityType": "indexes", + "schema": "wildlife", + "table": "species" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "\"search\" public.gin_trgm_ops", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "species_search_trgm_idx", + "entityType": "indexes", + "schema": "wildlife", + "table": "species" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "area", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "score", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "activity_area_score_idx", + "entityType": "indexes", + "schema": "trains", + "table": "activity" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "makers_slug_key", + "entityType": "indexes", + "schema": "trains", + "table": "makers" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "operators_slug_key", + "entityType": "indexes", + "schema": "trains", + "table": "operators" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "type_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "position", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "photos_type_position_key", + "entityType": "indexes", + "schema": "trains", + "table": "photos" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "operator_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "type_operators_operator_idx", + "entityType": "indexes", + "schema": "trains", + "table": "type_operators" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "dex", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "types_dex_key", + "entityType": "indexes", + "schema": "trains", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "wikidata", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "types_wikidata_key", + "entityType": "indexes", + "schema": "trains", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "maker_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "types_maker_slug_key", + "entityType": "indexes", + "schema": "trains", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "number_built", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "types_number_built_idx", + "entityType": "indexes", + "schema": "trains", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "first_built", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "types_first_built_idx", + "entityType": "indexes", + "schema": "trains", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "category", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "types_category_idx", + "entityType": "indexes", + "schema": "trains", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "\"search\" public.gin_trgm_ops", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "types_search_trgm_idx", + "entityType": "indexes", + "schema": "trains", + "table": "types" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "spotify_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": "\"spotify_id\" is not null", + "with": "", + "method": "btree", + "concurrently": false, + "name": "albums_spotify_id_key", + "entityType": "indexes", + "schema": "music", + "table": "albums" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "lower(\"name\")", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "albums_name_idx", + "entityType": "indexes", + "schema": "music", + "table": "albums" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "tag", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "artist_tags_tag_idx", + "entityType": "indexes", + "schema": "music", + "table": "artist_tags" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "spotify_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": "\"spotify_id\" is not null", + "with": "", + "method": "btree", + "concurrently": false, + "name": "artists_spotify_id_key", + "entityType": "indexes", + "schema": "music", + "table": "artists" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "lower(\"name\")", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "artists_name_idx", + "entityType": "indexes", + "schema": "music", + "table": "artists" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "track_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "played_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "plays_dedupe_key", + "entityType": "indexes", + "schema": "music", + "table": "plays" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "played_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "plays_played_at_idx", + "entityType": "indexes", + "schema": "music", + "table": "plays" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "played_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "plays_source_played_idx", + "entityType": "indexes", + "schema": "music", + "table": "plays" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "track_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "played_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "plays_track_played_idx", + "entityType": "indexes", + "schema": "music", + "table": "plays" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "artist_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "track_artists_artist_idx", + "entityType": "indexes", + "schema": "music", + "table": "track_artists" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "spotify_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": "\"spotify_id\" is not null", + "with": "", + "method": "btree", + "concurrently": false, + "name": "tracks_spotify_id_key", + "entityType": "indexes", + "schema": "music", + "table": "tracks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "lower(\"name\")", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "tracks_name_idx", + "entityType": "indexes", + "schema": "music", + "table": "tracks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "match_key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "tracks_match_key_idx", + "entityType": "indexes", + "schema": "music", + "table": "tracks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "device_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "components_device_idx", + "entityType": "indexes", + "schema": "hardware", + "table": "components" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "category", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "components_category_idx", + "entityType": "indexes", + "schema": "hardware", + "table": "components" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "specs", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "components_specs_gin", + "entityType": "indexes", + "schema": "hardware", + "table": "components" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "installed_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "removed_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "components_timeline_idx", + "entityType": "indexes", + "schema": "hardware", + "table": "components" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "import_key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "orgs_import_key_key", + "entityType": "indexes", + "schema": "dataholders", + "table": "orgs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "category", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "orgs_category_idx", + "entityType": "indexes", + "schema": "dataholders", + "table": "orgs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "table_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "measure", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "cbs_obs_table_measure_idx", + "entityType": "indexes", + "schema": "stats", + "table": "cbs_obs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "level", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "area_code", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "elec_result_area_idx", + "entityType": "indexes", + "schema": "stats", + "table": "elec_result" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "dataset", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "geo", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "eurostat_obs_dataset_geo_idx", + "entityType": "indexes", + "schema": "stats", + "table": "eurostat_obs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "source_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "started_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "fetch_run_source_idx", + "entityType": "indexes", + "schema": "stats", + "table": "fetch_run" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "series", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "fieldwork_end", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "op_poll_series_date_idx", + "entityType": "indexes", + "schema": "stats", + "table": "op_poll" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "year", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "vuo", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "chapter", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "rf_budget_table_chapter_idx", + "entityType": "indexes", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "theme", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "series_theme_idx", + "entityType": "indexes", + "schema": "stats", + "table": "series" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "source_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "series_source_idx", + "entityType": "indexes", + "schema": "stats", + "table": "series" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "iso3", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "wo_party_iso3_idx", + "entityType": "indexes", + "schema": "stats", + "table": "wo_party" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "match_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pubg_markers_match_idx", + "entityType": "indexes", + "schema": "games", + "table": "pubg_markers" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "room_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "number", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pubg_matches_room_number_idx", + "entityType": "indexes", + "schema": "games", + "table": "pubg_matches" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "map", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "started_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pubg_matches_map_idx", + "entityType": "indexes", + "schema": "games", + "table": "pubg_matches" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "name", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "bot_status_name_key", + "entityType": "indexes", + "schema": "ai", + "table": "bot_status" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "url", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "news_items_url_key", + "entityType": "indexes", + "schema": "ai", + "table": "news_items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "news_items_date_idx", + "entityType": "indexes", + "schema": "ai", + "table": "news_items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "provider_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "section", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "sort_order", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "provider_setup_entries_provider_idx", + "entityType": "indexes", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "name", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "provider_setup_providers_name_key", + "entityType": "indexes", + "schema": "ai", + "table": "provider_setup_providers" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "provider", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "metric", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "source", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "usage_entries_day_key", + "entityType": "indexes", + "schema": "ai", + "table": "usage_entries" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "provider", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "metric", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "date", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "usage_entries_provider_idx", + "entityType": "indexes", + "schema": "ai", + "table": "usage_entries" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "title_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "ep_key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "episodes_title_key", + "entityType": "indexes", + "schema": "movies", + "table": "episodes" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "title_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "season", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "episode", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "episodes_title_idx", + "entityType": "indexes", + "schema": "movies", + "table": "episodes" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "source_key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "plays_source_key", + "entityType": "indexes", + "schema": "movies", + "table": "plays" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "title_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "plays_title_idx", + "entityType": "indexes", + "schema": "movies", + "table": "plays" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "watched_on", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "plays_watched_idx", + "entityType": "indexes", + "schema": "movies", + "table": "plays" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "type", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "tmdb_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "recs_tmdb_key", + "entityType": "indexes", + "schema": "movies", + "table": "recs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "type", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "tmdb_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": "\"tmdb_id\" IS NOT NULL", + "with": "", + "method": "btree", + "concurrently": false, + "name": "titles_tmdb_key", + "entityType": "indexes", + "schema": "movies", + "table": "titles" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "match_key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "titles_match_key", + "entityType": "indexes", + "schema": "movies", + "table": "titles" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "titles_status_idx", + "entityType": "indexes", + "schema": "movies", + "table": "titles" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "change_requests_status_idx", + "entityType": "indexes", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "task_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "change_requests_task_idx", + "entityType": "indexes", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "tasks_slug_key", + "entityType": "indexes", + "schema": "worldtodo", + "table": "tasks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "search", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "tasks_search_idx", + "entityType": "indexes", + "schema": "worldtodo", + "table": "tasks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "scale", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "deleted_at IS NULL", + "with": "", + "method": "btree", + "concurrently": false, + "name": "tasks_scale_status_idx", + "entityType": "indexes", + "schema": "worldtodo", + "table": "tasks" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "beatmap_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "osu_goals_beatmap_idx", + "entityType": "indexes", + "schema": "games", + "table": "osu_goals" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "search", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "files_search_idx", + "entityType": "indexes", + "schema": "notes", + "table": "files" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "tags", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "files_tags_idx", + "entityType": "indexes", + "schema": "notes", + "table": "files" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "folder", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "files_folder_idx", + "entityType": "indexes", + "schema": "notes", + "table": "files" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "kind", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "files_kind_idx", + "entityType": "indexes", + "schema": "notes", + "table": "files" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "target_key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "links_target_key_idx", + "entityType": "indexes", + "schema": "notes", + "table": "links" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "created_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "activity_created_idx", + "entityType": "indexes", + "schema": "math", + "table": "activity" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "chapter_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "activity_chapter_idx", + "entityType": "indexes", + "schema": "math", + "table": "activity" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "chapters_key_key", + "entityType": "indexes", + "schema": "math", + "table": "chapters" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "part_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "sort_order", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "chapters_part_idx", + "entityType": "indexes", + "schema": "math", + "table": "chapters" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "parts_key_key", + "entityType": "indexes", + "schema": "math", + "table": "parts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "chapter_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "sections_chapter_key_key", + "entityType": "indexes", + "schema": "math", + "table": "sections" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "kind", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "slug", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "entries_kind_slug_key", + "entityType": "indexes", + "schema": "plant", + "table": "entries" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "parent_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "entries_parent_idx", + "entityType": "indexes", + "schema": "plant", + "table": "entries" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "from_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "to_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "relation", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "links_from_to_relation_key", + "entityType": "indexes", + "schema": "plant", + "table": "links" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "to_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "links_to_idx", + "entityType": "indexes", + "schema": "plant", + "table": "links" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "from_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "field", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "to_ref", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pending_from_field_ref_key", + "entityType": "indexes", + "schema": "plant", + "table": "pending" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "frequency_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "channels_frequency_idx", + "entityType": "indexes", + "schema": "radio", + "table": "channels" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "freq_hz", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "name", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "frequencies_freq_name_key", + "entityType": "indexes", + "schema": "radio", + "table": "frequencies" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "band", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "frequencies_band_idx", + "entityType": "indexes", + "schema": "radio", + "table": "frequencies" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "end_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "iss_passes_end_idx", + "entityType": "indexes", + "schema": "radio", + "table": "iss_passes" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "heard_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "log_heard_idx", + "entityType": "indexes", + "schema": "radio", + "table": "log" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "frequency_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "log_frequency_idx", + "entityType": "indexes", + "schema": "radio", + "table": "log" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "account_user_id_user_id_fkey", + "entityType": "fks", + "schema": "auth", + "table": "account" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "session_user_id_user_id_fkey", + "entityType": "fks", + "schema": "auth", + "table": "session" + }, + { + "nameExplicit": false, + "columns": [ + "task_id" + ], + "schemaTo": "site", + "tableTo": "tasks", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "task_topics_task_id_tasks_id_fkey", + "entityType": "fks", + "schema": "site", + "table": "task_topics" + }, + { + "nameExplicit": false, + "columns": [ + "topic_id" + ], + "schemaTo": "site", + "tableTo": "topics", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "task_topics_topic_id_topics_id_fkey", + "entityType": "fks", + "schema": "site", + "table": "task_topics" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "catch_em_all_settings_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "catch_em_all_settings" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_encounters_pokemon_id_pokemon_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_encounters_game_id_pokemon_games_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "nameExplicit": false, + "columns": [ + "location_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_locations", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_encounters_location_id_pokemon_locations_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_encounters" + }, + { + "nameExplicit": false, + "columns": [ + "from_pokemon_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_evolutions_from_pokemon_id_pokemon_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "nameExplicit": false, + "columns": [ + "to_pokemon_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_evolutions_to_pokemon_id_pokemon_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_evolutions_game_id_pokemon_games_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_game_entries_pokemon_id_pokemon_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_game_entries_game_id_pokemon_games_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_game_entry_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_game_entries", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "catch_em_all_entries_HeABXvGNiB6D_fkey", + "entityType": "fks", + "schema": "games", + "table": "catch_em_all_entries" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "catch_em_all_entries_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "catch_em_all_entries" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "catch_em_all_games_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "catch_em_all_games" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "catch_em_all_games_game_id_pokemon_games_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "catch_em_all_games" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "tracker_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "tracker_items_game_id_tracker_games_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "tracker_items" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "tracker_progress_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "tracker_progress" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "ref", + "tableTo": "tracker_items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "tracker_progress_item_id_tracker_items_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "tracker_progress" + }, + { + "nameExplicit": false, + "columns": [ + "match_id" + ], + "schemaTo": "games", + "tableTo": "matches", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "match_players_match_id_matches_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "match_players" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "osu_entries_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "osu_entries" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_catches_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pokemon_catches" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_catches_game_id_pokemon_games_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pokemon_catches" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_catches_pokemon_id_pokemon_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pokemon_catches" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_dex_numbers_pokemon_id_pokemon_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_dex_numbers" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_dex_numbers_game_id_pokemon_games_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_dex_numbers" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_game_research_game_id_pokemon_games_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_game_research" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_journeys_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_journeys_game_id_pokemon_games_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_learnsets_pokemon_id_pokemon_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_learnsets" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_milestones_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_milestones_game_id_pokemon_games_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_research_pokemon_id_pokemon_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "pokemon_research" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_seen_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pokemon_seen" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_seen_game_id_pokemon_games_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pokemon_seen" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_id" + ], + "schemaTo": "ref", + "tableTo": "pokemon", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pokemon_seen_pokemon_id_pokemon_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pokemon_seen" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "tracker_challenge_progress_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "tracker_challenge_progress" + }, + { + "nameExplicit": false, + "columns": [ + "challenge_id" + ], + "schemaTo": "ref", + "tableTo": "tracker_challenges", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "tracker_challenge_progress_HtzyFtOyUAhk_fkey", + "entityType": "fks", + "schema": "games", + "table": "tracker_challenge_progress" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "tracker_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "tracker_challenges_game_id_tracker_games_id_fkey", + "entityType": "fks", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "tracker_ranks_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "tracker_ranks" + }, + { + "nameExplicit": false, + "columns": [ + "game_id" + ], + "schemaTo": "ref", + "tableTo": "tracker_games", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "tracker_ranks_game_id_tracker_games_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "tracker_ranks" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "tracker_weapon_ranks_user_id_user_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "ref", + "tableTo": "tracker_items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "tracker_weapon_ranks_item_id_tracker_items_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "nameExplicit": false, + "columns": [ + "sighting_id" + ], + "schemaTo": "animaldex", + "tableTo": "sightings", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "sighting_photos_sighting_id_sightings_id_fkey", + "entityType": "fks", + "schema": "animaldex", + "table": "sighting_photos" + }, + { + "nameExplicit": false, + "columns": [ + "animal_id" + ], + "schemaTo": "animaldex", + "tableTo": "animals", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "sightings_animal_id_animals_id_fkey", + "entityType": "fks", + "schema": "animaldex", + "table": "sightings" + }, + { + "nameExplicit": false, + "columns": [ + "table_id" + ], + "schemaTo": "meta", + "tableTo": "tables", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "columns_table_id_tables_id_fkey", + "entityType": "fks", + "schema": "meta", + "table": "columns" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "accounts_user_id_user_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "accounts" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "bank_sessions_user_id_user_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "bank_sessions" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "forecasts_user_id_user_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "forecasts" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "money", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "forecasts_account_id_accounts_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "forecasts" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "insurances_user_id_user_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "insurances" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "projection_settings_user_id_user_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "projection_settings" + }, + { + "nameExplicit": false, + "columns": [ + "investment_account_id" + ], + "schemaTo": "money", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "projection_settings_investment_account_id_accounts_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "projection_settings" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "recurring_user_id_user_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "recurring" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "money", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "recurring_account_id_accounts_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "recurring" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "transactions_user_id_user_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "transactions" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "money", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "NO ACTION", + "name": "transactions_account_id_accounts_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "transactions" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "utility_readings_user_id_user_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "utility_readings" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "utility_settings_user_id_user_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "utility_settings" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "schemaTo": "auth", + "tableTo": "user", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "wishlist_user_id_user_id_fkey", + "entityType": "fks", + "schema": "money", + "table": "wishlist" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "cs", + "tableTo": "items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "daily_prices_item_id_items_id_fkey", + "entityType": "fks", + "schema": "cs", + "table": "daily_prices" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "cs", + "tableTo": "items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "history_fetches_item_id_items_id_fkey", + "entityType": "fks", + "schema": "cs", + "table": "history_fetches" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "cs", + "tableTo": "items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "item_dimensions_item_id_items_id_fkey", + "entityType": "fks", + "schema": "cs", + "table": "item_dimensions" + }, + { + "nameExplicit": false, + "columns": [ + "skin_id" + ], + "schemaTo": "cs", + "tableTo": "skins", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "items_skin_id_skins_id_fkey", + "entityType": "fks", + "schema": "cs", + "table": "items" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "cs", + "tableTo": "items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "price_observations_item_id_items_id_fkey", + "entityType": "fks", + "schema": "cs", + "table": "price_observations" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "cs", + "tableTo": "items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "price_windows_item_id_items_id_fkey", + "entityType": "fks", + "schema": "cs", + "table": "price_windows" + }, + { + "nameExplicit": false, + "columns": [ + "duplicate_of" + ], + "schemaTo": "house", + "tableTo": "listings", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "listings_duplicate_of_listings_id_fkey", + "entityType": "fks", + "schema": "house", + "table": "listings" + }, + { + "nameExplicit": false, + "columns": [ + "listing_id" + ], + "schemaTo": "house", + "tableTo": "listings", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "price_history_listing_id_listings_id_fkey", + "entityType": "fks", + "schema": "house", + "table": "price_history" + }, + { + "nameExplicit": false, + "columns": [ + "merged_into" + ], + "schemaTo": "books", + "tableTo": "works", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "deleted_works_merged_into_works_id_fkey", + "entityType": "fks", + "schema": "books", + "table": "deleted_works" + }, + { + "nameExplicit": false, + "columns": [ + "work_id" + ], + "schemaTo": "books", + "tableTo": "works", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "files_work_id_works_id_fkey", + "entityType": "fks", + "schema": "books", + "table": "files" + }, + { + "nameExplicit": false, + "columns": [ + "work_id" + ], + "schemaTo": "books", + "tableTo": "works", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notes_work_id_works_id_fkey", + "entityType": "fks", + "schema": "books", + "table": "notes" + }, + { + "nameExplicit": false, + "columns": [ + "file_id" + ], + "schemaTo": "books", + "tableTo": "files", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "notes_file_id_files_id_fkey", + "entityType": "fks", + "schema": "books", + "table": "notes" + }, + { + "nameExplicit": false, + "columns": [ + "work_id" + ], + "schemaTo": "books", + "tableTo": "works", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "progress_work_id_works_id_fkey", + "entityType": "fks", + "schema": "books", + "table": "progress" + }, + { + "nameExplicit": false, + "columns": [ + "file_id" + ], + "schemaTo": "books", + "tableTo": "files", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "progress_file_id_files_id_fkey", + "entityType": "fks", + "schema": "books", + "table": "progress" + }, + { + "nameExplicit": false, + "columns": [ + "work_id" + ], + "schemaTo": "books", + "tableTo": "works", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "sessions_work_id_works_id_fkey", + "entityType": "fks", + "schema": "books", + "table": "sessions" + }, + { + "nameExplicit": false, + "columns": [ + "file_id" + ], + "schemaTo": "books", + "tableTo": "files", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "sessions_file_id_files_id_fkey", + "entityType": "fks", + "schema": "books", + "table": "sessions" + }, + { + "nameExplicit": false, + "columns": [ + "shelf_id" + ], + "schemaTo": "books", + "tableTo": "shelves", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "shelf_works_shelf_id_shelves_id_fkey", + "entityType": "fks", + "schema": "books", + "table": "shelf_works" + }, + { + "nameExplicit": false, + "columns": [ + "work_id" + ], + "schemaTo": "books", + "tableTo": "works", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "shelf_works_work_id_works_id_fkey", + "entityType": "fks", + "schema": "books", + "table": "shelf_works" + }, + { + "nameExplicit": false, + "columns": [ + "task_id" + ], + "schemaTo": "tasks", + "tableTo": "tasks", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "activity_task_id_tasks_id_fkey", + "entityType": "fks", + "schema": "tasks", + "table": "activity" + }, + { + "nameExplicit": false, + "columns": [ + "goal_id" + ], + "schemaTo": "tasks", + "tableTo": "goals", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "activity_goal_id_goals_id_fkey", + "entityType": "fks", + "schema": "tasks", + "table": "activity" + }, + { + "nameExplicit": false, + "columns": [ + "area_id" + ], + "schemaTo": "tasks", + "tableTo": "areas", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "goals_area_id_areas_id_fkey", + "entityType": "fks", + "schema": "tasks", + "table": "goals" + }, + { + "nameExplicit": false, + "columns": [ + "area_id" + ], + "schemaTo": "tasks", + "tableTo": "areas", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "tasks_area_id_areas_id_fkey", + "entityType": "fks", + "schema": "tasks", + "table": "tasks" + }, + { + "nameExplicit": false, + "columns": [ + "goal_id" + ], + "schemaTo": "tasks", + "tableTo": "goals", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "tasks_goal_id_goals_id_fkey", + "entityType": "fks", + "schema": "tasks", + "table": "tasks" + }, + { + "nameExplicit": false, + "columns": [ + "parent_id" + ], + "schemaTo": "tasks", + "tableTo": "tasks", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "tasks_parent_id_tasks_id_fkey", + "entityType": "fks", + "schema": "tasks", + "table": "tasks" + }, + { + "nameExplicit": false, + "columns": [ + "parent_id" + ], + "schemaTo": "groceries", + "tableTo": "categories", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "categories_parent_id_categories_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "categories" + }, + { + "nameExplicit": false, + "columns": [ + "category_id" + ], + "schemaTo": "groceries", + "tableTo": "categories", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "groups_category_id_categories_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "groups" + }, + { + "nameExplicit": false, + "columns": [ + "merged_into_id" + ], + "schemaTo": "groceries", + "tableTo": "groups", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "groups_merged_into_id_groups_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "groups" + }, + { + "nameExplicit": false, + "columns": [ + "store_id" + ], + "schemaTo": "groceries", + "tableTo": "stores", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "import_runs_store_id_stores_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "import_runs" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "groceries", + "tableTo": "items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "item_prices_item_id_items_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "item_prices" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "groceries", + "tableTo": "items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "item_sizes_item_id_items_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "item_sizes" + }, + { + "nameExplicit": false, + "columns": [ + "store_id" + ], + "schemaTo": "groceries", + "tableTo": "stores", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "items_store_id_stores_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "items" + }, + { + "nameExplicit": false, + "columns": [ + "category_id" + ], + "schemaTo": "groceries", + "tableTo": "categories", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "items_category_id_categories_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "items" + }, + { + "nameExplicit": false, + "columns": [ + "group_id" + ], + "schemaTo": "groceries", + "tableTo": "groups", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "items_group_id_groups_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "items" + }, + { + "nameExplicit": false, + "columns": [ + "store_id" + ], + "schemaTo": "groceries", + "tableTo": "stores", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "manual_prices_store_id_stores_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "manual_prices" + }, + { + "nameExplicit": false, + "columns": [ + "group_id" + ], + "schemaTo": "groceries", + "tableTo": "groups", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "manual_prices_group_id_groups_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "manual_prices" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "groceries", + "tableTo": "items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "manual_prices_item_id_items_id_fkey", + "entityType": "fks", + "schema": "groceries", + "table": "manual_prices" + }, + { + "nameExplicit": false, + "columns": [ + "model_id" + ], + "schemaTo": "cars", + "tableTo": "models", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "activity_model_id_models_id_fkey", + "entityType": "fks", + "schema": "cars", + "table": "activity" + }, + { + "nameExplicit": false, + "columns": [ + "brand_id" + ], + "schemaTo": "cars", + "tableTo": "brands", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "models_brand_id_brands_id_fkey", + "entityType": "fks", + "schema": "cars", + "table": "models" + }, + { + "nameExplicit": false, + "columns": [ + "model_id" + ], + "schemaTo": "cars", + "tableTo": "models", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "photos_model_id_models_id_fkey", + "entityType": "fks", + "schema": "cars", + "table": "photos" + }, + { + "nameExplicit": false, + "columns": [ + "model_id" + ], + "schemaTo": "cars", + "tableTo": "models", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "seen_model_id_models_id_fkey", + "entityType": "fks", + "schema": "cars", + "table": "seen" + }, + { + "nameExplicit": false, + "columns": [ + "model_id" + ], + "schemaTo": "cars", + "tableTo": "models", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "variants_model_id_models_id_fkey", + "entityType": "fks", + "schema": "cars", + "table": "variants" + }, + { + "nameExplicit": false, + "columns": [ + "type_id" + ], + "schemaTo": "planes", + "tableTo": "types", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "activity_type_id_types_id_fkey", + "entityType": "fks", + "schema": "planes", + "table": "activity" + }, + { + "nameExplicit": false, + "columns": [ + "type_id" + ], + "schemaTo": "planes", + "tableTo": "types", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "photos_type_id_types_id_fkey", + "entityType": "fks", + "schema": "planes", + "table": "photos" + }, + { + "nameExplicit": false, + "columns": [ + "type_id" + ], + "schemaTo": "planes", + "tableTo": "types", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "seen_type_id_types_id_fkey", + "entityType": "fks", + "schema": "planes", + "table": "seen" + }, + { + "nameExplicit": false, + "columns": [ + "maker_id" + ], + "schemaTo": "planes", + "tableTo": "makers", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "types_maker_id_makers_id_fkey", + "entityType": "fks", + "schema": "planes", + "table": "types" + }, + { + "nameExplicit": false, + "columns": [ + "family_id" + ], + "schemaTo": "planes", + "tableTo": "types", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "types_family_id_types_id_fkey", + "entityType": "fks", + "schema": "planes", + "table": "types" + }, + { + "nameExplicit": false, + "columns": [ + "species_id" + ], + "schemaTo": "wildlife", + "tableTo": "species", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "activity_species_id_species_id_fkey", + "entityType": "fks", + "schema": "wildlife", + "table": "activity" + }, + { + "nameExplicit": false, + "columns": [ + "species_id" + ], + "schemaTo": "wildlife", + "tableTo": "species", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "photos_species_id_species_id_fkey", + "entityType": "fks", + "schema": "wildlife", + "table": "photos" + }, + { + "nameExplicit": false, + "columns": [ + "species_id" + ], + "schemaTo": "wildlife", + "tableTo": "species", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "seen_species_id_species_id_fkey", + "entityType": "fks", + "schema": "wildlife", + "table": "seen" + }, + { + "nameExplicit": false, + "columns": [ + "group_id" + ], + "schemaTo": "wildlife", + "tableTo": "groups", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "species_group_id_groups_id_fkey", + "entityType": "fks", + "schema": "wildlife", + "table": "species" + }, + { + "nameExplicit": false, + "columns": [ + "type_id" + ], + "schemaTo": "trains", + "tableTo": "types", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "activity_type_id_types_id_fkey", + "entityType": "fks", + "schema": "trains", + "table": "activity" + }, + { + "nameExplicit": false, + "columns": [ + "type_id" + ], + "schemaTo": "trains", + "tableTo": "types", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "photos_type_id_types_id_fkey", + "entityType": "fks", + "schema": "trains", + "table": "photos" + }, + { + "nameExplicit": false, + "columns": [ + "type_id" + ], + "schemaTo": "trains", + "tableTo": "types", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "seen_type_id_types_id_fkey", + "entityType": "fks", + "schema": "trains", + "table": "seen" + }, + { + "nameExplicit": false, + "columns": [ + "type_id" + ], + "schemaTo": "trains", + "tableTo": "types", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "type_operators_type_id_types_id_fkey", + "entityType": "fks", + "schema": "trains", + "table": "type_operators" + }, + { + "nameExplicit": false, + "columns": [ + "operator_id" + ], + "schemaTo": "trains", + "tableTo": "operators", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "type_operators_operator_id_operators_id_fkey", + "entityType": "fks", + "schema": "trains", + "table": "type_operators" + }, + { + "nameExplicit": false, + "columns": [ + "maker_id" + ], + "schemaTo": "trains", + "tableTo": "makers", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "types_maker_id_makers_id_fkey", + "entityType": "fks", + "schema": "trains", + "table": "types" + }, + { + "nameExplicit": false, + "columns": [ + "family_id" + ], + "schemaTo": "trains", + "tableTo": "types", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "types_family_id_types_id_fkey", + "entityType": "fks", + "schema": "trains", + "table": "types" + }, + { + "nameExplicit": false, + "columns": [ + "artist_id" + ], + "schemaTo": "music", + "tableTo": "artists", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "albums_artist_id_artists_id_fkey", + "entityType": "fks", + "schema": "music", + "table": "albums" + }, + { + "nameExplicit": false, + "columns": [ + "artist_id" + ], + "schemaTo": "music", + "tableTo": "artists", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "artist_tag_fetch_artist_id_artists_id_fkey", + "entityType": "fks", + "schema": "music", + "table": "artist_tag_fetch" + }, + { + "nameExplicit": false, + "columns": [ + "artist_id" + ], + "schemaTo": "music", + "tableTo": "artists", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "artist_tags_artist_id_artists_id_fkey", + "entityType": "fks", + "schema": "music", + "table": "artist_tags" + }, + { + "nameExplicit": false, + "columns": [ + "track_id" + ], + "schemaTo": "music", + "tableTo": "tracks", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "now_playing_track_id_tracks_id_fkey", + "entityType": "fks", + "schema": "music", + "table": "now_playing" + }, + { + "nameExplicit": false, + "columns": [ + "track_id" + ], + "schemaTo": "music", + "tableTo": "tracks", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "plays_track_id_tracks_id_fkey", + "entityType": "fks", + "schema": "music", + "table": "plays" + }, + { + "nameExplicit": false, + "columns": [ + "track_id" + ], + "schemaTo": "music", + "tableTo": "tracks", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "track_artists_track_id_tracks_id_fkey", + "entityType": "fks", + "schema": "music", + "table": "track_artists" + }, + { + "nameExplicit": false, + "columns": [ + "artist_id" + ], + "schemaTo": "music", + "tableTo": "artists", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "track_artists_artist_id_artists_id_fkey", + "entityType": "fks", + "schema": "music", + "table": "track_artists" + }, + { + "nameExplicit": false, + "columns": [ + "album_id" + ], + "schemaTo": "music", + "tableTo": "albums", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "tracks_album_id_albums_id_fkey", + "entityType": "fks", + "schema": "music", + "table": "tracks" + }, + { + "nameExplicit": false, + "columns": [ + "artist_id" + ], + "schemaTo": "music", + "tableTo": "artists", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "tracks_artist_id_artists_id_fkey", + "entityType": "fks", + "schema": "music", + "table": "tracks" + }, + { + "nameExplicit": false, + "columns": [ + "device_id" + ], + "schemaTo": "hardware", + "tableTo": "devices", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "components_device_id_devices_id_fkey", + "entityType": "fks", + "schema": "hardware", + "table": "components" + }, + { + "nameExplicit": false, + "columns": [ + "replaces_id" + ], + "schemaTo": "hardware", + "tableTo": "components", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "components_replaces_id_components_id_fkey", + "entityType": "fks", + "schema": "hardware", + "table": "components" + }, + { + "nameExplicit": false, + "columns": [ + "mouse_id" + ], + "schemaTo": "hardware", + "tableTo": "components", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "sensitivities_mouse_id_components_id_fkey", + "entityType": "fks", + "schema": "hardware", + "table": "sensitivities" + }, + { + "nameExplicit": false, + "columns": [ + "source_id" + ], + "schemaTo": "stats", + "tableTo": "source", + "columnsTo": [ + "source_id" + ], + "onUpdate": "NO ACTION", + "onDelete": "NO ACTION", + "name": "fetch_run_source_id_source_source_id_fkey", + "entityType": "fks", + "schema": "stats", + "table": "fetch_run" + }, + { + "nameExplicit": false, + "columns": [ + "series_id" + ], + "schemaTo": "stats", + "tableTo": "series", + "columnsTo": [ + "series_id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "obs_series_id_series_series_id_fkey", + "entityType": "fks", + "schema": "stats", + "table": "obs" + }, + { + "nameExplicit": false, + "columns": [ + "source_id" + ], + "schemaTo": "stats", + "tableTo": "source", + "columnsTo": [ + "source_id" + ], + "onUpdate": "NO ACTION", + "onDelete": "NO ACTION", + "name": "series_source_id_source_source_id_fkey", + "entityType": "fks", + "schema": "stats", + "table": "series" + }, + { + "nameExplicit": false, + "columns": [ + "region_code" + ], + "schemaTo": "stats", + "tableTo": "region", + "columnsTo": [ + "region_code" + ], + "onUpdate": "NO ACTION", + "onDelete": "NO ACTION", + "name": "series_region_code_region_region_code_fkey", + "entityType": "fks", + "schema": "stats", + "table": "series" + }, + { + "nameExplicit": false, + "columns": [ + "match_id" + ], + "schemaTo": "games", + "tableTo": "pubg_matches", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pubg_markers_match_id_pubg_matches_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pubg_markers" + }, + { + "nameExplicit": false, + "columns": [ + "room_id" + ], + "schemaTo": "games", + "tableTo": "pubg_rooms", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pubg_matches_room_id_pubg_rooms_id_fkey", + "entityType": "fks", + "schema": "games", + "table": "pubg_matches" + }, + { + "nameExplicit": false, + "columns": [ + "provider_id" + ], + "schemaTo": "ai", + "tableTo": "provider_setup_providers", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "CASCADE", + "name": "provider_setup_entries_JxI1C1Zk458j_fkey", + "entityType": "fks", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "nameExplicit": false, + "columns": [ + "title_id" + ], + "schemaTo": "movies", + "tableTo": "titles", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "episodes_title_id_titles_id_fkey", + "entityType": "fks", + "schema": "movies", + "table": "episodes" + }, + { + "nameExplicit": false, + "columns": [ + "title_id" + ], + "schemaTo": "movies", + "tableTo": "titles", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "plays_title_id_titles_id_fkey", + "entityType": "fks", + "schema": "movies", + "table": "plays" + }, + { + "nameExplicit": false, + "columns": [ + "episode_id" + ], + "schemaTo": "movies", + "tableTo": "episodes", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "plays_episode_id_episodes_id_fkey", + "entityType": "fks", + "schema": "movies", + "table": "plays" + }, + { + "nameExplicit": false, + "columns": [ + "task_id" + ], + "schemaTo": "worldtodo", + "tableTo": "tasks", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "NO ACTION", + "name": "change_requests_task_id_tasks_id_fkey", + "entityType": "fks", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "nameExplicit": false, + "columns": [ + "category" + ], + "schemaTo": "worldtodo", + "tableTo": "categories", + "columnsTo": [ + "slug" + ], + "onUpdate": "NO ACTION", + "onDelete": "NO ACTION", + "name": "tasks_category_categories_slug_fkey", + "entityType": "fks", + "schema": "worldtodo", + "table": "tasks" + }, + { + "nameExplicit": false, + "columns": [ + "src_path" + ], + "schemaTo": "notes", + "tableTo": "files", + "columnsTo": [ + "path" + ], + "onUpdate": "CASCADE", + "onDelete": "CASCADE", + "name": "links_src_path_files_path_fkey", + "entityType": "fks", + "schema": "notes", + "table": "links" + }, + { + "nameExplicit": false, + "columns": [ + "chapter_id" + ], + "schemaTo": "math", + "tableTo": "chapters", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "CASCADE", + "name": "activity_chapter_id_chapters_id_fkey", + "entityType": "fks", + "schema": "math", + "table": "activity" + }, + { + "nameExplicit": false, + "columns": [ + "section_id" + ], + "schemaTo": "math", + "tableTo": "sections", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "SET NULL", + "name": "activity_section_id_sections_id_fkey", + "entityType": "fks", + "schema": "math", + "table": "activity" + }, + { + "nameExplicit": false, + "columns": [ + "part_id" + ], + "schemaTo": "math", + "tableTo": "parts", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "CASCADE", + "name": "chapters_part_id_parts_id_fkey", + "entityType": "fks", + "schema": "math", + "table": "chapters" + }, + { + "nameExplicit": false, + "columns": [ + "chapter_id" + ], + "schemaTo": "math", + "tableTo": "chapters", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "CASCADE", + "name": "sections_chapter_id_chapters_id_fkey", + "entityType": "fks", + "schema": "math", + "table": "sections" + }, + { + "nameExplicit": false, + "columns": [ + "parent_id" + ], + "schemaTo": "plant", + "tableTo": "entries", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "SET NULL", + "name": "entries_parent_id_entries_id_fkey", + "entityType": "fks", + "schema": "plant", + "table": "entries" + }, + { + "nameExplicit": false, + "columns": [ + "from_id" + ], + "schemaTo": "plant", + "tableTo": "entries", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "CASCADE", + "name": "links_from_id_entries_id_fkey", + "entityType": "fks", + "schema": "plant", + "table": "links" + }, + { + "nameExplicit": false, + "columns": [ + "to_id" + ], + "schemaTo": "plant", + "tableTo": "entries", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "CASCADE", + "name": "links_to_id_entries_id_fkey", + "entityType": "fks", + "schema": "plant", + "table": "links" + }, + { + "nameExplicit": false, + "columns": [ + "from_id" + ], + "schemaTo": "plant", + "tableTo": "entries", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "CASCADE", + "name": "pending_from_id_entries_id_fkey", + "entityType": "fks", + "schema": "plant", + "table": "pending" + }, + { + "nameExplicit": false, + "columns": [ + "frequency_id" + ], + "schemaTo": "radio", + "tableTo": "frequencies", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "CASCADE", + "name": "channels_frequency_id_frequencies_id_fkey", + "entityType": "fks", + "schema": "radio", + "table": "channels" + }, + { + "nameExplicit": false, + "columns": [ + "frequency_id" + ], + "schemaTo": "radio", + "tableTo": "frequencies", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "SET NULL", + "name": "log_frequency_id_frequencies_id_fkey", + "entityType": "fks", + "schema": "radio", + "table": "log" + }, + { + "nameExplicit": false, + "columns": [ + "frequency_id" + ], + "schemaTo": "radio", + "tableTo": "frequencies", + "columnsTo": [ + "id" + ], + "onUpdate": "CASCADE", + "onDelete": "SET NULL", + "name": "nets_frequency_id_frequencies_id_fkey", + "entityType": "fks", + "schema": "radio", + "table": "nets" + }, + { + "columns": [ + "item_id", + "stream_id", + "day" + ], + "nameExplicit": true, + "name": "daily_prices_pkey", + "entityType": "pks", + "schema": "cs", + "table": "daily_prices" + }, + { + "columns": [ + "item_id", + "source" + ], + "nameExplicit": true, + "name": "history_fetches_pkey", + "entityType": "pks", + "schema": "cs", + "table": "history_fetches" + }, + { + "columns": [ + "item_id", + "key" + ], + "nameExplicit": true, + "name": "item_dimensions_pkey", + "entityType": "pks", + "schema": "cs", + "table": "item_dimensions" + }, + { + "columns": [ + "source", + "currency", + "kind" + ], + "nameExplicit": true, + "name": "price_streams_pkey", + "entityType": "pks", + "schema": "cs", + "table": "price_streams" + }, + { + "columns": [ + "item_id", + "source", + "span" + ], + "nameExplicit": true, + "name": "price_windows_pkey", + "entityType": "pks", + "schema": "cs", + "table": "price_windows" + }, + { + "columns": [ + "listing_id", + "observed_at" + ], + "nameExplicit": true, + "name": "price_history_pkey", + "entityType": "pks", + "schema": "house", + "table": "price_history" + }, + { + "columns": [ + "shelf_id", + "work_id" + ], + "nameExplicit": false, + "name": "shelf_works_pkey", + "entityType": "pks", + "schema": "books", + "table": "shelf_works" + }, + { + "columns": [ + "area", + "model_id" + ], + "nameExplicit": false, + "name": "activity_pkey", + "entityType": "pks", + "schema": "cars", + "table": "activity" + }, + { + "columns": [ + "area", + "type_id" + ], + "nameExplicit": false, + "name": "activity_pkey", + "entityType": "pks", + "schema": "planes", + "table": "activity" + }, + { + "columns": [ + "area", + "species_id" + ], + "nameExplicit": false, + "name": "activity_pkey", + "entityType": "pks", + "schema": "wildlife", + "table": "activity" + }, + { + "columns": [ + "area", + "type_id" + ], + "nameExplicit": false, + "name": "activity_pkey", + "entityType": "pks", + "schema": "trains", + "table": "activity" + }, + { + "columns": [ + "type_id", + "operator_id" + ], + "nameExplicit": false, + "name": "type_operators_pkey", + "entityType": "pks", + "schema": "trains", + "table": "type_operators" + }, + { + "columns": [ + "artist_id", + "tag" + ], + "nameExplicit": false, + "name": "artist_tags_pkey", + "entityType": "pks", + "schema": "music", + "table": "artist_tags" + }, + { + "columns": [ + "track_id", + "artist_id" + ], + "nameExplicit": false, + "name": "track_artists_pkey", + "entityType": "pks", + "schema": "music", + "table": "track_artists" + }, + { + "columns": [ + "ref_area", + "freq", + "period" + ], + "nameExplicit": false, + "name": "bis_policy_rate_pkey", + "entityType": "pks", + "schema": "stats", + "table": "bis_policy_rate" + }, + { + "columns": [ + "table_id", + "dimension", + "code" + ], + "nameExplicit": false, + "name": "cbs_code_pkey", + "entityType": "pks", + "schema": "stats", + "table": "cbs_code" + }, + { + "columns": [ + "table_id", + "obs_id" + ], + "nameExplicit": false, + "name": "cbs_obs_pkey", + "entityType": "pks", + "schema": "stats", + "table": "cbs_obs" + }, + { + "columns": [ + "period", + "item" + ], + "nameExplicit": false, + "name": "cw_cbcs_bop_pkey", + "entityType": "pks", + "schema": "stats", + "table": "cw_cbcs_bop" + }, + { + "columns": [ + "year", + "isic" + ], + "nameExplicit": false, + "name": "cw_cbs_gdp_industry_pkey", + "entityType": "pks", + "schema": "stats", + "table": "cw_cbs_gdp_industry" + }, + { + "columns": [ + "year", + "item_code" + ], + "nameExplicit": false, + "name": "cw_cbs_gov_finance_pkey", + "entityType": "pks", + "schema": "stats", + "table": "cw_cbs_gov_finance" + }, + { + "columns": [ + "year", + "sex", + "age_group", + "measure" + ], + "nameExplicit": false, + "name": "cw_cbs_lfs_pkey", + "entityType": "pks", + "schema": "stats", + "table": "cw_cbs_lfs" + }, + { + "columns": [ + "year", + "sex", + "age_group", + "kind" + ], + "nameExplicit": false, + "name": "cw_cbs_population_pkey", + "entityType": "pks", + "schema": "stats", + "table": "cw_cbs_population" + }, + { + "columns": [ + "period", + "measure", + "market" + ], + "nameExplicit": false, + "name": "cw_cbs_tourism_pkey", + "entityType": "pks", + "schema": "stats", + "table": "cw_cbs_tourism" + }, + { + "columns": [ + "wave", + "topic", + "item", + "country" + ], + "nameExplicit": false, + "name": "eb_item_pkey", + "entityType": "pks", + "schema": "stats", + "table": "eb_item" + }, + { + "columns": [ + "country", + "neighbour", + "ts" + ], + "nameExplicit": false, + "name": "ec_crossborder_pkey", + "entityType": "pks", + "schema": "stats", + "table": "ec_crossborder" + }, + { + "columns": [ + "bzn", + "ts" + ], + "nameExplicit": false, + "name": "ec_dayahead_price_pkey", + "entityType": "pks", + "schema": "stats", + "table": "ec_dayahead_price" + }, + { + "columns": [ + "election_id", + "level", + "area_code", + "party" + ], + "nameExplicit": false, + "name": "elec_result_pkey", + "entityType": "pks", + "schema": "stats", + "table": "elec_result" + }, + { + "columns": [ + "election_id", + "level", + "area_code" + ], + "nameExplicit": false, + "name": "elec_turnout_pkey", + "entityType": "pks", + "schema": "stats", + "table": "elec_turnout" + }, + { + "columns": [ + "snapshot", + "area", + "label" + ], + "nameExplicit": false, + "name": "ep_label_agg_pkey", + "entityType": "pks", + "schema": "stats", + "table": "ep_label_agg" + }, + { + "columns": [ + "dataset", + "key", + "period" + ], + "nameExplicit": false, + "name": "eurostat_obs_pkey", + "entityType": "pks", + "schema": "stats", + "table": "eurostat_obs" + }, + { + "columns": [ + "series_id", + "period" + ], + "nameExplicit": false, + "name": "fred_obs_pkey", + "entityType": "pks", + "schema": "stats", + "table": "fred_obs" + }, + { + "columns": [ + "date", + "country", + "theme" + ], + "nameExplicit": false, + "name": "gdelt_theme_vol_pkey", + "entityType": "pks", + "schema": "stats", + "table": "gdelt_theme_vol" + }, + { + "columns": [ + "geo", + "date", + "query" + ], + "nameExplicit": false, + "name": "gt_trending_pkey", + "entityType": "pks", + "schema": "stats", + "table": "gt_trending" + }, + { + "columns": [ + "place", + "slug" + ], + "nameExplicit": false, + "name": "hist_event_pkey", + "entityType": "pks", + "schema": "stats", + "table": "hist_event" + }, + { + "columns": [ + "place", + "slug" + ], + "nameExplicit": false, + "name": "hist_fact_pkey", + "entityType": "pks", + "schema": "stats", + "table": "hist_fact" + }, + { + "columns": [ + "place", + "date", + "name" + ], + "nameExplicit": false, + "name": "hist_holiday_pkey", + "entityType": "pks", + "schema": "stats", + "table": "hist_holiday" + }, + { + "columns": [ + "office_qid", + "person_qid", + "start_date" + ], + "nameExplicit": false, + "name": "hist_office_pkey", + "entityType": "pks", + "schema": "stats", + "table": "hist_office" + }, + { + "columns": [ + "place", + "person_qid" + ], + "nameExplicit": false, + "name": "hist_person_pkey", + "entityType": "pks", + "schema": "stats", + "table": "hist_person" + }, + { + "columns": [ + "vintage", + "indicator", + "country_iso3", + "year" + ], + "nameExplicit": false, + "name": "imf_weo_pkey", + "entityType": "pks", + "schema": "stats", + "table": "imf_weo" + }, + { + "columns": [ + "series_id", + "period" + ], + "nameExplicit": false, + "name": "obs_pkey", + "entityType": "pks", + "schema": "stats", + "table": "obs" + }, + { + "columns": [ + "series", + "poll_key", + "option" + ], + "nameExplicit": false, + "name": "op_poll_pkey", + "entityType": "pks", + "schema": "stats", + "table": "op_poll" + }, + { + "columns": [ + "page", + "revid" + ], + "nameExplicit": false, + "name": "op_wiki_snapshot_pkey", + "entityType": "pks", + "schema": "stats", + "table": "op_wiki_snapshot" + }, + { + "columns": [ + "country", + "year" + ], + "nameExplicit": false, + "name": "owid_energy_pkey", + "entityType": "pks", + "schema": "stats", + "table": "owid_energy" + }, + { + "columns": [ + "entity", + "year" + ], + "nameExplicit": false, + "name": "owid_maddison_pkey", + "entityType": "pks", + "schema": "stats", + "table": "owid_maddison" + }, + { + "columns": [ + "year", + "phase", + "row_key" + ], + "nameExplicit": false, + "name": "rf_budget_table_pkey", + "entityType": "pks", + "schema": "stats", + "table": "rf_budget_table" + }, + { + "columns": [ + "toptier_code", + "fiscal_year" + ], + "nameExplicit": false, + "name": "usas_agency_fy_pkey", + "entityType": "pks", + "schema": "stats", + "table": "usas_agency_fy" + }, + { + "columns": [ + "record_date", + "classification_id" + ], + "nameExplicit": false, + "name": "ust_mts_outlays_pkey", + "entityType": "pks", + "schema": "stats", + "table": "ust_mts_outlays" + }, + { + "columns": [ + "record_date", + "classification_id" + ], + "nameExplicit": false, + "name": "ust_mts_receipts_pkey", + "entityType": "pks", + "schema": "stats", + "table": "ust_mts_receipts" + }, + { + "columns": [ + "indicator_id", + "country_iso3", + "year" + ], + "nameExplicit": false, + "name": "wb_indicator_pkey", + "entityType": "pks", + "schema": "stats", + "table": "wb_indicator" + }, + { + "columns": [ + "year", + "country" + ], + "nameExplicit": false, + "name": "whr_score_pkey", + "entityType": "pks", + "schema": "stats", + "table": "whr_score" + }, + { + "columns": [ + "iso3", + "wave" + ], + "nameExplicit": false, + "name": "wo_cultural_map_pkey", + "entityType": "pks", + "schema": "stats", + "table": "wo_cultural_map" + }, + { + "columns": [ + "party_id", + "year", + "source", + "dim" + ], + "nameExplicit": false, + "name": "wo_party_position_pkey", + "entityType": "pks", + "schema": "stats", + "table": "wo_party_position" + }, + { + "columns": [ + "iso3", + "wave", + "item_code", + "stat" + ], + "nameExplicit": false, + "name": "wo_value_score_pkey", + "entityType": "pks", + "schema": "stats", + "table": "wo_value_score" + }, + { + "columns": [ + "src_path", + "seq" + ], + "nameExplicit": false, + "name": "links_pkey", + "entityType": "pks", + "schema": "notes", + "table": "links" + }, + { + "columns": [ + "kind", + "ref_id", + "at" + ], + "nameExplicit": false, + "name": "reminders_pkey", + "entityType": "pks", + "schema": "radio", + "table": "reminders" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "account_pkey", + "schema": "auth", + "table": "account", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "session_pkey", + "schema": "auth", + "table": "session", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "user_pkey", + "schema": "auth", + "table": "user", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "verification_pkey", + "schema": "auth", + "table": "verification", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "blog_articles_pkey", + "schema": "site", + "table": "blog_articles", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tasks_pkey", + "schema": "site", + "table": "tasks", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "task_topics_pkey", + "schema": "site", + "table": "task_topics", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "topics_pkey", + "schema": "site", + "table": "topics", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "catch_em_all_settings_pkey", + "schema": "games", + "table": "catch_em_all_settings", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_games_pkey", + "schema": "ref", + "table": "pokemon_games", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_pkey", + "schema": "ref", + "table": "pokemon", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_encounters_pkey", + "schema": "ref", + "table": "pokemon_encounters", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_evolutions_pkey", + "schema": "ref", + "table": "pokemon_evolutions", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_game_entries_pkey", + "schema": "ref", + "table": "pokemon_game_entries", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_locations_pkey", + "schema": "ref", + "table": "pokemon_locations", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "catch_em_all_entries_pkey", + "schema": "games", + "table": "catch_em_all_entries", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "catch_em_all_games_pkey", + "schema": "games", + "table": "catch_em_all_games", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tracker_games_pkey", + "schema": "ref", + "table": "tracker_games", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tracker_items_pkey", + "schema": "ref", + "table": "tracker_items", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tracker_progress_pkey", + "schema": "games", + "table": "tracker_progress", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "library_pkey", + "schema": "games", + "table": "library", + "entityType": "pks" + }, + { + "columns": [ + "code" + ], + "nameExplicit": false, + "name": "cs2_share_codes_pkey", + "schema": "games", + "table": "cs2_share_codes", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "accounts_pkey", + "schema": "games", + "table": "accounts", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "match_players_pkey", + "schema": "games", + "table": "match_players", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "matches_pkey", + "schema": "games", + "table": "matches", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "seasons_pkey", + "schema": "games", + "table": "seasons", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "snapshots_pkey", + "schema": "games", + "table": "snapshots", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "osu_entries_pkey", + "schema": "games", + "table": "osu_entries", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_catches_pkey", + "schema": "games", + "table": "pokemon_catches", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_dex_numbers_pkey", + "schema": "ref", + "table": "pokemon_dex_numbers", + "entityType": "pks" + }, + { + "columns": [ + "game_id" + ], + "nameExplicit": false, + "name": "pokemon_game_research_pkey", + "schema": "ref", + "table": "pokemon_game_research", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_journeys_pkey", + "schema": "games", + "table": "pokemon_journeys", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_learnsets_pkey", + "schema": "ref", + "table": "pokemon_learnsets", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_milestones_pkey", + "schema": "games", + "table": "pokemon_milestones", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_moves_pkey", + "schema": "ref", + "table": "pokemon_moves", + "entityType": "pks" + }, + { + "columns": [ + "pokemon_id" + ], + "nameExplicit": false, + "name": "pokemon_research_pkey", + "schema": "ref", + "table": "pokemon_research", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pokemon_seen_pkey", + "schema": "games", + "table": "pokemon_seen", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tracker_challenge_progress_pkey", + "schema": "games", + "table": "tracker_challenge_progress", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tracker_challenges_pkey", + "schema": "ref", + "table": "tracker_challenges", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tracker_ranks_pkey", + "schema": "games", + "table": "tracker_ranks", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tracker_weapon_ranks_pkey", + "schema": "games", + "table": "tracker_weapon_ranks", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "animals_pkey", + "schema": "animaldex", + "table": "animals", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "sighting_photos_pkey", + "schema": "animaldex", + "table": "sighting_photos", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "sightings_pkey", + "schema": "animaldex", + "table": "sightings", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "columns_pkey", + "schema": "meta", + "table": "columns", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "edit_log_pkey", + "schema": "meta", + "table": "edit_log", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tables_pkey", + "schema": "meta", + "table": "tables", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "accounts_pkey", + "schema": "money", + "table": "accounts", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "bank_sessions_pkey", + "schema": "money", + "table": "bank_sessions", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "forecasts_pkey", + "schema": "money", + "table": "forecasts", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "insurances_pkey", + "schema": "money", + "table": "insurances", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "projection_settings_pkey", + "schema": "money", + "table": "projection_settings", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "recurring_pkey", + "schema": "money", + "table": "recurring", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "transactions_pkey", + "schema": "money", + "table": "transactions", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "utility_readings_pkey", + "schema": "money", + "table": "utility_readings", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "utility_settings_pkey", + "schema": "money", + "table": "utility_settings", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "wishlist_pkey", + "schema": "money", + "table": "wishlist", + "entityType": "pks" + }, + { + "columns": [ + "day" + ], + "nameExplicit": false, + "name": "fx_rates_pkey", + "schema": "cs", + "table": "fx_rates", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "items_pkey", + "schema": "cs", + "table": "items", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "price_observations_pkey", + "schema": "cs", + "table": "price_observations", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "skins_pkey", + "schema": "cs", + "table": "skins", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "alert_rules_pkey", + "schema": "house", + "table": "alert_rules", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "listings_pkey", + "schema": "house", + "table": "listings", + "entityType": "pks" + }, + { + "columns": [ + "search_url" + ], + "nameExplicit": false, + "name": "searches_pkey", + "schema": "house", + "table": "searches", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "worker_runs_pkey", + "schema": "house", + "table": "worker_runs", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "appointments_pkey", + "schema": "health", + "table": "appointments", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "body_measurements_pkey", + "schema": "health", + "table": "body_measurements", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "medications_pkey", + "schema": "health", + "table": "medications", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "nutrition_daily_pkey", + "schema": "health", + "table": "nutrition_daily", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "sleep_pkey", + "schema": "health", + "table": "sleep", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "vaccinations_pkey", + "schema": "health", + "table": "vaccinations", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "workouts_pkey", + "schema": "health", + "table": "workouts", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "deleted_works_pkey", + "schema": "books", + "table": "deleted_works", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "files_pkey", + "schema": "books", + "table": "files", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "notes_pkey", + "schema": "books", + "table": "notes", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "progress_pkey", + "schema": "books", + "table": "progress", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "sessions_pkey", + "schema": "books", + "table": "sessions", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "shelves_pkey", + "schema": "books", + "table": "shelves", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "works_pkey", + "schema": "books", + "table": "works", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "activity_pkey", + "schema": "tasks", + "table": "activity", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "areas_pkey", + "schema": "tasks", + "table": "areas", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "goals_pkey", + "schema": "tasks", + "table": "goals", + "entityType": "pks" + }, + { + "columns": [ + "key" + ], + "nameExplicit": false, + "name": "metric_sources_pkey", + "schema": "tasks", + "table": "metric_sources", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tasks_pkey", + "schema": "tasks", + "table": "tasks", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "categories_pkey", + "schema": "groceries", + "table": "categories", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "groups_pkey", + "schema": "groceries", + "table": "groups", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "import_runs_pkey", + "schema": "groceries", + "table": "import_runs", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "item_prices_pkey", + "schema": "groceries", + "table": "item_prices", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "item_sizes_pkey", + "schema": "groceries", + "table": "item_sizes", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "items_pkey", + "schema": "groceries", + "table": "items", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "manual_prices_pkey", + "schema": "groceries", + "table": "manual_prices", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "stats_snapshots_pkey", + "schema": "groceries", + "table": "stats_snapshots", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "stores_pkey", + "schema": "groceries", + "table": "stores", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "synonyms_pkey", + "schema": "groceries", + "table": "synonyms", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "links_pkey", + "schema": "home", + "table": "links", + "entityType": "pks" + }, + { + "columns": [ + "key" + ], + "nameExplicit": false, + "name": "snapshots_pkey", + "schema": "home", + "table": "snapshots", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "brands_pkey", + "schema": "cars", + "table": "brands", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "models_pkey", + "schema": "cars", + "table": "models", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "photos_pkey", + "schema": "cars", + "table": "photos", + "entityType": "pks" + }, + { + "columns": [ + "model_id" + ], + "nameExplicit": false, + "name": "seen_pkey", + "schema": "cars", + "table": "seen", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "variants_pkey", + "schema": "cars", + "table": "variants", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "makers_pkey", + "schema": "planes", + "table": "makers", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "photos_pkey", + "schema": "planes", + "table": "photos", + "entityType": "pks" + }, + { + "columns": [ + "type_id" + ], + "nameExplicit": false, + "name": "seen_pkey", + "schema": "planes", + "table": "seen", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "types_pkey", + "schema": "planes", + "table": "types", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "groups_pkey", + "schema": "wildlife", + "table": "groups", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "photos_pkey", + "schema": "wildlife", + "table": "photos", + "entityType": "pks" + }, + { + "columns": [ + "species_id" + ], + "nameExplicit": false, + "name": "seen_pkey", + "schema": "wildlife", + "table": "seen", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "species_pkey", + "schema": "wildlife", + "table": "species", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "makers_pkey", + "schema": "trains", + "table": "makers", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "operators_pkey", + "schema": "trains", + "table": "operators", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "photos_pkey", + "schema": "trains", + "table": "photos", + "entityType": "pks" + }, + { + "columns": [ + "type_id" + ], + "nameExplicit": false, + "name": "seen_pkey", + "schema": "trains", + "table": "seen", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "types_pkey", + "schema": "trains", + "table": "types", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "albums_pkey", + "schema": "music", + "table": "albums", + "entityType": "pks" + }, + { + "columns": [ + "artist_id" + ], + "nameExplicit": false, + "name": "artist_tag_fetch_pkey", + "schema": "music", + "table": "artist_tag_fetch", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "artists_pkey", + "schema": "music", + "table": "artists", + "entityType": "pks" + }, + { + "columns": [ + "key" + ], + "nameExplicit": false, + "name": "import_state_pkey", + "schema": "music", + "table": "import_state", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "now_playing_pkey", + "schema": "music", + "table": "now_playing", + "entityType": "pks" + }, + { + "columns": [ + "key" + ], + "nameExplicit": false, + "name": "osu_match_cache_pkey", + "schema": "music", + "table": "osu_match_cache", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "plays_pkey", + "schema": "music", + "table": "plays", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "spotify_auth_pkey", + "schema": "music", + "table": "spotify_auth", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tracks_pkey", + "schema": "music", + "table": "tracks", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "components_pkey", + "schema": "hardware", + "table": "components", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "devices_pkey", + "schema": "hardware", + "table": "devices", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "sensitivities_pkey", + "schema": "hardware", + "table": "sensitivities", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "setup_photos_pkey", + "schema": "hardware", + "table": "setup_photos", + "entityType": "pks" + }, + { + "columns": [ + "kind" + ], + "nameExplicit": false, + "name": "identity_pkey", + "schema": "dataholders", + "table": "identity", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "orgs_pkey", + "schema": "dataholders", + "table": "orgs", + "entityType": "pks" + }, + { + "columns": [ + "table_id" + ], + "nameExplicit": false, + "name": "cbs_table_pkey", + "schema": "stats", + "table": "cbs_table", + "entityType": "pks" + }, + { + "columns": [ + "period" + ], + "nameExplicit": false, + "name": "cw_cbs_cpi_pkey", + "schema": "stats", + "table": "cw_cbs_cpi", + "entityType": "pks" + }, + { + "columns": [ + "url" + ], + "nameExplicit": false, + "name": "cw_cbs_file_pkey", + "schema": "stats", + "table": "cw_cbs_file", + "entityType": "pks" + }, + { + "columns": [ + "election_id" + ], + "nameExplicit": false, + "name": "elec_election_pkey", + "schema": "stats", + "table": "elec_election", + "entityType": "pks" + }, + { + "columns": [ + "code" + ], + "nameExplicit": false, + "name": "eurostat_dataset_pkey", + "schema": "stats", + "table": "eurostat_dataset", + "entityType": "pks" + }, + { + "columns": [ + "run_id" + ], + "nameExplicit": false, + "name": "fetch_run_pkey", + "schema": "stats", + "table": "fetch_run", + "entityType": "pks" + }, + { + "columns": [ + "region_code" + ], + "nameExplicit": false, + "name": "region_pkey", + "schema": "stats", + "table": "region", + "entityType": "pks" + }, + { + "columns": [ + "series_id" + ], + "nameExplicit": false, + "name": "series_pkey", + "schema": "stats", + "table": "series", + "entityType": "pks" + }, + { + "columns": [ + "source_id" + ], + "nameExplicit": false, + "name": "source_pkey", + "schema": "stats", + "table": "source", + "entityType": "pks" + }, + { + "columns": [ + "id_no" + ], + "nameExplicit": false, + "name": "unesco_site_pkey", + "schema": "stats", + "table": "unesco_site", + "entityType": "pks" + }, + { + "columns": [ + "record_date" + ], + "nameExplicit": false, + "name": "ust_debt_daily_pkey", + "schema": "stats", + "table": "ust_debt_daily", + "entityType": "pks" + }, + { + "columns": [ + "party_id" + ], + "nameExplicit": false, + "name": "wo_compass_override_pkey", + "schema": "stats", + "table": "wo_compass_override", + "entityType": "pks" + }, + { + "columns": [ + "iso3" + ], + "nameExplicit": false, + "name": "wo_country_pkey", + "schema": "stats", + "table": "wo_country", + "entityType": "pks" + }, + { + "columns": [ + "sort" + ], + "nameExplicit": false, + "name": "wo_narrative_pkey", + "schema": "stats", + "table": "wo_narrative", + "entityType": "pks" + }, + { + "columns": [ + "party_id" + ], + "nameExplicit": false, + "name": "wo_party_pkey", + "schema": "stats", + "table": "wo_party", + "entityType": "pks" + }, + { + "columns": [ + "sort" + ], + "nameExplicit": false, + "name": "wo_source_pkey", + "schema": "stats", + "table": "wo_source", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pubg_markers_pkey", + "schema": "games", + "table": "pubg_markers", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pubg_matches_pkey", + "schema": "games", + "table": "pubg_matches", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pubg_rooms_pkey", + "schema": "games", + "table": "pubg_rooms", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "bot_status_pkey", + "schema": "ai", + "table": "bot_status", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "news_items_pkey", + "schema": "ai", + "table": "news_items", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "provider_setup_entries_pkey", + "schema": "ai", + "table": "provider_setup_entries", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "provider_setup_providers_pkey", + "schema": "ai", + "table": "provider_setup_providers", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "usage_entries_pkey", + "schema": "ai", + "table": "usage_entries", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "episodes_pkey", + "schema": "movies", + "table": "episodes", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "plays_pkey", + "schema": "movies", + "table": "plays", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "recs_pkey", + "schema": "movies", + "table": "recs", + "entityType": "pks" + }, + { + "columns": [ + "key" + ], + "nameExplicit": false, + "name": "settings_pkey", + "schema": "movies", + "table": "settings", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "titles_pkey", + "schema": "movies", + "table": "titles", + "entityType": "pks" + }, + { + "columns": [ + "slug" + ], + "nameExplicit": false, + "name": "categories_pkey", + "schema": "worldtodo", + "table": "categories", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "change_requests_pkey", + "schema": "worldtodo", + "table": "change_requests", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "tasks_pkey", + "schema": "worldtodo", + "table": "tasks", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "osu_goals_pkey", + "schema": "games", + "table": "osu_goals", + "entityType": "pks" + }, + { + "columns": [ + "path" + ], + "nameExplicit": false, + "name": "files_pkey", + "schema": "notes", + "table": "files", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "activity_pkey", + "schema": "math", + "table": "activity", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "chapters_pkey", + "schema": "math", + "table": "chapters", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "parts_pkey", + "schema": "math", + "table": "parts", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "sections_pkey", + "schema": "math", + "table": "sections", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "entries_pkey", + "schema": "plant", + "table": "entries", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "links_pkey", + "schema": "plant", + "table": "links", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "pending_pkey", + "schema": "plant", + "table": "pending", + "entityType": "pks" + }, + { + "columns": [ + "channel" + ], + "nameExplicit": false, + "name": "channels_pkey", + "schema": "radio", + "table": "channels", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "frequencies_pkey", + "schema": "radio", + "table": "frequencies", + "entityType": "pks" + }, + { + "columns": [ + "start_at" + ], + "nameExplicit": false, + "name": "iss_passes_pkey", + "schema": "radio", + "table": "iss_passes", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "iss_tle_pkey", + "schema": "radio", + "table": "iss_tle", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "log_pkey", + "schema": "radio", + "table": "log", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "nets_pkey", + "schema": "radio", + "table": "nets", + "entityType": "pks" + }, + { + "nameExplicit": false, + "columns": [ + "slug" + ], + "nullsNotDistinct": false, + "name": "blog_articles_slug_unique", + "entityType": "uniques", + "schema": "site", + "table": "blog_articles" + }, + { + "nameExplicit": false, + "columns": [ + "task_id", + "topic_id" + ], + "nullsNotDistinct": false, + "name": "task_topics_task_id_topic_id_unique", + "entityType": "uniques", + "schema": "site", + "table": "task_topics" + }, + { + "nameExplicit": false, + "columns": [ + "from_pokemon_id", + "to_pokemon_id", + "game_id", + "method" + ], + "nullsNotDistinct": false, + "name": "pokemon_evolutions_from_pokemon_id_to_pokemon_id_game_id_method_unique", + "entityType": "uniques", + "schema": "ref", + "table": "pokemon_evolutions" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_id", + "game_id" + ], + "nullsNotDistinct": false, + "name": "pokemon_game_entries_pokemon_id_game_id_unique", + "entityType": "uniques", + "schema": "ref", + "table": "pokemon_game_entries" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_game_entry_id", + "user_id" + ], + "nullsNotDistinct": false, + "name": "catch_em_all_entries_pokemon_game_entry_id_user_id_unique", + "entityType": "uniques", + "schema": "games", + "table": "catch_em_all_entries" + }, + { + "nameExplicit": false, + "columns": [ + "user_id", + "game_id" + ], + "nullsNotDistinct": false, + "name": "catch_em_all_games_user_id_game_id_unique", + "entityType": "uniques", + "schema": "games", + "table": "catch_em_all_games" + }, + { + "nameExplicit": false, + "columns": [ + "game_id", + "key" + ], + "nullsNotDistinct": false, + "name": "tracker_items_game_id_key_unique", + "entityType": "uniques", + "schema": "ref", + "table": "tracker_items" + }, + { + "nameExplicit": false, + "columns": [ + "user_id", + "item_id", + "milestone" + ], + "nullsNotDistinct": false, + "name": "tracker_progress_user_id_item_id_milestone_unique", + "entityType": "uniques", + "schema": "games", + "table": "tracker_progress" + }, + { + "nameExplicit": false, + "columns": [ + "user_id", + "game_id", + "party_slot" + ], + "nullsNotDistinct": false, + "name": "pokemon_catches_user_id_game_id_party_slot_unique", + "entityType": "uniques", + "schema": "games", + "table": "pokemon_catches" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_id", + "game_id", + "dex" + ], + "nullsNotDistinct": false, + "name": "pokemon_dex_numbers_pokemon_id_game_id_dex_unique", + "entityType": "uniques", + "schema": "ref", + "table": "pokemon_dex_numbers" + }, + { + "nameExplicit": false, + "columns": [ + "user_id", + "game_id" + ], + "nullsNotDistinct": false, + "name": "pokemon_journeys_user_id_game_id_unique", + "entityType": "uniques", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "nameExplicit": false, + "columns": [ + "pokemon_id", + "version_group" + ], + "nullsNotDistinct": false, + "name": "pokemon_learnsets_pokemon_id_version_group_unique", + "entityType": "uniques", + "schema": "ref", + "table": "pokemon_learnsets" + }, + { + "nameExplicit": false, + "columns": [ + "user_id", + "game_id", + "key" + ], + "nullsNotDistinct": false, + "name": "pokemon_milestones_user_id_game_id_key_unique", + "entityType": "uniques", + "schema": "games", + "table": "pokemon_milestones" + }, + { + "nameExplicit": false, + "columns": [ + "user_id", + "game_id", + "pokemon_id" + ], + "nullsNotDistinct": false, + "name": "pokemon_seen_user_id_game_id_pokemon_id_unique", + "entityType": "uniques", + "schema": "games", + "table": "pokemon_seen" + }, + { + "nameExplicit": false, + "columns": [ + "user_id", + "challenge_id" + ], + "nullsNotDistinct": false, + "name": "tracker_challenge_progress_user_id_challenge_id_unique", + "entityType": "uniques", + "schema": "games", + "table": "tracker_challenge_progress" + }, + { + "nameExplicit": false, + "columns": [ + "game_id", + "key" + ], + "nullsNotDistinct": false, + "name": "tracker_challenges_game_id_key_unique", + "entityType": "uniques", + "schema": "ref", + "table": "tracker_challenges" + }, + { + "nameExplicit": false, + "columns": [ + "user_id", + "game_id" + ], + "nullsNotDistinct": false, + "name": "tracker_ranks_user_id_game_id_unique", + "entityType": "uniques", + "schema": "games", + "table": "tracker_ranks" + }, + { + "nameExplicit": false, + "columns": [ + "user_id", + "item_id" + ], + "nullsNotDistinct": false, + "name": "tracker_weapon_ranks_user_id_item_id_unique", + "entityType": "uniques", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "nameExplicit": true, + "columns": [ + "table_id", + "column_name" + ], + "nullsNotDistinct": false, + "name": "columns_table_id_column_name_key", + "entityType": "uniques", + "schema": "meta", + "table": "columns" + }, + { + "nameExplicit": true, + "columns": [ + "schema_name", + "table_name" + ], + "nullsNotDistinct": false, + "name": "tables_schema_name_table_name_key", + "entityType": "uniques", + "schema": "meta", + "table": "tables" + }, + { + "nameExplicit": false, + "columns": [ + "user_id", + "name" + ], + "nullsNotDistinct": false, + "name": "accounts_user_id_name_unique", + "entityType": "uniques", + "schema": "money", + "table": "accounts" + }, + { + "nameExplicit": true, + "columns": [ + "external_uid" + ], + "nullsNotDistinct": false, + "name": "accounts_external_uid_key", + "entityType": "uniques", + "schema": "money", + "table": "accounts" + }, + { + "nameExplicit": true, + "columns": [ + "session_id" + ], + "nullsNotDistinct": false, + "name": "bank_sessions_session_id_key", + "entityType": "uniques", + "schema": "money", + "table": "bank_sessions" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "nullsNotDistinct": false, + "name": "projection_settings_user_id_unique", + "entityType": "uniques", + "schema": "money", + "table": "projection_settings" + }, + { + "nameExplicit": true, + "columns": [ + "account_id", + "external_id" + ], + "nullsNotDistinct": false, + "name": "transactions_account_external_id_key", + "entityType": "uniques", + "schema": "money", + "table": "transactions" + }, + { + "nameExplicit": false, + "columns": [ + "user_id", + "kind" + ], + "nullsNotDistinct": false, + "name": "utility_settings_user_id_kind_unique", + "entityType": "uniques", + "schema": "money", + "table": "utility_settings" + }, + { + "nameExplicit": true, + "columns": [ + "device_id", + "model", + "order_number" + ], + "nullsNotDistinct": true, + "name": "components_dedupe_uq", + "entityType": "uniques", + "schema": "hardware", + "table": "components" + }, + { + "nameExplicit": false, + "columns": [ + "token" + ], + "nullsNotDistinct": false, + "name": "session_token_key", + "schema": "auth", + "table": "session", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "email" + ], + "nullsNotDistinct": false, + "name": "user_email_key", + "schema": "auth", + "table": "user", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "user_id" + ], + "nullsNotDistinct": false, + "name": "catch_em_all_settings_user_id_key", + "schema": "games", + "table": "catch_em_all_settings", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "source_id" + ], + "nullsNotDistinct": false, + "name": "pokemon_games_source_id_key", + "schema": "ref", + "table": "pokemon_games", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "slug" + ], + "nullsNotDistinct": false, + "name": "pokemon_games_slug_key", + "schema": "ref", + "table": "pokemon_games", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "number" + ], + "nullsNotDistinct": false, + "name": "pokemon_number_key", + "schema": "ref", + "table": "pokemon", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "source_id" + ], + "nullsNotDistinct": false, + "name": "pokemon_locations_source_id_key", + "schema": "ref", + "table": "pokemon_locations", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "slug" + ], + "nullsNotDistinct": false, + "name": "tracker_games_slug_key", + "schema": "ref", + "table": "tracker_games", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "slug" + ], + "nullsNotDistinct": false, + "name": "library_slug_key", + "schema": "games", + "table": "library", + "entityType": "uniques" + }, + { + "nameExplicit": true, + "columns": [ + "slug" + ], + "nullsNotDistinct": false, + "name": "tables_slug_key", + "schema": "meta", + "table": "tables", + "entityType": "uniques" + }, + { + "nameExplicit": true, + "columns": [ + "date" + ], + "nullsNotDistinct": false, + "name": "nutrition_daily_date_key", + "schema": "health", + "table": "nutrition_daily", + "entityType": "uniques" + }, + { + "nameExplicit": true, + "columns": [ + "date" + ], + "nullsNotDistinct": false, + "name": "sleep_date_key", + "schema": "health", + "table": "sleep", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "slug" + ], + "nullsNotDistinct": false, + "name": "components_slug_key", + "schema": "hardware", + "table": "components", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "name" + ], + "nullsNotDistinct": false, + "name": "devices_name_key", + "schema": "hardware", + "table": "devices", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "game" + ], + "nullsNotDistinct": false, + "name": "sensitivities_game_key", + "schema": "hardware", + "table": "sensitivities", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "id" + ], + "nullsNotDistinct": false, + "name": "wo_country_id_key", + "schema": "stats", + "table": "wo_country", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "code" + ], + "nullsNotDistinct": false, + "name": "pubg_rooms_code_key", + "schema": "games", + "table": "pubg_rooms", + "entityType": "uniques" + }, + { + "value": "\"status\" IN ('main','active','occasional','unknown')", + "name": "library_status_check", + "entityType": "checks", + "schema": "games", + "table": "library" + }, + { + "value": "\"kind\" IN ('video','puzzle')", + "name": "library_kind_check", + "entityType": "checks", + "schema": "games", + "table": "library" + }, + { + "value": "(\"current_rank\" IS NULL OR \"current_rank\" > 0) AND (\"peak_rank\" IS NULL OR \"peak_rank\" > 0)", + "name": "library_rank_check", + "entityType": "checks", + "schema": "games", + "table": "library" + }, + { + "value": "\"kind\" IN ('score','goal','training')", + "name": "osu_entries_kind_check", + "entityType": "checks", + "schema": "games", + "table": "osu_entries" + }, + { + "value": "\"level\" between 1 and 100", + "name": "pokemon_catches_level_check", + "entityType": "checks", + "schema": "games", + "table": "pokemon_catches" + }, + { + "value": "\"party_slot\" between 1 and 6", + "name": "pokemon_catches_party_slot_check", + "entityType": "checks", + "schema": "games", + "table": "pokemon_catches" + }, + { + "value": "cardinality(\"moves\") <= 4", + "name": "pokemon_catches_moves_check", + "entityType": "checks", + "schema": "games", + "table": "pokemon_catches" + }, + { + "value": "\"stage\" IN ('story','postgame','collection')", + "name": "pokemon_catches_stage_check", + "entityType": "checks", + "schema": "games", + "table": "pokemon_catches" + }, + { + "value": "\"stage\" IN ('story','postgame','collection')", + "name": "pokemon_journeys_stage_check", + "entityType": "checks", + "schema": "games", + "table": "pokemon_journeys" + }, + { + "value": "\"current\" >= 0", + "name": "tracker_challenge_progress_current_check", + "entityType": "checks", + "schema": "games", + "table": "tracker_challenge_progress" + }, + { + "value": "\"level\" between 1 and 10000", + "name": "tracker_ranks_level_check", + "entityType": "checks", + "schema": "games", + "table": "tracker_ranks" + }, + { + "value": "\"prestige\" between 0 and 1000", + "name": "tracker_ranks_prestige_check", + "entityType": "checks", + "schema": "games", + "table": "tracker_ranks" + }, + { + "value": "\"level\" between 1 and 10000", + "name": "tracker_weapon_ranks_level_check", + "entityType": "checks", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "value": "\"prestige\" between 0 and 1000", + "name": "tracker_weapon_ranks_prestige_check", + "entityType": "checks", + "schema": "games", + "table": "tracker_weapon_ranks" + }, + { + "value": "ui_type IN ('text','longtext','url','image','number','cents','date','datetime','bool','select','multiselect','fk','json')", + "name": "columns_ui_type_check", + "entityType": "checks", + "schema": "meta", + "table": "columns" + }, + { + "value": "action IN ('insert','update','delete','import','add_column')", + "name": "edit_log_action_check", + "entityType": "checks", + "schema": "meta", + "table": "edit_log" + }, + { + "value": "slug ~ '^[a-z0-9][a-z0-9-]{0,62}$'", + "name": "tables_slug_check", + "entityType": "checks", + "schema": "meta", + "table": "tables" + }, + { + "value": "kind IN ('list','core','ref')", + "name": "tables_kind_check", + "entityType": "checks", + "schema": "meta", + "table": "tables" + }, + { + "value": "kind IN ('spendable','investment')", + "name": "accounts_kind_check", + "entityType": "checks", + "schema": "money", + "table": "accounts" + }, + { + "value": "scope IN ('personal','joint')", + "name": "accounts_scope_check", + "entityType": "checks", + "schema": "money", + "table": "accounts" + }, + { + "value": "provider IN ('manual','enablebanking')", + "name": "accounts_provider_check", + "entityType": "checks", + "schema": "money", + "table": "accounts" + }, + { + "value": "status IN ('authorized','expired','revoked','error')", + "name": "bank_sessions_status_check", + "entityType": "checks", + "schema": "money", + "table": "bank_sessions" + }, + { + "value": "cadence IN ('weekly','monthly','yearly')", + "name": "insurances_cadence_check", + "entityType": "checks", + "schema": "money", + "table": "insurances" + }, + { + "value": "contribution_mode IN ('excess','fixed')", + "name": "projection_settings_contribution_mode_check", + "entityType": "checks", + "schema": "money", + "table": "projection_settings" + }, + { + "value": "cadence IN ('weekly','monthly','yearly')", + "name": "recurring_cadence_check", + "entityType": "checks", + "schema": "money", + "table": "recurring" + }, + { + "value": "source IN ('manual','csv','enablebanking')", + "name": "transactions_source_check", + "entityType": "checks", + "schema": "money", + "table": "transactions" + }, + { + "value": "kind IN ('electricity','gas','water')", + "name": "utility_readings_kind_check", + "entityType": "checks", + "schema": "money", + "table": "utility_readings" + }, + { + "value": "kind IN ('electricity','gas','water')", + "name": "utility_settings_kind_check", + "entityType": "checks", + "schema": "money", + "table": "utility_settings" + }, + { + "value": "offer IN ('rent', 'buy')", + "name": "alert_rules_offer_check", + "entityType": "checks", + "schema": "house", + "table": "alert_rules" + }, + { + "value": "offer IN ('rent', 'buy')", + "name": "listings_offer_check", + "entityType": "checks", + "schema": "house", + "table": "listings" + }, + { + "value": "price_eur IS NULL OR price_eur >= 0", + "name": "listings_price_eur_check", + "entityType": "checks", + "schema": "house", + "table": "listings" + }, + { + "value": "contact_status IS NULL OR contact_status IN ('waiting_on_me', 'not_contacted', 'waiting_on_them', 'viewing', 'closed')", + "name": "listings_contact_status_check", + "entityType": "checks", + "schema": "house", + "table": "listings" + }, + { + "value": "contact_by IS NULL OR contact_by IN ('me', 'them')", + "name": "listings_contact_by_check", + "entityType": "checks", + "schema": "house", + "table": "listings" + }, + { + "value": "\"type\" IN ('appointment','checkup','condition','test','procedure','other')", + "name": "appointments_type_check", + "entityType": "checks", + "schema": "health", + "table": "appointments" + }, + { + "value": "\"date\" >= DATE '1900-01-01'", + "name": "appointments_date_check", + "entityType": "checks", + "schema": "health", + "table": "appointments" + }, + { + "value": "\"weight_kg\" IS NOT NULL OR \"waist_cm\" IS NOT NULL OR \"body_fat_pct\" IS NOT NULL", + "name": "body_measurements_any_check", + "entityType": "checks", + "schema": "health", + "table": "body_measurements" + }, + { + "value": "\"weight_kg\" IS NULL OR \"weight_kg\" BETWEEN 20 AND 400", + "name": "body_measurements_weight_check", + "entityType": "checks", + "schema": "health", + "table": "body_measurements" + }, + { + "value": "\"waist_cm\" IS NULL OR \"waist_cm\" BETWEEN 30 AND 250", + "name": "body_measurements_waist_check", + "entityType": "checks", + "schema": "health", + "table": "body_measurements" + }, + { + "value": "\"body_fat_pct\" IS NULL OR \"body_fat_pct\" BETWEEN 1 AND 75", + "name": "body_measurements_fat_check", + "entityType": "checks", + "schema": "health", + "table": "body_measurements" + }, + { + "value": "(\"muscle_mass_kg\" IS NULL OR \"muscle_mass_kg\" BETWEEN 5 AND 250)\n\t\t\tAND (\"skeletal_muscle_kg\" IS NULL OR \"skeletal_muscle_kg\" BETWEEN 5 AND 200)\n\t\t\tAND (\"bone_mass_kg\" IS NULL OR \"bone_mass_kg\" BETWEEN 0.5 AND 20)\n\t\t\tAND (\"visceral_fat\" IS NULL OR \"visceral_fat\" BETWEEN 1 AND 60)\n\t\t\tAND (\"body_water_pct\" IS NULL OR \"body_water_pct\" BETWEEN 20 AND 85)\n\t\t\tAND (\"protein_pct\" IS NULL OR \"protein_pct\" BETWEEN 5 AND 40)\n\t\t\tAND (\"bmr_kcal\" IS NULL OR \"bmr_kcal\" BETWEEN 500 AND 6000)\n\t\t\tAND (\"bmi\" IS NULL OR \"bmi\" BETWEEN 10 AND 80)", + "name": "body_measurements_scale_check", + "entityType": "checks", + "schema": "health", + "table": "body_measurements" + }, + { + "value": "\"date\" >= DATE '1900-01-01'", + "name": "body_measurements_date_check", + "entityType": "checks", + "schema": "health", + "table": "body_measurements" + }, + { + "value": "length(btrim(\"name\")) > 0", + "name": "medications_name_check", + "entityType": "checks", + "schema": "health", + "table": "medications" + }, + { + "value": "\"kind\" IN ('medication','supplement')", + "name": "medications_kind_check", + "entityType": "checks", + "schema": "health", + "table": "medications" + }, + { + "value": "\"stop_date\" IS NULL OR \"start_date\" IS NULL OR \"stop_date\" >= \"start_date\"", + "name": "medications_dates_check", + "entityType": "checks", + "schema": "health", + "table": "medications" + }, + { + "value": "\"kcal\" IS NULL OR \"kcal\" BETWEEN 0 AND 20000", + "name": "nutrition_daily_kcal_check", + "entityType": "checks", + "schema": "health", + "table": "nutrition_daily" + }, + { + "value": "\"protein_g\" IS NULL OR \"protein_g\" BETWEEN 0 AND 1000", + "name": "nutrition_daily_protein_check", + "entityType": "checks", + "schema": "health", + "table": "nutrition_daily" + }, + { + "value": "\"date\" >= DATE '1900-01-01'", + "name": "nutrition_daily_date_check", + "entityType": "checks", + "schema": "health", + "table": "nutrition_daily" + }, + { + "value": "\"wake_time\" > \"bedtime\"", + "name": "sleep_order_check", + "entityType": "checks", + "schema": "health", + "table": "sleep" + }, + { + "value": "\"wake_time\" - \"bedtime\" <= interval '24 hours'", + "name": "sleep_length_check", + "entityType": "checks", + "schema": "health", + "table": "sleep" + }, + { + "value": "\"date\" >= DATE '1900-01-01'", + "name": "sleep_date_check", + "entityType": "checks", + "schema": "health", + "table": "sleep" + }, + { + "value": "length(btrim(\"vaccine\")) > 0", + "name": "vaccinations_vaccine_check", + "entityType": "checks", + "schema": "health", + "table": "vaccinations" + }, + { + "value": "\"dose_no\" IS NULL OR \"dose_no\" BETWEEN 1 AND 20", + "name": "vaccinations_dose_no_check", + "entityType": "checks", + "schema": "health", + "table": "vaccinations" + }, + { + "value": "\"country\" IS NULL OR \"country\" ~ '^[A-Z]{2}$'", + "name": "vaccinations_country_check", + "entityType": "checks", + "schema": "health", + "table": "vaccinations" + }, + { + "value": "\"date\" >= DATE '1900-01-01'", + "name": "vaccinations_date_check", + "entityType": "checks", + "schema": "health", + "table": "vaccinations" + }, + { + "value": "length(btrim(\"exercise\")) > 0", + "name": "workouts_exercise_check", + "entityType": "checks", + "schema": "health", + "table": "workouts" + }, + { + "value": "\"sets\" IS NULL OR \"sets\" BETWEEN 1 AND 100", + "name": "workouts_sets_check", + "entityType": "checks", + "schema": "health", + "table": "workouts" + }, + { + "value": "\"reps\" IS NULL OR \"reps\" BETWEEN 0 AND 1000", + "name": "workouts_reps_check", + "entityType": "checks", + "schema": "health", + "table": "workouts" + }, + { + "value": "\"load_kg\" IS NULL OR \"load_kg\" BETWEEN 0 AND 1000", + "name": "workouts_load_check", + "entityType": "checks", + "schema": "health", + "table": "workouts" + }, + { + "value": "\"rpe\" IS NULL OR \"rpe\" BETWEEN 1 AND 10", + "name": "workouts_rpe_check", + "entityType": "checks", + "schema": "health", + "table": "workouts" + }, + { + "value": "\"date\" >= DATE '1900-01-01'", + "name": "workouts_date_check", + "entityType": "checks", + "schema": "health", + "table": "workouts" + }, + { + "value": "\"percent\" between 0 and 100", + "name": "progress_percent_check", + "entityType": "checks", + "schema": "books", + "table": "progress" + }, + { + "value": "\"rating\" is null or \"rating\" between 1 and 5", + "name": "progress_rating_check", + "entityType": "checks", + "schema": "books", + "table": "progress" + }, + { + "value": "(\"start_percent\" is null or \"start_percent\" between 0 and 100) and (\"end_percent\" is null or \"end_percent\" between 0 and 100)", + "name": "sessions_percent_check", + "entityType": "checks", + "schema": "books", + "table": "sessions" + }, + { + "value": "\"ended_at\" is null or \"ended_at\" >= \"started_at\"", + "name": "sessions_end_check", + "entityType": "checks", + "schema": "books", + "table": "sessions" + }, + { + "value": "\"year\" is null or \"year\" between 0 and 2100", + "name": "works_year_check", + "entityType": "checks", + "schema": "books", + "table": "works" + }, + { + "value": "\"task_id\" IS NOT NULL OR \"goal_id\" IS NOT NULL", + "name": "activity_target_check", + "entityType": "checks", + "schema": "tasks", + "table": "activity" + }, + { + "value": "\"kind\" IN ('created','status','edit','note','progress')", + "name": "activity_kind_check", + "entityType": "checks", + "schema": "tasks", + "table": "activity" + }, + { + "value": "\"slug\" ~ '^[a-z0-9][a-z0-9-]{0,62}$'", + "name": "areas_slug_check", + "entityType": "checks", + "schema": "tasks", + "table": "areas" + }, + { + "value": "length(btrim(\"name\")) > 0", + "name": "areas_name_check", + "entityType": "checks", + "schema": "tasks", + "table": "areas" + }, + { + "value": "length(btrim(\"title\")) > 0", + "name": "goals_title_check", + "entityType": "checks", + "schema": "tasks", + "table": "goals" + }, + { + "value": "\"status\" IN ('active','achieved','dropped')", + "name": "goals_status_check", + "entityType": "checks", + "schema": "tasks", + "table": "goals" + }, + { + "value": "length(btrim(\"title\")) > 0", + "name": "tasks_title_check", + "entityType": "checks", + "schema": "tasks", + "table": "tasks" + }, + { + "value": "\"status\" IN ('todo','in_progress','done','dropped')", + "name": "tasks_status_check", + "entityType": "checks", + "schema": "tasks", + "table": "tasks" + }, + { + "value": "\"priority\" BETWEEN 0 AND 3", + "name": "tasks_priority_check", + "entityType": "checks", + "schema": "tasks", + "table": "tasks" + }, + { + "value": "\"parent_id\" IS NULL OR \"parent_id\" <> \"id\"", + "name": "tasks_parent_check", + "entityType": "checks", + "schema": "tasks", + "table": "tasks" + }, + { + "value": "\"due_time\" IS NULL OR \"due_date\" IS NOT NULL", + "name": "tasks_time_check", + "entityType": "checks", + "schema": "tasks", + "table": "tasks" + }, + { + "value": "\"slug\" ~ '^[a-z0-9][a-z0-9-]{0,62}$'", + "name": "categories_slug_check", + "entityType": "checks", + "schema": "groceries", + "table": "categories" + }, + { + "value": "length(btrim(\"name\")) > 0", + "name": "categories_name_check", + "entityType": "checks", + "schema": "groceries", + "table": "categories" + }, + { + "value": "length(btrim(\"name\")) > 0", + "name": "groups_name_check", + "entityType": "checks", + "schema": "groceries", + "table": "groups" + }, + { + "value": "\"unit\" IS NULL OR \"unit\" IN ('piece','kg','l')", + "name": "groups_unit_check", + "entityType": "checks", + "schema": "groceries", + "table": "groups" + }, + { + "value": "\"merged_into_id\" IS NULL OR \"merged_into_id\" <> \"id\"", + "name": "groups_not_self_merged", + "entityType": "checks", + "schema": "groceries", + "table": "groups" + }, + { + "value": "\"unit\" IS NULL OR \"unit\" IN ('piece','kg','l')", + "name": "items_unit_check", + "entityType": "checks", + "schema": "groceries", + "table": "items" + }, + { + "value": "\"price_cents\" IS NULL OR \"price_cents\" >= 0", + "name": "items_price_check", + "entityType": "checks", + "schema": "groceries", + "table": "items" + }, + { + "value": "\"price_cents\" > 0 AND \"price_cents\" < 1000000", + "name": "manual_prices_price_check", + "entityType": "checks", + "schema": "groceries", + "table": "manual_prices" + }, + { + "value": "\"group_id\" IS NOT NULL OR \"item_id\" IS NOT NULL", + "name": "manual_prices_target_check", + "entityType": "checks", + "schema": "groceries", + "table": "manual_prices" + }, + { + "value": "\"unit\" IS NULL OR \"unit\" IN ('piece','kg','l')", + "name": "manual_prices_unit_check", + "entityType": "checks", + "schema": "groceries", + "table": "manual_prices" + }, + { + "value": "\"scope\" IN ('food','all')", + "name": "stats_snapshots_scope_check", + "entityType": "checks", + "schema": "groceries", + "table": "stats_snapshots" + }, + { + "value": "\"slug\" ~ '^[a-z0-9][a-z0-9-]{0,62}$'", + "name": "stores_slug_check", + "entityType": "checks", + "schema": "groceries", + "table": "stores" + }, + { + "value": "length(btrim(\"name\")) > 0", + "name": "stores_name_check", + "entityType": "checks", + "schema": "groceries", + "table": "stores" + }, + { + "value": "\"term\" ~ '^[a-z0-9][a-z0-9 -]{0,40}$'", + "name": "synonyms_term_check", + "entityType": "checks", + "schema": "groceries", + "table": "synonyms" + }, + { + "value": "\"synonym\" ~ '^[a-z0-9][a-z0-9 -]{0,40}$'", + "name": "synonyms_synonym_check", + "entityType": "checks", + "schema": "groceries", + "table": "synonyms" + }, + { + "value": "\"term\" <> \"synonym\"", + "name": "synonyms_not_self", + "entityType": "checks", + "schema": "groceries", + "table": "synonyms" + }, + { + "value": "length(btrim(\"title\")) between 1 and 80", + "name": "links_title_check", + "entityType": "checks", + "schema": "home", + "table": "links" + }, + { + "value": "\"url\" ~ '^https?://' and length(\"url\") <= 2000", + "name": "links_url_check", + "entityType": "checks", + "schema": "home", + "table": "links" + }, + { + "value": "\"id\" = 1", + "name": "now_playing_single_row", + "entityType": "checks", + "schema": "music", + "table": "now_playing" + }, + { + "value": "\"source\" in ('spotify', 'lastfm', 'youtube', 'local')", + "name": "plays_source_check", + "entityType": "checks", + "schema": "music", + "table": "plays" + }, + { + "value": "\"origin\" in ('api', 'export', 'import', 'manual', 'nowplaying')", + "name": "plays_origin_check", + "entityType": "checks", + "schema": "music", + "table": "plays" + }, + { + "value": "\"id\" = 1", + "name": "spotify_auth_single_row", + "entityType": "checks", + "schema": "music", + "table": "spotify_auth" + }, + { + "value": "category in ('case', 'cpu', 'motherboard', 'ram', 'cpu_cooler', 'gpu', 'psu', 'storage', 'fan', 'lighting', 'monitor', 'mouse', 'keyboard', 'headset', 'audio', 'controller', 'accessory', 'microphone', 'mousepad', 'webcam', 'chair', 'other')", + "name": "components_category_check", + "entityType": "checks", + "schema": "hardware", + "table": "components" + }, + { + "value": "status in ('in_use', 'planned', 'spare', 'retired', 'sold')", + "name": "components_status_check", + "entityType": "checks", + "schema": "hardware", + "table": "components" + }, + { + "value": "quantity > 0", + "name": "components_quantity_check", + "entityType": "checks", + "schema": "hardware", + "table": "components" + }, + { + "value": "section is null or section in ('pc', 'desk', 'audio', 'sim')", + "name": "components_section_check", + "entityType": "checks", + "schema": "hardware", + "table": "components" + }, + { + "value": "usage is null or usage in ('current', 'stored', 'previous', 'work-issued', 'placeholder', 'planned', 'legacy', 'legacy-previous')", + "name": "components_usage_check", + "entityType": "checks", + "schema": "hardware", + "table": "components" + }, + { + "value": "removed_at is null or installed_at is null or removed_at >= installed_at", + "name": "components_dates_check", + "entityType": "checks", + "schema": "hardware", + "table": "components" + }, + { + "value": "unit_price_cents >= 0", + "name": "components_unit_price_cents_check", + "entityType": "checks", + "schema": "hardware", + "table": "components" + }, + { + "value": "total_price_cents >= 0", + "name": "components_total_price_cents_check", + "entityType": "checks", + "schema": "hardware", + "table": "components" + }, + { + "value": "(dpi is null or dpi > 0) and (measured_dpi is null or measured_dpi > 0)", + "name": "components_dpi_check", + "entityType": "checks", + "schema": "hardware", + "table": "components" + }, + { + "value": "kind in ('desktop', 'laptop', 'server', 'vm', 'phone', 'tablet', 'monitor', 'other')", + "name": "devices_kind_check", + "entityType": "checks", + "schema": "hardware", + "table": "devices" + }, + { + "value": "status in ('active', 'spare', 'planned', 'retired', 'sold')", + "name": "devices_status_check", + "entityType": "checks", + "schema": "hardware", + "table": "devices" + }, + { + "value": "(price_cents is null or price_cents >= 0) and (monthly_cents is null or monthly_cents >= 0) and (budget_cents is null or budget_cents >= 0)", + "name": "devices_cents_check", + "entityType": "checks", + "schema": "hardware", + "table": "devices" + }, + { + "value": "cm_per_360 is null or cm_per_360 > 0", + "name": "sensitivities_cm_check", + "entityType": "checks", + "schema": "hardware", + "table": "sensitivities" + }, + { + "value": "yaw is null or yaw > 0", + "name": "sensitivities_yaw_check", + "entityType": "checks", + "schema": "hardware", + "table": "sensitivities" + }, + { + "value": "\"kind\" IN ('address','email','phone','iban')", + "name": "identity_kind_check", + "entityType": "checks", + "schema": "dataholders", + "table": "identity" + }, + { + "value": "length(btrim(\"name\")) > 0", + "name": "orgs_name_check", + "entityType": "checks", + "schema": "dataholders", + "table": "orgs" + }, + { + "value": "\"address_status\" IN ('confirmed','likely','unknown')", + "name": "orgs_address_status_check", + "entityType": "checks", + "schema": "dataholders", + "table": "orgs" + }, + { + "value": "\"action\" IN ('update','close','check','none')", + "name": "orgs_action_check", + "entityType": "checks", + "schema": "dataholders", + "table": "orgs" + }, + { + "value": "\"priority\" IN ('must','should','nice')", + "name": "orgs_priority_check", + "entityType": "checks", + "schema": "dataholders", + "table": "orgs" + }, + { + "value": "length(btrim(\"name\")) > 0", + "name": "bot_status_name_check", + "entityType": "checks", + "schema": "ai", + "table": "bot_status" + }, + { + "value": "\"section\" IN ('ai','software')", + "name": "news_items_section_check", + "entityType": "checks", + "schema": "ai", + "table": "news_items" + }, + { + "value": "length(btrim(\"title\")) > 0", + "name": "news_items_title_check", + "entityType": "checks", + "schema": "ai", + "table": "news_items" + }, + { + "value": "\"section\" IN ('connections','skills','instructions','plugins','routines','agents','plan','notes')", + "name": "provider_setup_entries_section_check", + "entityType": "checks", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "value": "\"scope\" IS NULL OR \"scope\" IN ('global','per-repo','app')", + "name": "provider_setup_entries_scope_check", + "entityType": "checks", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "value": "length(btrim(\"name\")) > 0", + "name": "provider_setup_entries_name_check", + "entityType": "checks", + "schema": "ai", + "table": "provider_setup_entries" + }, + { + "value": "length(btrim(\"name\")) > 0", + "name": "provider_setup_providers_name_check", + "entityType": "checks", + "schema": "ai", + "table": "provider_setup_providers" + }, + { + "value": "\"color\" IN ('orange','green','blue','violet','pink','sky','amber','zinc')", + "name": "provider_setup_providers_color_check", + "entityType": "checks", + "schema": "ai", + "table": "provider_setup_providers" + }, + { + "value": "\"provider\" IN ('claude','chatgpt','gemini','api')", + "name": "usage_entries_provider_check", + "entityType": "checks", + "schema": "ai", + "table": "usage_entries" + }, + { + "value": "\"source\" IN ('scheduled','ccusage','export','manual')", + "name": "usage_entries_source_check", + "entityType": "checks", + "schema": "ai", + "table": "usage_entries" + }, + { + "value": "length(btrim(\"metric\")) > 0", + "name": "usage_entries_metric_check", + "entityType": "checks", + "schema": "ai", + "table": "usage_entries" + }, + { + "value": "\"who\" IN ('stan','juhee','both')", + "name": "plays_who_check", + "entityType": "checks", + "schema": "movies", + "table": "plays" + }, + { + "value": "\"platform\" IS NULL OR \"platform\" IN ('netflix','plex','cinema','other')", + "name": "plays_platform_check", + "entityType": "checks", + "schema": "movies", + "table": "plays" + }, + { + "value": "\"type\" IN ('movie','show')", + "name": "recs_type_check", + "entityType": "checks", + "schema": "movies", + "table": "recs" + }, + { + "value": "\"for_whom\" IN ('stan','juhee','both')", + "name": "recs_for_check", + "entityType": "checks", + "schema": "movies", + "table": "recs" + }, + { + "value": "length(btrim(\"title\")) > 0", + "name": "recs_title_check", + "entityType": "checks", + "schema": "movies", + "table": "recs" + }, + { + "value": "\"key\" IN ('visibility')", + "name": "settings_key_check", + "entityType": "checks", + "schema": "movies", + "table": "settings" + }, + { + "value": "\"type\" IN ('movie','show')", + "name": "titles_type_check", + "entityType": "checks", + "schema": "movies", + "table": "titles" + }, + { + "value": "\"status\" IN ('watching','watched','watchlist','dropped')", + "name": "titles_status_check", + "entityType": "checks", + "schema": "movies", + "table": "titles" + }, + { + "value": "\"rating\" IS NULL OR (\"rating\" >= 0.5 AND \"rating\" <= 5 AND \"rating\" * 2 = round(\"rating\" * 2))", + "name": "titles_rating_check", + "entityType": "checks", + "schema": "movies", + "table": "titles" + }, + { + "value": "\"rewatch_count\" >= 0", + "name": "titles_rewatch_check", + "entityType": "checks", + "schema": "movies", + "table": "titles" + }, + { + "value": "\"watched_by\" IS NULL OR \"watched_by\" IN ('stan','juhee','both')", + "name": "titles_who_check", + "entityType": "checks", + "schema": "movies", + "table": "titles" + }, + { + "value": "\"platform\" IS NULL OR \"platform\" IN ('netflix','plex','cinema','other')", + "name": "titles_platform_check", + "entityType": "checks", + "schema": "movies", + "table": "titles" + }, + { + "value": "\"source\" IN ('netflix','plex','letterboxd','manual','ju','site')", + "name": "titles_source_check", + "entityType": "checks", + "schema": "movies", + "table": "titles" + }, + { + "value": "\"match_status\" IN ('pending','matched','manual','not_found')", + "name": "titles_match_check", + "entityType": "checks", + "schema": "movies", + "table": "titles" + }, + { + "value": "length(btrim(\"title\")) > 0", + "name": "titles_title_check", + "entityType": "checks", + "schema": "movies", + "table": "titles" + }, + { + "value": "char_length(\"reason\") BETWEEN 10 AND 1000", + "name": "change_requests_reason_check", + "entityType": "checks", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "value": "char_length(\"display_name\") <= 40", + "name": "change_requests_display_name_check", + "entityType": "checks", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "value": "((\"kind\" = 'add') = (\"task_id\" IS NULL))", + "name": "change_requests_task_check", + "entityType": "checks", + "schema": "worldtodo", + "table": "change_requests" + }, + { + "value": "char_length(\"title\") BETWEEN 5 AND 140", + "name": "tasks_title_check", + "entityType": "checks", + "schema": "worldtodo", + "table": "tasks" + }, + { + "value": "char_length(\"description\") <= 2000", + "name": "tasks_description_check", + "entityType": "checks", + "schema": "worldtodo", + "table": "tasks" + }, + { + "value": "\"lat\" BETWEEN -90 AND 90", + "name": "tasks_lat_check", + "entityType": "checks", + "schema": "worldtodo", + "table": "tasks" + }, + { + "value": "\"lon\" BETWEEN -180 AND 180", + "name": "tasks_lon_check", + "entityType": "checks", + "schema": "worldtodo", + "table": "tasks" + }, + { + "value": "cardinality(\"source_urls\") >= 1", + "name": "tasks_sources_check", + "entityType": "checks", + "schema": "worldtodo", + "table": "tasks" + }, + { + "value": "\"confidence\" IN ('high','medium')", + "name": "tasks_confidence_check", + "entityType": "checks", + "schema": "worldtodo", + "table": "tasks" + }, + { + "value": "\"goal\" IS NULL OR \"goal\" IN ('pass','fc')", + "name": "osu_goals_goal_check", + "entityType": "checks", + "schema": "games", + "table": "osu_goals" + }, + { + "value": "\"match_status\" IN ('matched','ambiguous','unmatched') AND (\"match_status\" <> 'matched' OR \"beatmap_id\" IS NOT NULL)", + "name": "osu_goals_match_check", + "entityType": "checks", + "schema": "games", + "table": "osu_goals" + }, + { + "value": "length(btrim(\"name\")) > 0", + "name": "osu_goals_name_check", + "entityType": "checks", + "schema": "games", + "table": "osu_goals" + }, + { + "value": "\"kind\" IN ('status','exercises','note','section')", + "name": "activity_kind_check", + "entityType": "checks", + "schema": "math", + "table": "activity" + }, + { + "value": "\"status\" IN ('not_started','reading','exercises','done','skipped')", + "name": "chapters_status_check", + "entityType": "checks", + "schema": "math", + "table": "chapters" + }, + { + "value": "\"exercises_done\" >= 0", + "name": "chapters_exercises_done_check", + "entityType": "checks", + "schema": "math", + "table": "chapters" + }, + { + "value": "\"kind\" IN ('process_step','product','department','equipment','glossary','question','note','person_role')", + "name": "entries_kind_check", + "entityType": "checks", + "schema": "plant", + "table": "entries" + }, + { + "value": "\"confidence\" IN ('confirmed','assumed','open')", + "name": "entries_confidence_check", + "entityType": "checks", + "schema": "plant", + "table": "entries" + }, + { + "value": "\"slug\" ~ '^[a-z0-9]+(-[a-z0-9]+)*$'", + "name": "entries_slug_check", + "entityType": "checks", + "schema": "plant", + "table": "entries" + }, + { + "value": "\"confidence\" IN ('confirmed','assumed','open')", + "name": "links_confidence_check", + "entityType": "checks", + "schema": "plant", + "table": "links" + }, + { + "value": "\"relation\" IN ('feeds_into','made_in','uses','part_of','related')", + "name": "links_relation_check", + "entityType": "checks", + "schema": "plant", + "table": "links" + }, + { + "value": "\"from_id\" <> \"to_id\"", + "name": "links_not_self_check", + "entityType": "checks", + "schema": "plant", + "table": "links" + }, + { + "value": "\"field\" IN ('parent','feeds_into','made_in','uses','part_of','related')", + "name": "pending_field_check", + "entityType": "checks", + "schema": "plant", + "table": "pending" + }, + { + "value": "\"channel\" BETWEEN 1 AND 500", + "name": "channels_channel_check", + "entityType": "checks", + "schema": "radio", + "table": "channels" + }, + { + "value": "char_length(\"alpha_tag\") <= 16", + "name": "channels_alpha_tag_check", + "entityType": "checks", + "schema": "radio", + "table": "channels" + }, + { + "value": "\"mode\" IN ('FM','NFM','AM','USB','LSB','CW','DATA')", + "name": "frequencies_mode_check", + "entityType": "checks", + "schema": "radio", + "table": "frequencies" + }, + { + "value": "\"band\" IN ('marine','air','ham','pmr','other')", + "name": "frequencies_band_check", + "entityType": "checks", + "schema": "radio", + "table": "frequencies" + }, + { + "value": "\"freq_hz\" > 0", + "name": "frequencies_freq_check", + "entityType": "checks", + "schema": "radio", + "table": "frequencies" + }, + { + "value": "\"id\" = 1", + "name": "iss_tle_single_check", + "entityType": "checks", + "schema": "radio", + "table": "iss_tle" + }, + { + "value": "\"signal\" BETWEEN 1 AND 5", + "name": "log_signal_check", + "entityType": "checks", + "schema": "radio", + "table": "log" + }, + { + "value": "\"kind\" IN ('net','broadcast','other')", + "name": "nets_kind_check", + "entityType": "checks", + "schema": "radio", + "table": "nets" + }, + { + "value": "\"days\" <@ '{1,2,3,4,5,6,7}'::smallint[]", + "name": "nets_days_check", + "entityType": "checks", + "schema": "radio", + "table": "nets" + }, + { + "value": "array_to_string(\"times\", ',') ~ '^(([01][0-9]|2[0-3]):[0-5][0-9](,|$))*$'", + "name": "nets_times_check", + "entityType": "checks", + "schema": "radio", + "table": "nets" + }, + { + "value": "\"kind\" IN ('net','iss')", + "name": "reminders_kind_check", + "entityType": "checks", + "schema": "radio", + "table": "reminders" + } + ], + "renames": [] +} \ No newline at end of file diff --git a/package.json b/package.json index 2b6a36a..180d7fa 100755 --- a/package.json +++ b/package.json @@ -117,6 +117,7 @@ "mode-watcher": "^1.1.0", "pdfjs-dist": "^6.4.299", "postgres": "^3.4.9", + "satellite.js": "^7.1.0", "topojson-client": "^3.1.0", "world-atlas": "^2.0.2", "zod": "^4.5.4" diff --git a/scripts/deploy-preflight.ts b/scripts/deploy-preflight.ts index 8e727c7..a32a1ba 100644 --- a/scripts/deploy-preflight.ts +++ b/scripts/deploy-preflight.ts @@ -342,6 +342,32 @@ try { throw new Error(`plant schema tables/grants are wrong: ${JSON.stringify(plant)}`); const [{ n: plantEntries }] = await client`select count(*)::int as n from plant.entries`; if (!plantEntries) throw new Error('plant.entries is empty, expected the seeded factory guide'); + // Radio tracker (owner-only): 7 = frequencies, channels, nets, iss_passes, iss_tle, log, + // reminders; the migration seeds Opa's frequencies. + const RADIO_TABLES = 7; + const [radio] = await client` + select + count(*) filter (where has_table_privilege(c.oid, 'select, insert, update, delete')) as app_rw, + count(*) filter ( + where exists ( + select 1 from aclexplode(c.relacl) a join pg_roles r on r.oid = a.grantee + where r.rolname = 'personal_ro' + ) + ) as ro_read, + count(*) as tables, + has_schema_privilege('public', 'radio', 'usage') as public_usage + from pg_class c join pg_namespace n on n.oid = c.relnamespace + where n.nspname = 'radio' and c.relkind = 'r' + `; + if ( + Number(radio.tables) !== RADIO_TABLES || + Number(radio.app_rw) !== RADIO_TABLES || + Number(radio.ro_read) !== 0 || + radio.public_usage + ) + throw new Error(`radio schema tables/grants are wrong: ${JSON.stringify(radio)}`); + const [{ n: radioFreqs }] = await client`select count(*)::int as n from radio.frequencies`; + if (!radioFreqs) throw new Error('radio.frequencies is empty, expected the seeded frequencies'); // Energy tracker reads the ned-collector tables (SELECT only). const [energy] = await client` select count(*) as hours, max(valid_from) as latest from energy.ned_utilization @@ -351,7 +377,7 @@ try { if (!Number(energy.hours)) console.warn('Warning: energy.ned_utilization has no hourly data from the last 7 days'); console.log( - `health: ${health.tables} tables, tasks: ${tasks.tables} tables, groceries: ${groceries.tables} tables, stats: ${stats.tables} tables, ai: ${ai.tables} tables, movies: ${movies.tables} tables, worldtodo: ${worldtodo.tables} tables (${worldtodoTasks} tasks), notes: ${notes.tables} tables, math: ${math.tables} tables (${mathChapters} chapters), plant: ${plant.tables} tables (${plantEntries} entries), app read/write, personal_ro none; energy: ${energy.hours} hourly rows, latest ${energy.latest ? new Date(energy.latest).toISOString() : 'none'}` + `health: ${health.tables} tables, tasks: ${tasks.tables} tables, groceries: ${groceries.tables} tables, stats: ${stats.tables} tables, ai: ${ai.tables} tables, movies: ${movies.tables} tables, worldtodo: ${worldtodo.tables} tables (${worldtodoTasks} tasks), notes: ${notes.tables} tables, math: ${math.tables} tables (${mathChapters} chapters), plant: ${plant.tables} tables (${plantEntries} entries), radio: ${radio.tables} tables (${radioFreqs} frequencies), app read/write, personal_ro none; energy: ${energy.hours} hourly rows, latest ${energy.latest ? new Date(energy.latest).toISOString() : 'none'}` ); const [catalog] = await client` select diff --git a/scripts/radio.ts b/scripts/radio.ts new file mode 100644 index 0000000..0e9af55 --- /dev/null +++ b/scripts/radio.ts @@ -0,0 +1,263 @@ +/** + * Radio tracker jobs (/trackers/radio). Runs inside the app container like cs-prices: + * + * bun scripts/radio.ts iss fetch the ISS TLE from Celestrak, compute the next 5 days of + * passes over Gouda into radio.iss_passes (daily timer) + * bun scripts/radio.ts remind ntfy reminder 10 minutes before each net (remind = true) and + * each ISS pass with max elevation >= 10 deg (every-minute timer) + * bun scripts/radio.ts upcoming print what the next 24 h of reminders would be (no sending) + * + * Reminders go to RADIO_NTFY_URL (an ntfy topic URL, optional RADIO_NTFY_TOKEN), passed in with + * `docker exec --env-file ~/.config/radio.env`. radio.reminders makes every reminder fire once. + */ +import postgres from 'postgres'; +import * as sat from 'satellite.js'; +import { + ISS_DOWNLINK_HZ, + ISS_MIN_EL, + REMIND_MINUTES, + compass, + fmtTime, + formatFreq, + occurrences +} from '../src/lib/radio/index'; + +if (!process.env.DB_URL) throw new Error('DB_URL is required'); +const sql = postgres(process.env.DB_URL, { max: 2, onnotice: () => {} }); +const mode = process.argv[2] ?? 'remind'; +const PAGE = 'https://stanrunge.dev/trackers/radio'; + +// Gouda (approx), 0 m. +const OBSERVER = { + latitude: sat.degreesToRadians(52.011), + longitude: sat.degreesToRadians(4.711), + height: 0 +}; +const TLE_URL = 'https://celestrak.org/NORAD/elements/gp.php?CATNR=25544&FORMAT=tle'; +const DAYS = 5; +const STEP_S = 10; +const KM_PER_AU = 149_597_870.7; + +async function fetchTle() { + const res = await fetch(TLE_URL, { + headers: { 'User-Agent': 'stanrunge.dev radio-tracker/1.0 (daily ISS passes)' }, + signal: AbortSignal.timeout(20_000) + }); + if (!res.ok) throw new Error(`Celestrak ${res.status}`); + const lines = (await res.text()) + .split(/\r?\n/) + .map((l) => l.trimEnd()) + .filter(Boolean); + const i = lines.findIndex((l) => l.startsWith('1 25544')); + if (i < 0 || !lines[i + 1]?.startsWith('2 25544')) throw new Error('No ISS TLE in the response'); + return { + name: (i > 0 ? lines[i - 1] : 'ISS (ZARYA)').trim(), + line1: lines[i], + line2: lines[i + 1] + }; +} + +function look(satrec: sat.SatRec, at: Date) { + const pv = sat.propagate(satrec, at); + if (!pv || typeof pv.position === 'boolean' || !pv.position) return null; + const gmst = sat.gstime(at); + const la = sat.ecfToLookAngles(OBSERVER, sat.eciToEcf(pv.position, gmst)); + return { + el: sat.radiansToDegrees(la.elevation), + az: sat.radiansToDegrees(la.azimuth), + eci: pv.position, + gmst + }; +} + +/** ISS in sunlight while the sun is >= 6 deg below the observer's horizon (naked-eye visible). */ +function sunlitInDarkSky(at: Date, eci: sat.EciVec3, gmst: number) { + const jd = sat.jday(at); + const { rsun } = sat.sunPos(jd); + const sunKm = { x: rsun.x * KM_PER_AU, y: rsun.y * KM_PER_AU, z: rsun.z * KM_PER_AU }; + const sunEl = sat.radiansToDegrees( + sat.ecfToLookAngles(OBSERVER, sat.eciToEcf(sunKm, gmst)).elevation + ); + return sunEl < -6 && sat.shadowFraction(rsun, eci) < 0.5; +} + +type Pass = { + start_at: Date; + max_at: Date; + end_at: Date; + max_el: number; + start_az: number; + max_az: number; + end_az: number; + sunlit: boolean; +}; + +function passes(satrec: sat.SatRec, from: Date, days: number): Pass[] { + const out: Pass[] = []; + const end = from.getTime() + days * 86_400_000; + let cur: Pass | null = null; + let prevEl = -90; + for (let t = from.getTime(); t <= end; t += STEP_S * 1000) { + const at = new Date(t); + const l = look(satrec, at); + if (!l) continue; + if (l.el >= 0 && prevEl < 0) { + cur = { + start_at: at, + max_at: at, + end_at: at, + max_el: l.el, + start_az: l.az, + max_az: l.az, + end_az: l.az, + sunlit: false + }; + } + if (cur && l.el >= 0) { + if (l.el > cur.max_el) Object.assign(cur, { max_el: l.el, max_at: at, max_az: l.az }); + if (!cur.sunlit && l.el >= ISS_MIN_EL && sunlitInDarkSky(at, l.eci, l.gmst)) + cur.sunlit = true; + cur.end_at = at; + cur.end_az = l.az; + } + if (cur && l.el < 0) { + // Skip a pass already in progress at the start of the window. + if (cur.start_at.getTime() > from.getTime()) out.push(cur); + cur = null; + } + prevEl = l.el; + } + return out; +} + +async function refreshIss() { + const tle = await fetchTle(); + const satrec = sat.twoline2satrec(tle.line1, tle.line2); + const epoch = new Date((satrec.jdsatepoch - 2440587.5) * 86_400_000); + const now = new Date(); + const list = passes(satrec, now, DAYS).filter((p) => p.max_el >= 1); + await sql.begin(async (tx) => { + await tx`INSERT INTO radio.iss_tle (id, name, line1, line2, epoch, fetched_at) + VALUES (1, ${tle.name}, ${tle.line1}, ${tle.line2}, ${epoch}, now()) + ON CONFLICT (id) DO UPDATE SET name = EXCLUDED.name, line1 = EXCLUDED.line1, + line2 = EXCLUDED.line2, epoch = EXCLUDED.epoch, fetched_at = now()`; + // Future passes are replaced by the fresh prediction; past ones are kept a week. + await tx`DELETE FROM radio.iss_passes WHERE start_at > now() OR end_at < now() - interval '7 days'`; + if (list.length) + await tx`INSERT INTO radio.iss_passes ${tx(list)} ON CONFLICT (start_at) DO NOTHING`; + }); + const good = list.filter((p) => p.max_el >= ISS_MIN_EL).length; + console.log( + `${now.toISOString()} iss: TLE epoch ${epoch.toISOString()}, ${list.length} passes in ${DAYS} days (${good} >= ${ISS_MIN_EL} deg)` + ); +} + +async function ntfy(title: string, message: string, tags: string[]) { + const target = process.env.RADIO_NTFY_URL; + if (!target) { + console.log(`no RADIO_NTFY_URL; would send: ${title} | ${message}`); + return false; + } + const url = new URL(target); + const res = await fetch(url.origin, { + method: 'POST', + headers: { + 'content-type': 'application/json', + ...(process.env.RADIO_NTFY_TOKEN + ? { authorization: `Bearer ${process.env.RADIO_NTFY_TOKEN}` } + : {}) + }, + body: JSON.stringify({ + topic: url.pathname.replace(/^\/+|\/+$/g, ''), + title, + message, + click: PAGE, + tags, + priority: 3 + }), + signal: AbortSignal.timeout(10_000) + }).catch(() => null); + return Boolean(res?.ok); +} + +type Due = { + kind: 'net' | 'iss'; + refId: number; + at: Date; + title: string; + message: string; + tags: string[]; +}; + +async function due(from: Date, to: Date): Promise { + const out: Due[] = []; + const nets = await sql`SELECT n.id, n.name, n.days, n.times, n.active, n.notes, + f.freq_hz::float8 AS hz, f.mode, f.marine_ch + FROM radio.nets n LEFT JOIN radio.frequencies f ON f.id = n.frequency_id + WHERE n.remind AND n.active`; + for (const n of nets) { + for (const at of occurrences( + { id: n.id, days: n.days.map(Number), times: n.times }, + from, + to + )) { + const freq = n.hz + ? `${formatFreq(n.hz)} ${n.mode}${n.marine_ch ? ` (marine ch ${n.marine_ch})` : ''}` + : ''; + out.push({ + kind: 'net', + refId: n.id, + at, + title: `${n.name} at ${fmtTime(at)}`, + message: [`Starts in ${REMIND_MINUTES} min`, freq].filter(Boolean).join(' · '), + tags: ['radio'] + }); + } + } + const iss = await sql`SELECT start_at, max_at, end_at, max_el, start_az, max_az, end_az, sunlit + FROM radio.iss_passes WHERE start_at > ${from} AND start_at <= ${to} AND max_el >= ${ISS_MIN_EL}`; + for (const p of iss) { + const mins = Math.round((p.end_at.getTime() - p.start_at.getTime()) / 60_000); + out.push({ + kind: 'iss', + refId: 0, + at: p.start_at, + title: `ISS pass at ${fmtTime(p.start_at)}, max ${Math.round(p.max_el)}°`, + message: + `${fmtTime(p.start_at)} ${compass(p.start_az)} → max ${Math.round(p.max_el)}° ${compass(p.max_az)} at ${fmtTime(p.max_at)} → ${compass(p.end_az)} ${fmtTime(p.end_at)} (${mins} min)` + + ` · listen on ${formatFreq(ISS_DOWNLINK_HZ)} NFM` + + (p.sunlit ? ' · visible to the eye' : ''), + tags: ['satellite'] + }); + } + return out.sort((a, b) => a.at.getTime() - b.at.getTime()); +} + +async function remind() { + const now = new Date(); + const list = await due(now, new Date(now.getTime() + REMIND_MINUTES * 60_000)); + for (const r of list) { + const [claimed] = await sql`INSERT INTO radio.reminders (kind, ref_id, at) + VALUES (${r.kind}, ${r.refId}, ${r.at}) ON CONFLICT DO NOTHING RETURNING at`; + if (!claimed) continue; + const ok = await ntfy(r.title, r.message, r.tags); + if (!ok) { + // Let the next minute's run try again (it stops once the event has started). + await sql`DELETE FROM radio.reminders WHERE kind = ${r.kind} AND ref_id = ${r.refId} AND at = ${r.at}`; + console.log(`${now.toISOString()} remind FAILED: ${r.title}`); + } else console.log(`${now.toISOString()} reminded: ${r.title} | ${r.message}`); + } + await sql`DELETE FROM radio.reminders WHERE at < now() - interval '30 days'`; +} + +try { + if (mode === 'iss') await refreshIss(); + else if (mode === 'remind') await remind(); + else if (mode === 'upcoming') { + const now = new Date(); + for (const r of await due(now, new Date(now.getTime() + 86_400_000))) + console.log(`${r.at.toISOString()} ${r.kind}: ${r.title} | ${r.message}`); + } else throw new Error(`unknown mode ${mode} (iss | remind | upcoming)`); +} finally { + await sql.end(); +} diff --git a/src/lib/projects.ts b/src/lib/projects.ts index bbfb360..de3db94 100644 --- a/src/lib/projects.ts +++ b/src/lib/projects.ts @@ -394,6 +394,13 @@ const allTrackers: readonly (Tracker & { private: boolean })[] = [ external: false, private: true }, + { + name: 'radio', + subtitle: 'scanner frequencies, banks, nets, ISS passes and my listening log', + href: '/trackers/radio', + external: false, + private: true + }, { name: 'math', subtitle: "working through Evan Chen's Napkin: chapters, exercises and notes", diff --git a/src/lib/radio/BandIcon.svelte b/src/lib/radio/BandIcon.svelte new file mode 100644 index 0000000..9d487e2 --- /dev/null +++ b/src/lib/radio/BandIcon.svelte @@ -0,0 +1,40 @@ + + + + + diff --git a/src/lib/radio/Banks.svelte b/src/lib/radio/Banks.svelte new file mode 100644 index 0000000..43e49ff --- /dev/null +++ b/src/lib/radio/Banks.svelte @@ -0,0 +1,285 @@ + + +
+
+
+ {#each perBank as n, i (i)} + + {/each} +
+ CSV +
+

+ Bank {bank}: channels {bankRange(bank)[0]}–{bankRange(bank)[1]} · {channels.length} of 500 programmed + · Uniden UBC125XLT layout (model unconfirmed) +

+ +
+ {#each slots as ch (ch)} + {@const c = byCh.get(ch)} + {@const f = c ? byId.get(c.frequencyId) : undefined} + + {/each} +
+ + {#if selected} + {@const f = sel ? byId.get(sel.frequencyId) : undefined} +
+ async ({ result, update }) => { + if (result.type === 'failure') error = String(result.data?.message ?? 'Could not save.'); + else { + error = null; + await update({ reset: false }); + } + }} + > + +
+ Channel {selected} + +
+ {#key selected} + + +
+ + + +
+ {/key} + {#if f?.notes}

{f.notes}

{/if} +
+ {#if error}{error}{/if} + {#if sel}{/if} + +
+
+ {/if} +
+ + diff --git a/src/lib/radio/FreqForm.svelte b/src/lib/radio/FreqForm.svelte new file mode 100644 index 0000000..d0b9dc9 --- /dev/null +++ b/src/lib/radio/FreqForm.svelte @@ -0,0 +1,75 @@ + + +
+ async ({ result, update }) => { + if (result.type === 'failure') error = String(result.data?.message ?? 'Could not save.'); + else { + error = null; + await update({ reset: !freq }); + ondone?.(); + } + }} +> + {#if freq}{/if} + + + + + + + + +
+ {#if error}{error}{/if} + {#if freq} + + {/if} + {#if ondone}{/if} + +
+
diff --git a/src/lib/radio/FreqList.svelte b/src/lib/radio/FreqList.svelte new file mode 100644 index 0000000..b5eba0d --- /dev/null +++ b/src/lib/radio/FreqList.svelte @@ -0,0 +1,241 @@ + + +
+
+ + +
+
+ + {#each BANDS.filter((b) => counts[b]) as b (b)} + + {/each} +
+ {#if adding} (adding = false)} />{/if} + +
    + {#each shown as f (f.id)} +
  • + {#if editing === f.id} + (editing = null)} /> + {:else} +
    + + {formatFreq(f.freqHz, false)}{f.freqHz < 30e6 ? 'kHz' : 'MHz'} + {f.mode} +
    + {f.name} + + {#if f.marineCh}ch {f.marineCh}{/if} + {#if f.location}{f.location}{/if} + {#each f.tags as t (t)}{t}{/each} + {#if f.notes}{f.notes}{/if} + +
    +
    + {#each f.channels as c (c)}{c}{/each} + {#if f.logCount}{f.logCount}×{/if} +
    + +
    + {/if} +
  • + {:else} +
  • No frequencies match.
  • + {/each} +
+
+ + diff --git a/src/lib/radio/IssPasses.svelte b/src/lib/radio/IssPasses.svelte new file mode 100644 index 0000000..65a1c51 --- /dev/null +++ b/src/lib/radio/IssPasses.svelte @@ -0,0 +1,192 @@ + + +{#if !compact} +
+

+ Gouda (52.011 N, 4.711 E) · listen on {formatFreq(ISS_DOWNLINK_HZ)} NFM + (ARISS voice / SSTV) · + = sunlit in a dark sky, visible to the eye +

+ +
+{/if} +{#if days.length} + {#each days as d (d.key)} +

{d.label}

+ + {/each} +{:else} +

No passes computed yet (the daily refresh fills this).

+{/if} +{#if !compact && tle} +

+ {tle.name} TLE from Celestrak, epoch {tle.epoch ? fmtAgo(tle.epoch) : '?'}, fetched {tle.fetchedAt + ? fmtAgo(tle.fetchedAt) + : '?'} (refreshed daily). +

+{/if} + + diff --git a/src/lib/radio/LogList.svelte b/src/lib/radio/LogList.svelte new file mode 100644 index 0000000..d005ba8 --- /dev/null +++ b/src/lib/radio/LogList.svelte @@ -0,0 +1,126 @@ + + +{#each days as d (d.key)} +

{d.label}

+ +{:else} +

Nothing logged yet. Heard something? Log it above.

+{/each} + + diff --git a/src/lib/radio/Nets.svelte b/src/lib/radio/Nets.svelte new file mode 100644 index 0000000..3c8e3ea --- /dev/null +++ b/src/lib/radio/Nets.svelte @@ -0,0 +1,283 @@ + + +{#snippet form(n: Net | null)} +
+ async ({ result, update }) => { + if (result.type === 'failure') error = String(result.data?.message ?? 'Could not save.'); + else { + error = null; + await update(); + editing = null; + } + }} + > + {#if n}{/if} + + + +
+ days + {#each DAY_SHORT as d, i (d)} + + {/each} +
+ + + + +
+ {#if error}{error}{/if} + {#if n} + + {/if} + + +
+
+{/snippet} + +
+
+

+ Times are Amsterdam time. A bell sends an ntfy reminder {REMIND_MINUTES} minutes before each start. +

+ +
+ {#if editing === 'new'}{@render form(null)}{/if} + +
+ + diff --git a/src/lib/radio/QuickLog.svelte b/src/lib/radio/QuickLog.svelte new file mode 100644 index 0000000..0420034 --- /dev/null +++ b/src/lib/radio/QuickLog.svelte @@ -0,0 +1,179 @@ + + +
{ + busy = true; + return async ({ update, result }) => { + await update(); + busy = false; + if (result.type === 'success') { + signal = null; + earlier = false; + } + }; + }} +> +
+ + +
+ + {#each options as o (o.value)}{/each} + +
+
+ {#each [1, 2, 3, 4, 5] as s (s)} + + {/each} +
+ + +
+ {#if earlier} +
+ + +
+ {/if} + {#if message}

{message}

{/if} +
+ + diff --git a/src/lib/radio/Signal.svelte b/src/lib/radio/Signal.svelte new file mode 100644 index 0000000..43a35a6 --- /dev/null +++ b/src/lib/radio/Signal.svelte @@ -0,0 +1,29 @@ + + +{#if value} + + {#each [1, 2, 3, 4, 5] as i (i)}{/each} + +{/if} + + diff --git a/src/lib/radio/Tile.svelte b/src/lib/radio/Tile.svelte new file mode 100644 index 0000000..b13ba68 --- /dev/null +++ b/src/lib/radio/Tile.svelte @@ -0,0 +1,34 @@ + + + + + diff --git a/src/lib/radio/UpNext.svelte b/src/lib/radio/UpNext.svelte new file mode 100644 index 0000000..a87b886 --- /dev/null +++ b/src/lib/radio/UpNext.svelte @@ -0,0 +1,186 @@ + + +{#if items.length} +
    + {#each items as it (it.key)} + {@const live = it.at <= now && (it.end ?? it.at) >= now} +
  1. + {#if it.iss}{:else}{/if} +
    + {it.title} + {it.sub} +
    +
    + {relDay(it.at, now)} {fmtTime(it.at)} + {live ? 'on now' : until(it.at, now)}{#if it.remind}{/if} +
    +
  2. + {/each} +
+{:else} +

Nothing scheduled in the next 3 days.

+{/if} + + diff --git a/src/lib/radio/index.test.ts b/src/lib/radio/index.test.ts new file mode 100644 index 0000000..1b2b871 --- /dev/null +++ b/src/lib/radio/index.test.ts @@ -0,0 +1,79 @@ +import { describe, expect, it } from 'vitest'; +import { alphaTag, bankOf, nextOccurrence, occurrences, parseFreq, scannerCsv } from './index'; + +describe('parseFreq', () => { + it('reads MHz, kHz and Hz', () => { + expect(parseFreq('145.450')).toBe(145_450_000); + expect(parseFreq('145,45 MHz')).toBe(145_450_000); + expect(parseFreq('3785 kHz')).toBe(3_785_000); + expect(parseFreq('3785')).toBe(3_785_000); + expect(parseFreq('145450000')).toBe(145_450_000); + expect(parseFreq('ch 16')).toBeNull(); + expect(parseFreq('')).toBeNull(); + }); +}); + +describe('net schedule', () => { + const ronde = { id: 1, days: [1, 2, 3, 4, 5], times: ['11:00'] }; + it('puts weekday nets on Amsterdam time across the DST switch', () => { + // Sat 24 Oct 2026 .. Sat 31 Oct 2026; DST ends Sun 25 Oct. + const occ = occurrences( + ronde, + new Date('2026-10-24T00:00:00Z'), + new Date('2026-10-31T00:00:00Z') + ); + expect(occ.map((d) => d.toISOString())).toEqual([ + '2026-10-26T10:00:00.000Z', + '2026-10-27T10:00:00.000Z', + '2026-10-28T10:00:00.000Z', + '2026-10-29T10:00:00.000Z', + '2026-10-30T10:00:00.000Z' + ]); + const summer = occurrences( + ronde, + new Date('2026-07-01T00:00:00Z'), + new Date('2026-07-02T00:00:00Z') + ); + expect(summer[0].toISOString()).toBe('2026-07-01T09:00:00.000Z'); + }); + it('finds the next occurrence and skips nets without a time', () => { + expect(nextOccurrence(ronde, new Date('2026-10-30T10:30:00Z'))?.toISOString()).toBe( + '2026-11-02T10:00:00.000Z' + ); + expect(nextOccurrence({ id: 2, days: [7], times: [] }, new Date())).toBeNull(); + }); +}); + +describe('scanner', () => { + it('maps channels to 10 banks of 50', () => { + expect(bankOf(1)).toBe(1); + expect(bankOf(50)).toBe(1); + expect(bankOf(51)).toBe(2); + expect(bankOf(500)).toBe(10); + }); + it('exports all 500 channels in BC125AT_SS order', () => { + const csv = scannerCsv([ + { + channel: 301, + alphaTag: 'KUSTWACHT, 16', + freqHz: 156_800_000, + mode: 'FM', + delay: true, + lockout: false, + priority: true + } + ]); + const lines = csv.trimEnd().split('\r\n'); + expect(lines).toHaveLength(501); + expect(lines[0]).toBe( + 'Bank,Channel,Name,Frequency,Modulation,CTCSS/DCS,Delay,Lockout,Priority' + ); + expect(lines[301]).toBe('7,301,"KUSTWACHT, 16",156.8000,FM,OFF,2,OFF,ON'); + expect(lines[1]).toBe('1,1,,,AUTO,OFF,2,OFF,OFF'); + }); + it('keeps alpha tags within 16 characters', () => { + expect( + alphaTag('Kustwacht Wal Scheveningen weerbericht en navigatie').length + ).toBeLessThanOrEqual(16); + }); +}); diff --git a/src/lib/radio/index.ts b/src/lib/radio/index.ts new file mode 100644 index 0000000..de418d3 --- /dev/null +++ b/src/lib/radio/index.ts @@ -0,0 +1,314 @@ +// Radio tracker (/trackers/radio, owner-only): pure helpers shared by the page and +// scripts/radio.ts (ISS refresh + reminders). No server imports here: the script runs inside the +// app container, which ships src/lib/radio (see Dockerfile). + +export const TZ = 'Europe/Amsterdam'; + +export const BANDS = ['marine', 'air', 'ham', 'pmr', 'other'] as const; +export type Band = (typeof BANDS)[number]; +export const BAND_LABEL: Record = { + marine: 'marine', + air: 'airband', + ham: 'ham', + pmr: 'PMR', + other: 'other' +}; +/** Gradient per band: colourful icons on a black-and-white page. */ +export const BAND_COLOR: Record = { + marine: ['#38bdf8', '#0369a1'], + air: ['#a78bfa', '#5b21b6'], + ham: ['#fb7185', '#be123c'], + pmr: ['#fbbf24', '#b45309'], + other: ['#a1a1aa', '#3f3f46'] +}; + +export const MODES = ['FM', 'NFM', 'AM', 'USB', 'LSB', 'CW', 'DATA'] as const; +export type Mode = (typeof MODES)[number]; +/** Modes the UBC125XLT can store (AUTO aside); others export as AUTO. */ +export const SCANNER_MODES = new Set(['FM', 'NFM', 'AM']); + +/** Uniden UBC125XLT layout: 10 banks of 50 channels. */ +export const BANKS = 10; +export const PER_BANK = 50; +export const CHANNELS = BANKS * PER_BANK; +export const bankOf = (channel: number) => Math.floor((channel - 1) / PER_BANK) + 1; +export const bankRange = (bank: number) => [(bank - 1) * PER_BANK + 1, bank * PER_BANK] as const; +/** The UBC125XLT shows 16-character alpha tags. */ +export const ALPHA_TAG_MAX = 16; + +/** Minimum max-elevation for an ISS pass to count (shown highlighted, reminded). */ +export const ISS_MIN_EL = 10; +export const REMIND_MINUTES = 10; +export const ISS_DOWNLINK_HZ = 145_800_000; + +export const DAY_SHORT = ['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun'] as const; + +/** 145450000 -> "145.4500" (MHz, 4 decimals like the scanner); below 30 MHz -> "3785 kHz". */ +export function formatFreq(hz: number | null | undefined, unit = true): string { + if (hz == null) return ''; + if (hz < 30_000_000) { + const khz = hz / 1000; + return `${Number.isInteger(khz) ? khz : khz.toFixed(1)}${unit ? ' kHz' : ''}`; + } + return `${(hz / 1e6).toFixed(4)}${unit ? ' MHz' : ''}`; +} + +/** MHz with 4 decimals, no unit (CSV/programming software). */ +export const mhz = (hz: number) => (hz / 1e6).toFixed(4); + +/** + * Parse a typed frequency: "145.45", "145.450 MHz", "3785 kHz", "3785k", "145450000". + * Bare numbers < 1000 are MHz, 1000..999999 kHz, larger Hz. Returns Hz or null. + */ +export function parseFreq(input: string | null | undefined): number | null { + if (!input) return null; + const s = input.trim().toLowerCase().replace(',', '.').replace(/\s+/g, ''); + const m = s.match(/^(\d+(?:\.\d+)?)(mhz|m|khz|k|hz)?$/); + if (!m) return null; + const n = Number(m[1]); + if (!Number.isFinite(n) || n <= 0) return null; + const u = m[2]; + let hz: number; + if (u === 'mhz' || u === 'm') hz = n * 1e6; + else if (u === 'khz' || u === 'k') hz = n * 1e3; + else if (u === 'hz') hz = n; + else if (n < 1000) hz = n * 1e6; + else if (n < 1_000_000) hz = n * 1e3; + else hz = n; + hz = Math.round(hz); + return hz >= 1000 && hz <= 10_000_000_000 ? hz : null; +} + +const COMPASS = ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW'] as const; +export const compass = (az: number) => COMPASS[Math.round((((az % 360) + 360) % 360) / 45) % 8]; + +// ---- time zones ------------------------------------------------------------------------------- + +const partsFmt = new Intl.DateTimeFormat('en-GB', { + timeZone: TZ, + hourCycle: 'h23', + year: 'numeric', + month: '2-digit', + day: '2-digit', + hour: '2-digit', + minute: '2-digit', + second: '2-digit', + weekday: 'short' +}); +const WD: Record = { Mon: 1, Tue: 2, Wed: 3, Thu: 4, Fri: 5, Sat: 6, Sun: 7 }; + +/** Wall-clock parts of an instant in Europe/Amsterdam (isoDay 1 = Monday). */ +export function zoned(at: Date) { + const p = Object.fromEntries(partsFmt.formatToParts(at).map((x) => [x.type, x.value])); + return { + y: Number(p.year), + m: Number(p.month), + d: Number(p.day), + h: Number(p.hour), + min: Number(p.minute), + s: Number(p.second), + isoDay: WD[p.weekday as string] ?? 1 + }; +} + +/** The instant at which Europe/Amsterdam's wall clock reads y-m-d h:min. */ +export function fromZoned(y: number, m: number, d: number, h: number, min: number): Date { + const guess = Date.UTC(y, m - 1, d, h, min); + // Offset at the guess, then correct once more for DST edges. + let t = guess; + for (let i = 0; i < 2; i++) { + const z = zoned(new Date(t)); + const asUtc = Date.UTC(z.y, z.m - 1, z.d, z.h, z.min, z.s); + t = guess - (asUtc - t); + } + return new Date(t); +} + +/** "11:00" / "11:00:00" -> [11, 0]. */ +export const hm = (t: string) => { + const [h, m] = t.split(':').map(Number); + return [h || 0, m || 0] as const; +}; + +export type NetSchedule = { id: number; days: number[]; times: string[]; active?: boolean }; + +/** Occurrences of a weekly schedule (Amsterdam wall time) between from and to. */ +export function occurrences(net: NetSchedule, from: Date, to: Date): Date[] { + if (net.active === false || !net.days.length || !net.times.length) return []; + const out: Date[] = []; + const start = zoned(new Date(from.getTime() - 86_400_000)); + // Walk calendar days in Amsterdam (via noon UTC so DST never skips a day). + let cursor = Date.UTC(start.y, start.m - 1, start.d, 12); + while (cursor <= to.getTime() + 86_400_000) { + const dt = new Date(cursor); + const y = dt.getUTCFullYear(); + const m = dt.getUTCMonth() + 1; + const d = dt.getUTCDate(); + const isoDay = ((dt.getUTCDay() + 6) % 7) + 1; + if (net.days.includes(isoDay)) { + for (const t of net.times) { + const [h, mi] = hm(t); + const at = fromZoned(y, m, d, h, mi); + if (at > from && at <= to) out.push(at); + } + } + cursor += 86_400_000; + } + return out.sort((a, b) => a.getTime() - b.getTime()); +} + +export const nextOccurrence = (net: NetSchedule, now: Date) => + occurrences(net, now, new Date(now.getTime() + 8 * 86_400_000))[0] ?? null; + +const timeFmt = new Intl.DateTimeFormat('en-GB', { + timeZone: TZ, + hour: '2-digit', + minute: '2-digit', + hourCycle: 'h23' +}); +const dayFmt = new Intl.DateTimeFormat('en-GB', { + timeZone: TZ, + weekday: 'short', + day: 'numeric', + month: 'short' +}); +export const fmtTime = (at: Date | string | number) => timeFmt.format(new Date(at)); +export const fmtDay = (at: Date | string | number) => dayFmt.format(new Date(at)); +/** Amsterdam calendar date "2026-10-26" (for grouping). */ +export const dayKey = (at: Date | string | number) => { + const z = zoned(new Date(at)); + return `${z.y}-${String(z.m).padStart(2, '0')}-${String(z.d).padStart(2, '0')}`; +}; +/** "today", "tomorrow" or "Wed 28 Oct". */ +export function relDay(at: Date | string | number, now: Date | number = Date.now()) { + const k = dayKey(at); + if (k === dayKey(now)) return 'today'; + if (k === dayKey(new Date(now).getTime() + 86_400_000)) return 'tomorrow'; + return fmtDay(at); +} +/** "in 5 min", "in 2 h 10 min", "now". */ +export function until(at: Date | string | number, now: Date | number = Date.now()) { + const mins = Math.round((new Date(at).getTime() - new Date(now).getTime()) / 60_000); + if (mins <= 0) return 'now'; + if (mins < 60) return `in ${mins} min`; + const h = Math.floor(mins / 60); + if (h < 24) return `in ${h} h${mins % 60 ? ` ${mins % 60} min` : ''}`; + const d = Math.round(h / 24); + return `in ${d} day${d === 1 ? '' : 's'}`; +} + +/** Days as text: [1,2,3,4,5] -> "weekdays", all 7 -> "daily", else "mon, wed". */ +export function daysLabel(days: number[]) { + const s = [...new Set(days)].sort(); + if (s.length === 7) return 'daily'; + if (s.join() === '1,2,3,4,5') return 'weekdays'; + if (s.join() === '6,7') return 'weekends'; + return s.map((d) => DAY_SHORT[d - 1]).join(', '); +} + +// ---- scanner CSV ------------------------------------------------------------------------------ + +export type ChannelRow = { + channel: number; + alphaTag: string | null; + freqHz: number | null; + mode: string | null; + delay: boolean; + lockout: boolean; + priority: boolean; +}; + +const csvCell = (v: string | number) => { + const s = String(v); + return /[",\n]/.test(s) ? `"${s.replace(/"/g, '""')}"` : s; +}; + +/** + * All 500 channels as CSV in the column order of Uniden's BC125AT/UBC125XLT programming software + * (BC125AT_SS: Channel, Name, Frequency, Modulation, CTCSS/DCS, Delay, Lockout, Priority) plus a + * leading Bank column. Empty channels are blank rows so the file always maps 1:1 to memories. + */ +export function scannerCsv(rows: ChannelRow[]): string { + const by = new Map(rows.map((r) => [r.channel, r])); + const lines = [ + [ + 'Bank', + 'Channel', + 'Name', + 'Frequency', + 'Modulation', + 'CTCSS/DCS', + 'Delay', + 'Lockout', + 'Priority' + ] + .map(csvCell) + .join(',') + ]; + for (let ch = 1; ch <= CHANNELS; ch++) { + const r = by.get(ch); + const has = r && r.freqHz != null; + lines.push( + [ + bankOf(ch), + ch, + has ? (r.alphaTag ?? '').slice(0, ALPHA_TAG_MAX) : '', + has ? mhz(r.freqHz!) : '', + has ? (SCANNER_MODES.has(r.mode ?? '') ? r.mode! : 'AUTO') : 'AUTO', + 'OFF', + has ? (r.delay ? 2 : 0) : 2, + has ? (r.lockout ? 'ON' : 'OFF') : 'OFF', + has ? (r.priority ? 'ON' : 'OFF') : 'OFF' + ] + .map(csvCell) + .join(',') + ); + } + return lines.join('\r\n') + '\r\n'; +} + +/** Short scanner tag from a station name (abbreviations, then cut to 16 characters). */ +export function alphaTag(name: string, marineCh?: string | null): string { + const ABBR: [RegExp, string][] = [ + [/\bSchiphol\b/gi, 'SPL'], + [/\bRotterdam\b/gi, 'RTM'], + [/\bScheveningen\b/gi, 'SCHEV'], + [/\bMaastricht\b/gi, 'MUAC'], + [/\bBrussel\b/gi, 'BRU'], + [/\bLondon\b/gi, 'LON'], + [/\bNieuw Milligen\b/gi, 'MIL'], + [/\bDordrecht\b/gi, 'DORD'], + [/\bKustwacht\b/gi, 'KWC'], + [/\bTower\b|\bToren\b/gi, 'TWR'], + [/\bApproach\b/gi, 'APP'], + [/\bArrival\b/gi, 'ARR'], + [/\bDeparture\b/gi, 'DEP'], + [/\bRadar\b/gi, 'RDR'], + [/\bOperations\b/gi, 'OPS'], + [/\bEurocontrol\b/gi, ''], + [/\bArea Control\b/gi, 'AC'], + [/\bSector\b/gi, ''], + [/\bBaan\b/gi, ''], + [/\bZweefvliegtuigen\b/gi, 'Gliders'], + [/\bInternational(e)?\b|\bInternationaal\b/gi, 'Intl'], + [/\bEmergency Frequency\b/gi, 'Emergency'], + [/\bReddings\s*Brigade\b/gi, 'RB'], + [/\bSluizen\b/gi, ''], + [/\bVolkeraksluizen\b/gi, 'Volkerak'], + [/\bSleep Dienst\b/gi, 'Tug'], + [/\bScheepvaartbedrijven\b|\bScheepvaart bedrijven\b/gi, 'Shipping'], + [/\bRijkswaterstaat\b/gi, 'RWS'], + [/\bLandelijk Scheepsportofoon\b/gi, 'Ship UHF'], + [/\bKanaal\b/gi, 'ch'], + [/\bSchip\b/gi, 'S'], + [/\bWal\b/gi, 'W'] + ]; + let s = name; + for (const [re, to] of ABBR) s = s.replace(re, to); + s = s + .replace(/\([^)]*\)/g, '') + .replace(/\s+/g, ' ') + .trim(); + if (marineCh) s = `${marineCh} ${s}`; + return s.slice(0, ALPHA_TAG_MAX).trim(); +} diff --git a/src/lib/server/db/schema/index.ts b/src/lib/server/db/schema/index.ts index 69e86cd..519c59c 100644 --- a/src/lib/server/db/schema/index.ts +++ b/src/lib/server/db/schema/index.ts @@ -35,3 +35,4 @@ export * from './osu-goals'; export * from './notes'; export * from './math'; export * from './plant'; +export * from './radio'; diff --git a/src/lib/server/db/schema/radio.ts b/src/lib/server/db/schema/radio.ts new file mode 100644 index 0000000..6596131 --- /dev/null +++ b/src/lib/server/db/schema/radio.ts @@ -0,0 +1,186 @@ +import { sql } from 'drizzle-orm'; +import { + bigint, + boolean, + check, + index, + integer, + primaryKey, + real, + smallint, + text, + uniqueIndex +} from 'drizzle-orm/pg-core'; +import { radioSchema } from './schemas'; +import { id, timestamps, timestamptz } from './helpers'; + +// Radio tracker (/trackers/radio, owner-only): frequencies, the scanner's memory banks (Uniden +// UBC125XLT, 10 x 50 channels), nets and broadcast schedules, ISS passes over Gouda and a +// listening log. scripts/radio.ts refreshes the ISS passes (daily timer) and sends the ntfy +// reminders (every-minute timer). Bands, modes and the bank layout live in #lib/radio. + +export const radioFrequencies = radioSchema.table( + 'frequencies', + { + id: id(), + freqHz: bigint('freq_hz', { mode: 'number' }).notNull(), + /** FM | NFM | AM | USB | LSB | CW | DATA */ + mode: text('mode').notNull().default('FM'), + /** marine | air | ham | pmr | other */ + band: text('band').notNull(), + name: text('name').notNull(), + location: text('location'), + notes: text('notes'), + /** Marine VHF channel number ("16", "83"), when it is one. */ + marineCh: text('marine_ch'), + tags: text('tags') + .array() + .notNull() + .default(sql`'{}'::text[]`), + source: text('source'), + ...timestamps + }, + (t) => [ + uniqueIndex('frequencies_freq_name_key').on(t.freqHz, t.name), + index('frequencies_band_idx').on(t.band), + check('frequencies_mode_check', sql`${t.mode} IN ('FM','NFM','AM','USB','LSB','CW','DATA')`), + check('frequencies_band_check', sql`${t.band} IN ('marine','air','ham','pmr','other')`), + check('frequencies_freq_check', sql`${t.freqHz} > 0`) + ] +); + +/** Scanner memories: channel 1..500 (bank = (channel - 1) / 50 + 1). */ +export const radioChannels = radioSchema.table( + 'channels', + { + channel: smallint('channel').primaryKey(), + frequencyId: integer('frequency_id') + .notNull() + .references(() => radioFrequencies.id, { onDelete: 'cascade', onUpdate: 'cascade' }), + /** Up to 16 characters on the UBC125XLT; null = derived from the frequency's name. */ + alphaTag: text('alpha_tag'), + delay: boolean('delay').notNull().default(true), + lockout: boolean('lockout').notNull().default(false), + priority: boolean('priority').notNull().default(false), + updatedAt: timestamptz('updated_at').notNull().defaultNow() + }, + (t) => [ + index('channels_frequency_idx').on(t.frequencyId), + check('channels_channel_check', sql`${t.channel} BETWEEN 1 AND 500`), + check('channels_alpha_tag_check', sql`char_length(${t.alphaTag}) <= 16`) + ] +); + +/** Nets and broadcasts on a weekly schedule, in Europe/Amsterdam wall time. */ +export const radioNets = radioSchema.table( + 'nets', + { + id: id(), + name: text('name').notNull(), + frequencyId: integer('frequency_id').references(() => radioFrequencies.id, { + onDelete: 'set null', + onUpdate: 'cascade' + }), + /** ISO weekdays, 1 = Monday .. 7 = Sunday. */ + days: smallint('days') + .array() + .notNull() + .default(sql`'{}'::smallint[]`), + /** "HH:MM" start times; empty = time unknown (listed, never reminded). */ + times: text('times') + .array() + .notNull() + .default(sql`'{}'::text[]`), + durationMin: integer('duration_min'), + kind: text('kind').notNull().default('net'), + notes: text('notes'), + /** ntfy reminder 10 minutes before each start. */ + remind: boolean('remind').notNull().default(true), + active: boolean('active').notNull().default(true), + sortOrder: integer('sort_order').notNull().default(0), + ...timestamps + }, + (t) => [ + check('nets_kind_check', sql`${t.kind} IN ('net','broadcast','other')`), + check('nets_days_check', sql`${t.days} <@ '{1,2,3,4,5,6,7}'::smallint[]`), + check( + 'nets_times_check', + sql`array_to_string(${t.times}, ',') ~ '^(([01][0-9]|2[0-3]):[0-5][0-9](,|$))*$'` + ) + ] +); + +/** ISS passes over Gouda (52.011 N, 4.711 E), from Celestrak's TLE, refreshed daily. */ +export const radioIssPasses = radioSchema.table( + 'iss_passes', + { + startAt: timestamptz('start_at').primaryKey(), + maxAt: timestamptz('max_at').notNull(), + endAt: timestamptz('end_at').notNull(), + /** Degrees above the horizon. */ + maxEl: real('max_el').notNull(), + /** Azimuths in degrees from north. */ + startAz: real('start_az').notNull(), + maxAz: real('max_az').notNull(), + endAz: real('end_az').notNull(), + /** The ISS is sunlit while the observer's sky is dark at max (naked-eye visible). */ + sunlit: boolean('sunlit').notNull().default(false), + computedAt: timestamptz('computed_at').notNull().defaultNow() + }, + (t) => [index('iss_passes_end_idx').on(t.endAt)] +); + +/** The TLE used for the passes (one row). */ +export const radioIssTle = radioSchema.table( + 'iss_tle', + { + id: smallint('id').primaryKey().default(1), + name: text('name').notNull(), + line1: text('line1').notNull(), + line2: text('line2').notNull(), + epoch: timestamptz('epoch').notNull(), + fetchedAt: timestamptz('fetched_at').notNull().defaultNow() + }, + (t) => [check('iss_tle_single_check', sql`${t.id} = 1`)] +); + +/** Listening log. */ +export const radioLog = radioSchema.table( + 'log', + { + id: id(), + heardAt: timestamptz('heard_at').notNull().defaultNow(), + frequencyId: integer('frequency_id').references(() => radioFrequencies.id, { + onDelete: 'set null', + onUpdate: 'cascade' + }), + /** What was tuned (kept even if the frequency row is deleted, or for one-offs). */ + freqHz: bigint('freq_hz', { mode: 'number' }), + mode: text('mode'), + what: text('what').notNull(), + /** 1 (barely) .. 5 (loud and clear). */ + signal: smallint('signal'), + notes: text('notes'), + createdAt: timestamptz('created_at').notNull().defaultNow() + }, + (t) => [ + index('log_heard_idx').on(t.heardAt), + index('log_frequency_idx').on(t.frequencyId), + check('log_signal_check', sql`${t.signal} BETWEEN 1 AND 5`) + ] +); + +/** Reminders already sent (kind 'net' + net id, or 'iss' + 0), so each fires once. */ +export const radioReminders = radioSchema.table( + 'reminders', + { + kind: text('kind').notNull(), + refId: integer('ref_id').notNull(), + at: timestamptz('at').notNull(), + sentAt: timestamptz('sent_at').notNull().defaultNow() + }, + (t) => [ + primaryKey({ columns: [t.kind, t.refId, t.at] }), + check('reminders_kind_check', sql`${t.kind} IN ('net','iss')`) + ] +); diff --git a/src/lib/server/db/schema/schemas.ts b/src/lib/server/db/schema/schemas.ts index c464795..e2c1f25 100644 --- a/src/lib/server/db/schema/schemas.ts +++ b/src/lib/server/db/schema/schemas.ts @@ -31,3 +31,4 @@ export const worldtodoSchema = pgSchema('worldtodo'); export const notesSchema = pgSchema('notes'); export const mathSchema = pgSchema('math'); export const plantSchema = pgSchema('plant'); +export const radioSchema = pgSchema('radio'); diff --git a/src/lib/server/owner.test.ts b/src/lib/server/owner.test.ts index db44b82..9017a46 100644 --- a/src/lib/server/owner.test.ts +++ b/src/lib/server/owner.test.ts @@ -51,6 +51,13 @@ describe('owner gate', () => { expect(isOwnerWritePath('/trackers/cargill')).toBe(true); expect(isOwnerWritePath('/trackers/cargill/glossary/ester')).toBe(true); }); + it('gates the whole radio tracker, reads, writes and the CSV export', () => { + expect(isOwnerOnlyPath('/trackers/radio')).toBe(true); + expect(isOwnerOnlyPath('/trackers/radio/__data.json')).toBe(true); + expect(isOwnerOnlyPath('/trackers/radio/banks.csv')).toBe(true); + expect(isOwnerOnlyPath('/trackers/radiox')).toBe(false); + expect(isOwnerWritePath('/trackers/radio')).toBe(true); + }); it('only lets the owner write in owner areas', () => { expect(isOwnerWritePath('/trackers/books/12')).toBe(true); expect(isOwnerWritePath('/trackers/books')).toBe(true); diff --git a/src/lib/server/owner.ts b/src/lib/server/owner.ts index a405e36..653aacc 100644 --- a/src/lib/server/owner.ts +++ b/src/lib/server/owner.ts @@ -42,6 +42,8 @@ export const ownerOnlyPrefixes = [ '/projects/worldwide-todo/api/queue', // Cargill plant tracker: what the factory I work at does. Mine only. '/trackers/cargill', + // Radio tracker: Opa's scanner frequencies, banks, nets, ISS passes and my log. Mine only. + '/trackers/radio', // Math tracker (the Napkin): owner-only while MATH_PRIVATE (#lib/math) is on. ...(MATH_PRIVATE ? (['/trackers/math'] as const) : []) ] as const; @@ -74,7 +76,8 @@ export const ownerWritePrefixes = [ '/trackers/ai', '/trackers/movies', '/trackers/math', - '/trackers/cargill' + '/trackers/cargill', + '/trackers/radio' ] as const; const normalise = (pathname: string) => pathname.toLowerCase().replace(/\/+$/, ''); diff --git a/src/lib/server/radio.ts b/src/lib/server/radio.ts new file mode 100644 index 0000000..23fad2d --- /dev/null +++ b/src/lib/server/radio.ts @@ -0,0 +1,368 @@ +// Radio tracker (/trackers/radio, owner-only): loads everything for the page and handles the +// owner's edits. Hand-written SQL on the shared postgres.js client; bigint Hz come back as +// float8 so they are plain numbers. +import { client } from '#lib/server/db/index.js'; +import { + ALPHA_TAG_MAX, + BANDS, + CHANNELS, + MODES, + alphaTag, + fromZoned, + parseFreq, + type ChannelRow +} from '#lib/radio/index.js'; + +export type Frequency = { + id: number; + freqHz: number; + mode: string; + band: string; + name: string; + location: string | null; + notes: string | null; + marineCh: string | null; + tags: string[]; + channels: number[]; + logCount: number; +}; +export type Channel = { + channel: number; + frequencyId: number; + alphaTag: string | null; + tag: string; + delay: boolean; + lockout: boolean; + priority: boolean; +}; +export type Net = { + id: number; + name: string; + frequencyId: number | null; + days: number[]; + times: string[]; + durationMin: number | null; + kind: string; + notes: string | null; + remind: boolean; + active: boolean; +}; +export type IssPass = { + startAt: string; + maxAt: string; + endAt: string; + maxEl: number; + startAz: number; + maxAz: number; + endAz: number; + sunlit: boolean; +}; +export type LogEntry = { + id: number; + heardAt: string; + frequencyId: number | null; + freqHz: number | null; + mode: string | null; + what: string; + signal: number | null; + notes: string | null; +}; + +const iso = (d: Date | string | null) => (d ? new Date(d).toISOString() : null); + +export async function loadRadio() { + const [freqs, chans, nets, passes, [tle], log, [logTotal]] = await Promise.all([ + client`SELECT f.id, f.freq_hz::float8 AS freq_hz, f.mode, f.band, f.name, f.location, f.notes, + f.marine_ch, f.tags, + coalesce((SELECT array_agg(c.channel ORDER BY c.channel) FROM radio.channels c + WHERE c.frequency_id = f.id), '{}') AS channels, + (SELECT count(*)::int FROM radio.log l WHERE l.frequency_id = f.id) AS log_count + FROM radio.frequencies f ORDER BY f.freq_hz, f.name`, + client`SELECT channel, frequency_id, alpha_tag, delay, lockout, priority + FROM radio.channels ORDER BY channel`, + client`SELECT id, name, frequency_id, days, times, duration_min, kind, notes, remind, active + FROM radio.nets ORDER BY sort_order, id`, + client`SELECT start_at, max_at, end_at, max_el, start_az, max_az, end_az, sunlit + FROM radio.iss_passes WHERE end_at > now() ORDER BY start_at LIMIT 60`, + client`SELECT name, epoch, fetched_at FROM radio.iss_tle WHERE id = 1`, + client`SELECT id, heard_at, frequency_id, freq_hz::float8 AS freq_hz, mode, what, signal, notes + FROM radio.log ORDER BY heard_at DESC, id DESC LIMIT 300`, + client`SELECT count(*)::int AS n FROM radio.log` + ]); + const frequencies: Frequency[] = freqs.map((f) => ({ + id: f.id, + freqHz: f.freq_hz, + mode: f.mode, + band: f.band, + name: f.name, + location: f.location, + notes: f.notes, + marineCh: f.marine_ch, + tags: f.tags ?? [], + channels: (f.channels ?? []).map(Number), + logCount: f.log_count + })); + const byId = new Map(frequencies.map((f) => [f.id, f])); + const channels: Channel[] = chans.map((c) => { + const f = byId.get(c.frequency_id); + return { + channel: c.channel, + frequencyId: c.frequency_id, + alphaTag: c.alpha_tag, + tag: c.alpha_tag ?? (f ? alphaTag(f.name, f.marineCh) : ''), + delay: c.delay, + lockout: c.lockout, + priority: c.priority + }; + }); + return { + frequencies, + channels, + nets: nets.map((n): Net => ({ + id: n.id, + name: n.name, + frequencyId: n.frequency_id, + days: (n.days ?? []).map(Number), + times: n.times ?? [], + durationMin: n.duration_min, + kind: n.kind, + notes: n.notes, + remind: n.remind, + active: n.active + })), + passes: passes.map((p): IssPass => ({ + startAt: iso(p.start_at)!, + maxAt: iso(p.max_at)!, + endAt: iso(p.end_at)!, + maxEl: p.max_el, + startAz: p.start_az, + maxAz: p.max_az, + endAz: p.end_az, + sunlit: p.sunlit + })), + tle: tle ? { name: tle.name, epoch: iso(tle.epoch), fetchedAt: iso(tle.fetched_at) } : null, + log: log.map((l): LogEntry => ({ + id: l.id, + heardAt: iso(l.heard_at)!, + frequencyId: l.frequency_id, + freqHz: l.freq_hz, + mode: l.mode, + what: l.what, + signal: l.signal, + notes: l.notes + })), + logTotal: logTotal.n as number + }; +} + +/** All channels with their frequency, for the CSV export. */ +export async function channelRows(): Promise { + const rows = await client`SELECT c.channel, c.alpha_tag, c.delay, c.lockout, c.priority, + f.freq_hz::float8 AS freq_hz, f.mode, f.name, f.marine_ch + FROM radio.channels c JOIN radio.frequencies f ON f.id = c.frequency_id ORDER BY c.channel`; + return rows.map((r) => ({ + channel: r.channel, + alphaTag: r.alpha_tag ?? alphaTag(r.name, r.marine_ch), + freqHz: r.freq_hz, + mode: r.mode, + delay: r.delay, + lockout: r.lockout, + priority: r.priority + })); +} + +// ---- actions ---------------------------------------------------------------------------------- + +type Result = { ok: true; message?: string } | { ok: false; message: string }; +const str = (form: FormData, k: string) => { + const v = form.get(k); + return typeof v === 'string' && v.trim() ? v.trim() : null; +}; +const int = (form: FormData, k: string) => { + const v = Number(str(form, k)); + return Number.isInteger(v) && v > 0 ? v : null; +}; +const tagsOf = (s: string | null) => + s + ? [ + ...new Set( + s + .split(/[,\s]+/) + .map((t) => t.trim().toLowerCase()) + .filter(Boolean) + ) + ] + : []; + +export async function saveFrequency(form: FormData): Promise { + const id = int(form, 'id'); + const freqHz = parseFreq(str(form, 'freq')); + if (!freqHz) return { ok: false, message: 'Frequency not understood (try 145.450 or 3785 kHz).' }; + const name = str(form, 'name'); + if (!name) return { ok: false, message: 'A name is needed.' }; + const mode = (str(form, 'mode') ?? 'FM').toUpperCase(); + if (!(MODES as readonly string[]).includes(mode)) return { ok: false, message: 'Unknown mode.' }; + const band = str(form, 'band') ?? 'other'; + if (!(BANDS as readonly string[]).includes(band)) return { ok: false, message: 'Unknown band.' }; + const v = { + freq_hz: freqHz, + mode, + band, + name, + location: str(form, 'location'), + notes: str(form, 'notes'), + marine_ch: str(form, 'marine_ch'), + tags: tagsOf(str(form, 'tags')) + }; + try { + if (id) { + await client`UPDATE radio.frequencies SET ${client(v)}, updated_at = now() WHERE id = ${id}`; + } else { + await client`INSERT INTO radio.frequencies ${client({ ...v, source: 'Stan' })}`; + } + } catch (e) { + if ((e as { code?: string }).code === '23505') + return { ok: false, message: 'That frequency with that name already exists.' }; + throw e; + } + return { ok: true }; +} + +export async function deleteFrequency(form: FormData): Promise { + const id = int(form, 'id'); + if (!id) return { ok: false, message: 'Missing id.' }; + await client`DELETE FROM radio.frequencies WHERE id = ${id}`; + return { ok: true }; +} + +export async function setChannel(form: FormData): Promise { + const channel = int(form, 'channel'); + if (!channel || channel > CHANNELS) return { ok: false, message: 'Channel must be 1-500.' }; + if (form.get('clear') === '1') { + await client`DELETE FROM radio.channels WHERE channel = ${channel}`; + return { ok: true }; + } + const frequencyId = int(form, 'frequency_id'); + if (!frequencyId) return { ok: false, message: 'Pick a frequency.' }; + const tag = str(form, 'alpha_tag'); + const v = { + channel, + frequency_id: frequencyId, + alpha_tag: tag ? tag.slice(0, ALPHA_TAG_MAX) : null, + delay: form.get('delay') === 'on', + lockout: form.get('lockout') === 'on', + priority: form.get('priority') === 'on' + }; + await client`INSERT INTO radio.channels ${client(v)} + ON CONFLICT (channel) DO UPDATE SET frequency_id = EXCLUDED.frequency_id, + alpha_tag = EXCLUDED.alpha_tag, delay = EXCLUDED.delay, lockout = EXCLUDED.lockout, + priority = EXCLUDED.priority, updated_at = now()`; + return { ok: true }; +} + +const TIME = /^([01]?\d|2[0-3])[:.]?([0-5]\d)$/; +export async function saveNet(form: FormData): Promise { + const id = int(form, 'id'); + const name = str(form, 'name'); + if (!name) return { ok: false, message: 'A name is needed.' }; + const days = form + .getAll('days') + .map(Number) + .filter((d) => d >= 1 && d <= 7); + const times: string[] = []; + for (const t of (str(form, 'times') ?? '').split(/[,\s]+/).filter(Boolean)) { + const m = t.match(TIME); + if (!m) return { ok: false, message: `Time "${t}" not understood (use 11:00).` }; + times.push(`${m[1].padStart(2, '0')}:${m[2]}`); + } + const kind = str(form, 'kind') ?? 'net'; + const v = { + name, + frequency_id: int(form, 'frequency_id'), + days: [...new Set(days)].sort(), + times: [...new Set(times)].sort(), + duration_min: int(form, 'duration_min'), + kind: ['net', 'broadcast', 'other'].includes(kind) ? kind : 'net', + notes: str(form, 'notes'), + remind: form.get('remind') === 'on', + active: form.get('active') !== 'off' + }; + if (id) await client`UPDATE radio.nets SET ${client(v)}, updated_at = now() WHERE id = ${id}`; + else await client`INSERT INTO radio.nets ${client(v)}`; + return { ok: true }; +} + +export async function toggleRemind(form: FormData): Promise { + const id = int(form, 'id'); + if (!id) return { ok: false, message: 'Missing id.' }; + await client`UPDATE radio.nets SET remind = NOT remind, updated_at = now() WHERE id = ${id}`; + return { ok: true }; +} + +export async function deleteNet(form: FormData): Promise { + const id = int(form, 'id'); + if (!id) return { ok: false, message: 'Missing id.' }; + await client`DELETE FROM radio.nets WHERE id = ${id}`; + return { ok: true }; +} + +/** + * Quick log: `freq` may be a frequency ("145.45"), a scanner channel ("ch 353"), or empty when a + * frequency_id is picked. A typed frequency links to the known frequency with that value. + */ +export async function addLog(form: FormData): Promise { + const what = str(form, 'what'); + if (!what) return { ok: false, message: 'What did you hear?' }; + let frequencyId = int(form, 'frequency_id'); + let freqHz: number | null = null; + let mode: string | null = str(form, 'mode'); + const typed = str(form, 'freq'); + if (typed && !frequencyId) { + const ch = typed.match(/^ch\s*(\d{1,3})$/i); + if (ch) { + const [r] = + await client`SELECT frequency_id FROM radio.channels WHERE channel = ${Number(ch[1])}`; + if (!r) return { ok: false, message: `Channel ${ch[1]} is empty.` }; + frequencyId = r.frequency_id; + } else { + freqHz = parseFreq(typed); + if (!freqHz) return { ok: false, message: 'Frequency not understood.' }; + const [r] = await client`SELECT id FROM radio.frequencies WHERE freq_hz = ${freqHz} + ORDER BY (SELECT count(*) FROM radio.channels c WHERE c.frequency_id = id) DESC, id LIMIT 1`; + if (r) frequencyId = r.id; + } + } + if (frequencyId) { + const [f] = + await client`SELECT freq_hz::float8 AS hz, mode FROM radio.frequencies WHERE id = ${frequencyId}`; + if (!f) return { ok: false, message: 'Unknown frequency.' }; + freqHz = f.hz; + mode ??= f.mode; + } + const signal = int(form, 'signal'); + // heard_at: "2026-10-26T18:05" from a datetime-local input is Amsterdam wall time. + const when = str(form, 'heard_at'); + let heardAt = new Date(); + if (when) { + const m = when.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})/); + if (!m) return { ok: false, message: 'Time not understood.' }; + heardAt = fromZoned(+m[1], +m[2], +m[3], +m[4], +m[5]); + } + await client`INSERT INTO radio.log ${client({ + heard_at: heardAt, + frequency_id: frequencyId, + freq_hz: freqHz, + mode, + what, + signal: signal && signal <= 5 ? signal : null, + notes: str(form, 'notes') + })}`; + return { ok: true, message: 'Logged.' }; +} + +export async function deleteLog(form: FormData): Promise { + const id = int(form, 'id'); + if (!id) return { ok: false, message: 'Missing id.' }; + await client`DELETE FROM radio.log WHERE id = ${id}`; + return { ok: true }; +} diff --git a/src/lib/tracker-icons.ts b/src/lib/tracker-icons.ts index 16846e2..13e7db5 100644 --- a/src/lib/tracker-icons.ts +++ b/src/lib/tracker-icons.ts @@ -103,6 +103,21 @@ export const trackerIcons: Record = { // factory: saw-tooth roof, chimney and windows paths: ['M3 20V10l5 3V10l5 3V10l5 3V4h3v16z', 'M7 17h1M11 17h1M15 17h1'] }, + radio: { + from: '#f43f5e', + to: '#881337', + ink: WHITE, + // radio tower with waves + paths: [ + 'M4.9 16.1C1 12.2 1 5.8 4.9 1.9', + 'M7.8 4.7a6.14 6.14 0 0 0-.8 7.5', + c(12, 9, 2), + 'M16.2 4.8c2 2 2.26 5.11.8 7.47', + 'M19.1 1.9a9.96 9.96 0 0 1 0 14.1', + 'M9.5 18h5', + 'm8 22 4-11 4 11' + ] + }, math: { from: '#60a5fa', to: '#1e40af', diff --git a/src/routes/trackers/radio/+page.server.ts b/src/routes/trackers/radio/+page.server.ts new file mode 100644 index 0000000..b22c4e7 --- /dev/null +++ b/src/routes/trackers/radio/+page.server.ts @@ -0,0 +1,51 @@ +import { requireOwner } from '#lib/server/owner.js'; +import { + addLog, + deleteFrequency, + deleteLog, + deleteNet, + loadRadio, + saveFrequency, + saveNet, + setChannel, + toggleRemind +} from '#lib/server/radio.js'; +import { fail, type RequestEvent } from '@sveltejs/kit'; +import type { Actions, PageServerLoad } from './$types'; + +// /trackers/radio: owner-only. Everyone else gets a 404 (here and in hooks.server.ts via +// ownerOnlyPrefixes); hooks.server.ts also sends cache-control: private, no-store. +export const load: PageServerLoad = async (event) => { + requireOwner(event); + return { + ...(await loadRadio()), + now: Date.now(), + seo: { + title: 'radio', + description: 'Frequencies, scanner banks, nets and ISS passes.', + index: false + } + }; +}; + +type Handler = ( + form: FormData +) => Promise<{ ok: true; message?: string } | { ok: false; message: string }>; +// Actions don't run the load, so each one checks the owner again. +const action = (name: string, fn: Handler) => async (event: RequestEvent) => { + requireOwner(event); + const r = await fn(await event.request.formData()); + if (!r.ok) return fail(400, { action: name, message: r.message }); + return { action: name, ok: true as const, message: r.message ?? null }; +}; + +export const actions: Actions = { + saveFreq: action('saveFreq', saveFrequency), + deleteFreq: action('deleteFreq', deleteFrequency), + channel: action('channel', setChannel), + saveNet: action('saveNet', saveNet), + deleteNet: action('deleteNet', deleteNet), + remind: action('remind', toggleRemind), + log: action('log', addLog), + deleteLog: action('deleteLog', deleteLog) +}; diff --git a/src/routes/trackers/radio/+page.svelte b/src/routes/trackers/radio/+page.svelte new file mode 100644 index 0000000..d2e2182 --- /dev/null +++ b/src/routes/trackers/radio/+page.svelte @@ -0,0 +1,458 @@ + + +
+
+ +
+

radio

+

Frequencies, scanner banks, nets, ISS passes over Gouda and what I heard.

+
+
+ + + + {#if tab === 'overview'} +
+
+

+ up next +

+ +
+
+

+ quick log +

+ +
+ +
+
+
+

+ next ISS passes + all +

+ +
+
+

+ scanner +

+

+ {data.channels.length} of 500 channels programmed, {data.frequencies.length} frequencies + known. +

+

+ Airband: banks 4–6 (scan 4 5 6). Marine: banks 7–10 (press SCAN, then 7 8 9 0). Uniden + UBC125XLT layout; check the label on the scanner to confirm the model. +

+ open banks +
+
+ {:else if tab === 'frequencies'} + + {:else if tab === 'banks'} + + {:else if tab === 'nets'} + + {:else if tab === 'iss'} +
+ {:else} +
+ +
+
+ {#if logFreq}

+ Showing one frequency. Show all +

{/if} + +
+ {/if} +
+ + diff --git a/src/routes/trackers/radio/banks.csv/+server.ts b/src/routes/trackers/radio/banks.csv/+server.ts new file mode 100644 index 0000000..0b29bd3 --- /dev/null +++ b/src/routes/trackers/radio/banks.csv/+server.ts @@ -0,0 +1,17 @@ +import { requireOwner } from '#lib/server/owner.js'; +import { channelRows } from '#lib/server/radio.js'; +import { scannerCsv } from '#lib/radio/index.js'; +import type { RequestHandler } from './$types'; + +// All 500 scanner memories as CSV (Uniden BC125AT/UBC125XLT programming software column order). +export const GET: RequestHandler = async (event) => { + requireOwner(event); + const csv = scannerCsv(await channelRows()); + return new Response(csv, { + headers: { + 'content-type': 'text/csv; charset=utf-8', + 'content-disposition': 'attachment; filename="ubc125xlt-banks.csv"', + 'cache-control': 'private, no-store' + } + }); +};