diff --git a/drizzle/20261024011919_money_bank_balance/migration.sql b/drizzle/20261024011919_money_bank_balance/migration.sql
new file mode 100644
index 0000000..d95cd05
--- /dev/null
+++ b/drizzle/20261024011919_money_bank_balance/migration.sql
@@ -0,0 +1,3 @@
+ALTER TABLE "money"."accounts" ADD COLUMN "bank_balance_cents" integer;--> statement-breakpoint
+ALTER TABLE "money"."accounts" ADD COLUMN "bank_balance_type" text;--> statement-breakpoint
+ALTER TABLE "money"."accounts" ADD COLUMN "bank_balance_at" timestamp with time zone;
\ No newline at end of file
diff --git a/drizzle/20261024011919_money_bank_balance/snapshot.json b/drizzle/20261024011919_money_bank_balance/snapshot.json
new file mode 100644
index 0000000..655ef94
--- /dev/null
+++ b/drizzle/20261024011919_money_bank_balance/snapshot.json
@@ -0,0 +1,12076 @@
+{
+ "version": "8",
+ "dialect": "postgres",
+ "id": "46aa2cce-9f94-40c6-ae0d-1489f5164c74",
+ "prevIds": [
+ "2aa940a3-e75f-4f6f-b12f-6935c9bd4f9c"
+ ],
+ "ddl": [
+ {
+ "name": "animaldex",
+ "entityType": "schemas"
+ },
+ {
+ "name": "auth",
+ "entityType": "schemas"
+ },
+ {
+ "name": "cs",
+ "entityType": "schemas"
+ },
+ {
+ "name": "games",
+ "entityType": "schemas"
+ },
+ {
+ "name": "health",
+ "entityType": "schemas"
+ },
+ {
+ "name": "house",
+ "entityType": "schemas"
+ },
+ {
+ "name": "meta",
+ "entityType": "schemas"
+ },
+ {
+ "name": "money",
+ "entityType": "schemas"
+ },
+ {
+ "name": "ref",
+ "entityType": "schemas"
+ },
+ {
+ "name": "site",
+ "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"
+ },
+ {
+ "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": "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": "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": "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": "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"
+ },
+ {
+ "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": "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": "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": "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": "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": "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": "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": "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": "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"
+ },
+ {
+ "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": 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": 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": "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
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "items_hash_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": "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": "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": "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": "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": 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": [
+ "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": "item_dimensions_item_id_items_id_fkey",
+ "entityType": "fks",
+ "schema": "cs",
+ "table": "item_dimensions"
+ },
+ {
+ "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": [
+ "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"
+ },
+ {
+ "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": [
+ "listing_id",
+ "observed_at"
+ ],
+ "nameExplicit": true,
+ "name": "price_history_pkey",
+ "entityType": "pks",
+ "schema": "house",
+ "table": "price_history"
+ },
+ {
+ "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": "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": "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": [
+ "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": "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"
+ },
+ {
+ "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": 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": 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"
+ },
+ {
+ "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": "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": "\"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": "\"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"
+ }
+ ],
+ "renames": []
+}
\ No newline at end of file
diff --git a/src/lib/server/bank-sync.test.ts b/src/lib/server/bank-sync.test.ts
index 43f0613..9fc53d7 100644
--- a/src/lib/server/bank-sync.test.ts
+++ b/src/lib/server/bank-sync.test.ts
@@ -6,6 +6,7 @@ import {
externalIdFor,
findMatch,
mapBankTransaction,
+ pickBalance,
planAccountMapping
} from './bank-sync';
import { createEnableBankingClient, parseAuthCode, type BankTransaction } from './enable-banking';
@@ -174,3 +175,18 @@ describe('enable banking client', () => {
expect(calls[0]).toContain('date_from=2026-01-01');
});
});
+
+describe('bank balance', () => {
+ const b = (balance_type: string, amount: string) => ({
+ balance_type,
+ balance_amount: { amount, currency: 'EUR' }
+ });
+ it('prefers the available balance the bank app shows', () => {
+ expect(pickBalance([b('CLBD', '70.00'), b('ITAV', '69.88')])?.balance_amount.amount).toBe(
+ '69.88'
+ );
+ expect(pickBalance([b('XPCD', '1.00'), b('CLBD', '2.00')])?.balance_type).toBe('CLBD');
+ expect(pickBalance([b('OTHR', '3.00')])?.balance_type).toBe('OTHR');
+ expect(pickBalance([])).toBeUndefined();
+ });
+});
diff --git a/src/lib/server/bank-sync.ts b/src/lib/server/bank-sync.ts
index 9046151..c2d1fdb 100644
--- a/src/lib/server/bank-sync.ts
+++ b/src/lib/server/bank-sync.ts
@@ -4,6 +4,7 @@
import { createHash } from 'node:crypto';
import type { Sql } from 'postgres';
import type {
+ Balance,
BankAccount,
BankTransaction,
EnableBankingClient,
@@ -255,6 +256,19 @@ export async function saveSession(
});
}
+/** The balance Stan sees in the bank app: interim available, else closing booked. */
+export function pickBalance(balances: Balance[]): Balance | undefined {
+ const order = ['ITAV', 'CLAV', 'ITBD', 'CLBD', 'XPCD'];
+ for (const type of order) {
+ const found = balances.find((b) => b.balance_type === type);
+ if (found) return found;
+ }
+ return balances[0];
+}
+
+/** Synthetic row that makes the tracker's sum equal the bank balance. */
+export const BALANCE_ADJUSTMENT_ID = 'balance-adjustment';
+
export type SyncOptions = {
dryRun?: boolean;
/** Match against the whole history of hand-entered rows (one-time), not just the window. */
@@ -273,6 +287,8 @@ export type AccountSyncResult = {
matched: number;
alreadyKnown: number;
balance?: string;
+ /** Bank balance minus the tracker's own rows, absorbed by the adjustment row. */
+ adjustmentCents?: number;
error?: string;
};
@@ -325,7 +341,10 @@ export async function syncBankAccounts(
result.fetched = raw.length;
const mapped = raw.map(mapBankTransaction).filter((t): t is MappedTransaction => t !== null);
result.booked = mapped.length;
- if (!mapped.length) continue;
+ if (!mapped.length) {
+ await syncBalance(sql, client, account, result, options, today, log);
+ continue;
+ }
const ids = mapped.map((t) => t.externalId);
const known = new Set(
@@ -382,17 +401,7 @@ export async function syncBankAccounts(
}
});
}
- try {
- const { balances } = await client.balances(account.external_uid);
- const preferred =
- balances.find((b) => b.balance_type === 'CLBD') ??
- balances.find((b) => b.balance_type === 'ITAV') ??
- balances[0];
- if (preferred)
- result.balance = `${preferred.balance_amount.amount} ${preferred.balance_amount.currency} (${preferred.balance_type})`;
- } catch {
- /* balances are informational only */
- }
+ await syncBalance(sql, client, account, result, options, today, log);
} catch (error) {
result.error = error instanceof Error ? error.message : String(error);
}
@@ -409,3 +418,58 @@ export async function syncBankAccounts(
}
return results;
}
+
+async function syncBalance(
+ sql: Sql,
+ client: EnableBankingClient,
+ account: { id: number; user_id: string; name: string; external_uid: string },
+ result: AccountSyncResult,
+ options: SyncOptions,
+ today: string,
+ log: (line: string) => void
+) {
+ let balances: Balance[];
+ try {
+ ({ balances } = await client.balances(account.external_uid));
+ } catch (error) {
+ log(`${account.name}: balance unavailable (${error instanceof Error ? error.message : error})`);
+ return;
+ }
+ const chosen = pickBalance(balances);
+ if (!chosen) return;
+ const bankCents = amountToCents(chosen.balance_amount.amount);
+ result.balance = `${chosen.balance_amount.amount} ${chosen.balance_amount.currency} (${chosen.balance_type})`;
+ await sql.begin(async (q) => {
+ const [row] = await q<{ tracked: number; adjustment: number | null; first: string | null }[]>`
+ select (a.opening_balance_cents + coalesce(sum(t.amount_cents) filter (
+ where t.date <= ${today} and t.external_id is distinct from ${BALANCE_ADJUSTMENT_ID}), 0))::int as tracked,
+ (select amount_cents from money.transactions
+ where account_id = a.id and external_id = ${BALANCE_ADJUSTMENT_ID}) as adjustment,
+ min(t.date)::text as first
+ from money.accounts a left join money.transactions t on t.account_id = a.id
+ where a.id = ${account.id} group by a.id`;
+ const needed = bankCents - row.tracked;
+ result.adjustmentCents = needed;
+ if (row.adjustment !== needed)
+ log(
+ `${account.name}: tracker rows sum differs from bank by ${(needed / 100).toFixed(2)}; adjustment ${row.adjustment ?? 'none'} -> ${needed}`
+ );
+ if (options.dryRun) return;
+ await q`
+ update money.accounts set bank_balance_cents = ${bankCents},
+ bank_balance_type = ${chosen.balance_type}, bank_balance_at = now()
+ where id = ${account.id}`;
+ if (row.adjustment === null) {
+ if (needed !== 0)
+ await q`
+ insert into money.transactions
+ (user_id, account_id, date, description, amount_cents, external_id, source, booking_status)
+ values (${account.user_id}, ${account.id}, ${row.first ?? today}, 'Bank balance adjustment',
+ ${needed}, ${BALANCE_ADJUSTMENT_ID}, 'enablebanking', 'ADJ')`;
+ } else if (row.adjustment !== needed) {
+ await q`
+ update money.transactions set amount_cents = ${needed}
+ where account_id = ${account.id} and external_id = ${BALANCE_ADJUSTMENT_ID}`;
+ }
+ });
+}
diff --git a/src/lib/server/db/schema/money-tracker.ts b/src/lib/server/db/schema/money-tracker.ts
index 1fb9280..361ad6e 100644
--- a/src/lib/server/db/schema/money-tracker.ts
+++ b/src/lib/server/db/schema/money-tracker.ts
@@ -32,6 +32,10 @@ export const moneyAccounts = moneySchema.table(
// Bank-side account identifier (Enable Banking account uid) for synced accounts.
externalUid: text('external_uid'),
provider: text('provider').notNull().default('manual'),
+ // Last balance reported by the bank (synced accounts); the source of truth for the total.
+ bankBalanceCents: integer('bank_balance_cents'),
+ bankBalanceType: text('bank_balance_type'),
+ bankBalanceAt: timestamptz('bank_balance_at'),
...timestamps
},
(table) => [
diff --git a/src/routes/projects/money-tracker/+page.svelte b/src/routes/projects/money-tracker/+page.svelte
index a5e7c7c..cdac87d 100644
--- a/src/routes/projects/money-tracker/+page.svelte
+++ b/src/routes/projects/money-tracker/+page.svelte
@@ -367,7 +367,18 @@
onclick={() => toggleAccount(account.id)}
>{@render swatch(account.id)}{account.name}{account.kind} · opening {amount(account.openingBalanceCents)}{account.kind} · {#if account.bankBalanceAt}bank {amount(
+ account.bankBalanceCents ?? 0
+ )}, {new Date(account.bankBalanceAt).toLocaleDateString('en-GB', {
+ day: 'numeric',
+ month: 'short',
+ hour: '2-digit',
+ minute: '2-digit'
+ })}{#if account.bankBalanceCents !== (balances.get(account.id) ?? 0)}
+ · differs from tracker{/if}{:else}opening {amount(account.openingBalanceCents)}{/if}{@render signed(balances.get(account.id) ?? 0)}