diff --git a/apps/api/.env.example b/apps/api/.env.example
index 5ccaed513..018f1aba4 100644
--- a/apps/api/.env.example
+++ b/apps/api/.env.example
@@ -17,6 +17,45 @@ VITNODE_API_URL=http://localhost:8000
# `{ rpId: "example.com", origins: [...] }` instead. Changing the RP ID later
# makes every existing passkey unusable.
+# === Single sign-on (server-only, never add these to clientEnv) ===
+# Discord, Google and Facebook are registered in `vitnode.api.config.ts`; the
+# others are commented out there until you configure them.
+# See https://vitnode.com/docs/dev/sso for each provider.
+# DISCORD_CLIENT_ID=
+# DISCORD_CLIENT_SECRET=
+# GOOGLE_CLIENT_ID=
+# GOOGLE_CLIENT_SECRET=
+# FACEBOOK_CLIENT_ID=
+# FACEBOOK_CLIENT_SECRET=
+# APPLE_CLIENT_ID=com.example.web
+# APPLE_TEAM_ID=
+# APPLE_KEY_ID=
+# APPLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
+# ATLASSIAN_CLIENT_ID=
+# ATLASSIAN_CLIENT_SECRET=
+# GITLAB_CLIENT_ID=
+# GITLAB_CLIENT_SECRET=
+# KICK_CLIENT_ID=
+# KICK_CLIENT_SECRET=
+# LINKEDIN_CLIENT_ID=
+# LINKEDIN_CLIENT_SECRET=
+# MICROSOFT_CLIENT_ID=
+# MICROSOFT_CLIENT_SECRET=
+# PAYPAL_CLIENT_ID=
+# PAYPAL_CLIENT_SECRET=
+# REDDIT_CLIENT_ID=
+# REDDIT_CLIENT_SECRET=
+# REDDIT_USER_AGENT="web:com.example.forum:1.0.0 (by /u/your_username)"
+# SLACK_CLIENT_ID=
+# SLACK_CLIENT_SECRET=
+# SLACK_TEAM_ID=
+# TIKTOK_CLIENT_KEY=
+# TIKTOK_CLIENT_SECRET=
+# TWITCH_CLIENT_ID=
+# TWITCH_CLIENT_SECRET=
+# TWITTER_CLIENT_ID=
+# TWITTER_CLIENT_SECRET=
+
# === CRON Secret for Internal API Calls ===
CRON_SECRET=your-secure-cron-secret-key
diff --git a/apps/api/migrations/20261030153537_sso_attempts_and_pending/migration.sql b/apps/api/migrations/20261030153537_sso_attempts_and_pending/migration.sql
new file mode 100644
index 000000000..ecba9f3d3
--- /dev/null
+++ b/apps/api/migrations/20261030153537_sso_attempts_and_pending/migration.sql
@@ -0,0 +1,33 @@
+CREATE TABLE "core_sso_attempts" (
+ "id" serial PRIMARY KEY,
+ "stateHash" varchar(64) NOT NULL UNIQUE,
+ "bindingHash" varchar(64) NOT NULL,
+ "providerId" varchar(255) NOT NULL,
+ "codeVerifier" varchar(128) NOT NULL,
+ "nonce" varchar(128) NOT NULL,
+ "createdAt" timestamp DEFAULT now() NOT NULL,
+ "expiresAt" timestamp NOT NULL
+);
+--> statement-breakpoint
+ALTER TABLE "core_sso_attempts" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
+CREATE TABLE "core_sso_pending" (
+ "id" serial PRIMARY KEY,
+ "tokenHash" varchar(64) NOT NULL UNIQUE,
+ "providerId" varchar(255) NOT NULL,
+ "providerAccountId" varchar(255) NOT NULL,
+ "providerUsername" varchar(255),
+ "profile" jsonb,
+ "email" varchar(255),
+ "confirmHash" varchar(64),
+ "confirmExpiresAt" timestamp,
+ "confirmSends" integer DEFAULT 0 NOT NULL,
+ "confirmSentAt" timestamp,
+ "createdAt" timestamp DEFAULT now() NOT NULL,
+ "expiresAt" timestamp NOT NULL
+);
+--> statement-breakpoint
+ALTER TABLE "core_sso_pending" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
+ALTER TABLE "core_users_sso_operations" ADD COLUMN "codeVerifier" varchar(128);--> statement-breakpoint
+ALTER TABLE "core_users_sso_operations" ADD COLUMN "nonce" varchar(128);--> statement-breakpoint
+CREATE INDEX "core_sso_attempts_expires_at_idx" ON "core_sso_attempts" ("expiresAt");--> statement-breakpoint
+CREATE INDEX "core_sso_pending_expires_at_idx" ON "core_sso_pending" ("expiresAt");
\ No newline at end of file
diff --git a/apps/api/migrations/20261030153537_sso_attempts_and_pending/snapshot.json b/apps/api/migrations/20261030153537_sso_attempts_and_pending/snapshot.json
new file mode 100644
index 000000000..c6c0b0313
--- /dev/null
+++ b/apps/api/migrations/20261030153537_sso_attempts_and_pending/snapshot.json
@@ -0,0 +1,22204 @@
+{
+ "version": "8",
+ "dialect": "postgres",
+ "id": "2ab8ec9e-8d1a-4774-8f8c-b04d780efaaf",
+ "prevIds": [
+ "50263672-7a4f-48ea-9374-78b5474879d5"
+ ],
+ "ddl": [
+ {
+ "isRlsEnabled": true,
+ "name": "core_admin_permissions",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_admin_sessions",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_ai_action_settings",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_ai_budget_periods",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_ai_calls",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_ai_cost_adjustments",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_ai_reservations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_ai_role_permissions",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_ai_role_policies",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_ai_runs",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_ai_settings",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_ai_translation_sources",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_ai_user_overrides",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_content_containers",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_content_documents",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_content_drafts",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_content_field_locks",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_content_submissions",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_content_file_refs",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_content_revisions",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_content_schedules",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_content_slug_history",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_cron",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_admin_dashboard",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_files",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_files_alt",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_files_alt_analysis",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_files_alt_state",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_languages",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_languages_words",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_logs",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_moderation_report_events",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_moderation_report_reasons",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_moderation_reports",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_moderators_permissions",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_notification_deliveries",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_notification_events",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_notification_receipts",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_notification_settings",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_notification_user_state",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_notifications",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_page_layouts",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_users_passkey_challenges",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_users_passkeys",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_queue",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_roles",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_search_index",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_search_popularity",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_secrets",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_sessions",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_sessions_known_devices",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_update_lock",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_update_results",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_update_sources",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_sso_attempts",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_sso_pending",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_users",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_users_confirm_emails",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_users_forgot_password",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_users_secondary_roles",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_users_sso",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_users_sso_operations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "core_users_sso_profile_sources",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "blog_categories",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "blog_categories_translations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "blog_comments",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "blog_posts",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "blog_posts_author_id",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "blog_posts_category_id",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "blog_posts_translations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "forum_comments",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "forum_topics",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_articles",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_bulletins",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_bulletins_translations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_categories",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_comments",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_events",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_events_gallery",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_events_related_events",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_events_sessions",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_events_tags",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_events_translations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_explainers",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_explainers_categories",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_explainers_faq",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_explainers_related_explainers",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_explainers_tags",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_explainers_translations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_letters",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_pages",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_stories",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_stories_gallery",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_tags",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_tags_related_tags",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "newsroom_tags_translations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "roleId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "protected",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "unrestricted",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'[]'",
+ "generated": null,
+ "identity": null,
+ "name": "permissions",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "token",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "lastSeen",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "expiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "deviceId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "actionKey",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "true",
+ "generated": null,
+ "identity": null,
+ "name": "enabled",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "modelId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "fallbackModelId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "maxInputCharacters",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "maxOutputTokens",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "timeoutMs",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "maxRetries",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "maxSteps",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "dailyLimit",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "instructions",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_action_settings"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_budget_periods"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "scopeKey",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_budget_periods"
+ },
+ {
+ "type": "varchar(10)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "unit",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_budget_periods"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "periodStart",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_budget_periods"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "periodEnd",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_budget_periods"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "limitAmount",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_budget_periods"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'0'",
+ "generated": null,
+ "identity": null,
+ "name": "spentAmount",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_budget_periods"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'0'",
+ "generated": null,
+ "identity": null,
+ "name": "reservedAmount",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_budget_periods"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "unknownCount",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_budget_periods"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_budget_periods"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "runId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "attempt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "modelId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "provider",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerModelId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerRequestId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "errorCode",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "inputTokens",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "outputTokens",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "cacheReadTokens",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "cacheWriteTokens",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "reasoningTokens",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "images",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "costUsd",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "costSource",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "costReason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pricingVersion",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pricingSnapshot",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "startedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "finishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "reconciledAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "callId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "runId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "previousCostUsd",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "previousSource",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "newCostUsd",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "newSource",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "deltaUsd",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "reason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_reservations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "runId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_reservations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "budgetPeriodId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_reservations"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "amount",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_reservations"
+ },
+ {
+ "type": "varchar(10)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'active'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_reservations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_reservations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "settledAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_reservations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "roleId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_role_permissions"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "permission",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_role_permissions"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "true",
+ "generated": null,
+ "identity": null,
+ "name": "granted",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_role_permissions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "dailyLimit",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_role_permissions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "roleId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_role_policies"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "monthlyPoints",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_role_policies"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "unlimited",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_role_policies"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_role_policies"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "actionKey",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(10)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "actorType",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "idempotencyKey",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "resourceType",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "resourceId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "errorCode",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "promptVersion",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pointsConversionVersion",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "modelId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "provider",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerModelId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "inputTokens",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "outputTokens",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "cacheReadTokens",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "cacheWriteTokens",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "reasoningTokens",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "costUsd",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "costSource",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "chargedUsd",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "chargedPoints",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'0'",
+ "generated": null,
+ "identity": null,
+ "name": "reservedUsd",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'0'",
+ "generated": null,
+ "identity": null,
+ "name": "reservedPoints",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'pending'",
+ "generated": null,
+ "identity": null,
+ "name": "settlement",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "leaseExpiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "accepted",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "acceptedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "sourceFingerprint",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "startedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "finishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "settledAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "true",
+ "generated": null,
+ "identity": null,
+ "name": "enabled",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "monthlyBudgetUsd",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "systemMonthlyBudgetUsd",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'0'",
+ "generated": null,
+ "identity": null,
+ "name": "defaultMonthlyPoints",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "pointsConversionVersion",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "10",
+ "generated": null,
+ "identity": null,
+ "name": "userRequestsPerMinute",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "2",
+ "generated": null,
+ "identity": null,
+ "name": "userConcurrency",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "2",
+ "generated": null,
+ "identity": null,
+ "name": "systemConcurrency",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "365",
+ "generated": null,
+ "identity": null,
+ "name": "historyRetentionDays",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "altEnabled",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "10",
+ "generated": null,
+ "identity": null,
+ "name": "altBatchSize",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "altScanCursor",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "altScanStartedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_settings"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "contentTypeId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "locale",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "field",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "sourceLocale",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "sourceFingerprint",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "targetFingerprint",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "type": "varchar(10)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "origin",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "updatedById",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_user_overrides"
+ },
+ {
+ "type": "numeric(24,12)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "monthlyPoints",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_user_overrides"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "unlimited",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_user_overrides"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "blocked",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_user_overrides"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_ai_user_overrides"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "definitionId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "parentId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "metadata",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "policies",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "contentTypeId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "field",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "type": "varchar(35)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "''",
+ "generated": null,
+ "identity": null,
+ "name": "language",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "type": "bytea",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "state",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "baseVersion",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "updatedBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "contentTypeId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "''",
+ "generated": null,
+ "identity": null,
+ "name": "language",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "values",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "baseVersion",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "updatedBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "contentTypeId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "field",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "''",
+ "generated": null,
+ "identity": null,
+ "name": "language",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "acquiredAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "expiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "contentTypeId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "containerDefinitionId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "containerId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "varchar(16)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "kind",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "varchar(16)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'pending'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "values",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "baseValues",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "baseVersion",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "baseUpdatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "authorId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "reviewerId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "reason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "revisionId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "decidedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_file_refs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "revisionId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_file_refs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "fileId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_file_refs"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_file_refs"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "contentTypeId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "operation",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "snapshot",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'[]'",
+ "generated": null,
+ "identity": null,
+ "name": "changedFields",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "varchar(16)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'system'",
+ "generated": null,
+ "identity": null,
+ "name": "actorType",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "actorUserId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "restoredFromRevisionId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "contentTypeId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "varchar(16)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "action",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "scheduledFor",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "generation",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "varchar(16)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'pending'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "createdBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "completedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastError",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "effectsError",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "contentTypeId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "type": "varchar(512)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "path",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "retiredAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_cron"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_cron"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "description",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_cron"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastRun",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_cron"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_cron"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_cron"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "module",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_cron"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "nextRun",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_cron"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "schedule",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_cron"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_dashboard"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_dashboard"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'[]'",
+ "generated": null,
+ "identity": null,
+ "name": "widgets",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_dashboard"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_dashboard"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_admin_dashboard"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "varchar(512)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "key",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "folder",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "mimeType",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "size",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "metadata",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "fingerprint",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "varchar(16)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'automatic'",
+ "generated": null,
+ "identity": null,
+ "name": "altPolicy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "fileId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageCode",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "text",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "type": "varchar(10)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "origin",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "fileFingerprint",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "runId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "updatedById",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt_analysis"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "fileId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt_analysis"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "fileFingerprint",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt_analysis"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "description",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt_analysis"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "runId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt_analysis"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt_analysis"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "fileId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt_state"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt_state"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastError",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt_state"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_files_alt_state"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "code",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'UTC'",
+ "generated": null,
+ "identity": null,
+ "name": "timezone",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "protected",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "default",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "time24",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages_words"
+ },
+ {
+ "type": "varchar",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageCode",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages_words"
+ },
+ {
+ "type": "varchar(50)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginCode",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages_words"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages_words"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "value",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages_words"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "tableName",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages_words"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "variable",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_languages_words"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "type": "varchar(10)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "type",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "content",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "type": "varchar(45)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "ipAddress",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "type": "varchar(10)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'GET'",
+ "generated": null,
+ "identity": null,
+ "name": "method",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'localhost'",
+ "generated": null,
+ "identity": null,
+ "name": "path",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userAgent",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "500",
+ "generated": null,
+ "identity": null,
+ "name": "statusCode",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "reportId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_events"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "type",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "actorId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_events"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "data",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_events"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_reasons"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "code",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_reasons"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "requiresDetails",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_reasons"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_reasons"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_reasons"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_report_reasons"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "targetType",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "targetId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "reporterId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "reason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "description",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "snapshot",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "varchar(500)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "targetTitle",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'new'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "assigneeId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "resolution",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "resolutionNote",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "resolvedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "resolvedById",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "scopeFamily",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "scopeId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "openKey",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "roleId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "protected",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "unrestricted",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'[]'",
+ "generated": null,
+ "identity": null,
+ "name": "permissions",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "type": "bigserial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "channel",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "mode",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "eventId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "idempotencyKey",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'pending'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "attempts",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "5",
+ "generated": null,
+ "identity": null,
+ "name": "maxAttempts",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "availableAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "periodStart",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "periodEnd",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "itemCount",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerMessageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "varchar(500)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastError",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "varchar(50)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "skipReason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "sentAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "type": "bigserial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "type",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "schemaVersion",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "idempotencyKey",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "actorId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "subjectType",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "subjectId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "groupKey",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "data",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 1,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "recipientIds",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "allowSelf",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'pending'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "recipientCursor",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "deliveredCount",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastError",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "completedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "eventId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "notificationId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "seq",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "emailPending",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "emailDeliveryId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "key",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_settings"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "value",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_settings"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_settings"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_user_state"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "unreadCount",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_user_state"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "revision",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_user_state"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "preferences",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_user_state"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notification_user_state"
+ },
+ {
+ "type": "bigserial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "type",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "varchar(50)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "category",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "groupKey",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "groupBucket",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "subjectType",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "subjectId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "latestEventId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "eventCount",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "activitySeq",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "readSeq",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "readAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "archivedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "lastActivityAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "type": "varchar(120)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_page_layouts"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "zones",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_page_layouts"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_page_layouts"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_page_layouts"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkey_challenges"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "tokenHash",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkey_challenges"
+ },
+ {
+ "type": "varchar(16)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "ceremony",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkey_challenges"
+ },
+ {
+ "type": "varchar(128)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "challenge",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkey_challenges"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkey_challenges"
+ },
+ {
+ "type": "varchar(128)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "webauthnUserId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkey_challenges"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkey_challenges"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "expiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkey_challenges"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "varchar(1024)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "credentialId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publicKey",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "counter",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "varchar(128)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "webauthnUserId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 1,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "transports",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "deviceType",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "backedUp",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "varchar(36)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "aaguid",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastUsedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'default'",
+ "generated": null,
+ "identity": null,
+ "name": "queue",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'pending'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "payload",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "priority",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "attempts",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "3",
+ "generated": null,
+ "identity": null,
+ "name": "maxAttempts",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "availableAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "reservedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastError",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "completedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "dedupeKey",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "protected",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "default",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "root",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "guest",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "varchar(50)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "color",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "prefix",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "allowUploadFiles",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "totalMaxStorage",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "maxStorageForSubmit",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "true",
+ "generated": null,
+ "identity": null,
+ "name": "allowUploadAvatar",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "2048",
+ "generated": null,
+ "identity": null,
+ "name": "maxAvatarSize",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "true",
+ "generated": null,
+ "identity": null,
+ "name": "allowUploadCover",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "5120",
+ "generated": null,
+ "identity": null,
+ "name": "maxCoverSize",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "true",
+ "generated": null,
+ "identity": null,
+ "name": "allowEditPersonalInfo",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "true",
+ "generated": null,
+ "identity": null,
+ "name": "allowEditOwnContent",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "editOwnContentMinutes",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "allowDeleteOwnContent",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "allowHideOwnContent",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "pluginId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemType",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "''",
+ "generated": null,
+ "identity": null,
+ "name": "languageCode",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 1,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "authorIds",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "''",
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "''",
+ "generated": null,
+ "identity": null,
+ "name": "content",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "tsvector",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": {
+ "as": "setweight(to_tsvector(CASE lower(split_part(\"core_search_index\".\"languageCode\", '-', 1)) WHEN 'da' THEN 'danish'::regconfig WHEN 'de' THEN 'german'::regconfig WHEN 'en' THEN 'english'::regconfig WHEN 'es' THEN 'spanish'::regconfig WHEN 'fi' THEN 'finnish'::regconfig WHEN 'fr' THEN 'french'::regconfig WHEN 'hu' THEN 'hungarian'::regconfig WHEN 'it' THEN 'italian'::regconfig WHEN 'nl' THEN 'dutch'::regconfig WHEN 'no' THEN 'norwegian'::regconfig WHEN 'pl' THEN 'polish'::regconfig WHEN 'pt' THEN 'portuguese'::regconfig WHEN 'ro' THEN 'romanian'::regconfig WHEN 'ru' THEN 'russian'::regconfig WHEN 'sv' THEN 'swedish'::regconfig WHEN 'tr' THEN 'turkish'::regconfig ELSE 'simple'::regconfig END, coalesce(\"core_search_index\".\"title\", '')), 'A') || setweight(to_tsvector(CASE lower(split_part(\"core_search_index\".\"languageCode\", '-', 1)) WHEN 'da' THEN 'danish'::regconfig WHEN 'de' THEN 'german'::regconfig WHEN 'en' THEN 'english'::regconfig WHEN 'es' THEN 'spanish'::regconfig WHEN 'fi' THEN 'finnish'::regconfig WHEN 'fr' THEN 'french'::regconfig WHEN 'hu' THEN 'hungarian'::regconfig WHEN 'it' THEN 'italian'::regconfig WHEN 'nl' THEN 'dutch'::regconfig WHEN 'no' THEN 'norwegian'::regconfig WHEN 'pl' THEN 'polish'::regconfig WHEN 'pt' THEN 'portuguese'::regconfig WHEN 'ro' THEN 'romanian'::regconfig WHEN 'ru' THEN 'russian'::regconfig WHEN 'sv' THEN 'swedish'::regconfig WHEN 'tr' THEN 'turkish'::regconfig ELSE 'simple'::regconfig END, coalesce(\"core_search_index\".\"content\", '')), 'B')",
+ "type": "stored"
+ },
+ "identity": null,
+ "name": "search_vector",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "containerType",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "containerId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "url",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "true",
+ "generated": null,
+ "identity": null,
+ "name": "isPublic",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "isHidden",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "imageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "metadata",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "indexedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemType",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_popularity"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_popularity"
+ },
+ {
+ "type": "double precision",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "logScore",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_popularity"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "views",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_popularity"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "clicks",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_popularity"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "comments",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_popularity"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_search_popularity"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_secrets"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "value",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_secrets"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_secrets"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sessions"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "token",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sessions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sessions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sessions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "expiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sessions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "deviceId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sessions"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sessions_known_devices"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publicId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sessions_known_devices"
+ },
+ {
+ "type": "varchar(40)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "ipAddress",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sessions_known_devices"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userAgent",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sessions_known_devices"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "lastSeen",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sessions_known_devices"
+ },
+ {
+ "type": "varchar(50)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_lock"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "owner",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_lock"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "expiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_lock"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastManualAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_lock"
+ },
+ {
+ "type": "varchar(214)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "componentId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_results"
+ },
+ {
+ "type": "varchar(2048)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "sourceUrl",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_results"
+ },
+ {
+ "type": "varchar(20)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "channel",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_results"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "versions",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_results"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "hasUnknownVersion",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_results"
+ },
+ {
+ "type": "varchar(256)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "coreVersion",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_results"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "result",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_results"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastAttemptAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_results"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastSuccessAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_results"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastError",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_results"
+ },
+ {
+ "type": "varchar(2048)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "url",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_sources"
+ },
+ {
+ "type": "varchar(512)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "etag",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_sources"
+ },
+ {
+ "type": "varchar(128)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastModified",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_sources"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "document",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_sources"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastAttemptAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_sources"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastSuccessAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_sources"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastError",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_update_sources"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_attempts"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "stateHash",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_attempts"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "bindingHash",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_attempts"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_attempts"
+ },
+ {
+ "type": "varchar(128)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "codeVerifier",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_attempts"
+ },
+ {
+ "type": "varchar(128)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "nonce",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_attempts"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_attempts"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "expiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_attempts"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "tokenHash",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerAccountId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerUsername",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "profile",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "email",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "confirmHash",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "confirmExpiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "confirmSends",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "confirmSentAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "expiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "nameCode",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "email",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar(128)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "firstName",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar(128)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "lastName",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "phone",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "headline",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "showRealName",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "password",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "newsletter",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar(6)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "avatarColor",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "emailVerified",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "roleId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "birthday",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "timeZone",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar(40)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "ipAddress",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'en'",
+ "generated": null,
+ "identity": null,
+ "name": "language",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "avatarId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "coverId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_confirm_emails"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_confirm_emails"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "token",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_confirm_emails"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_confirm_emails"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "expiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_confirm_emails"
+ },
+ {
+ "type": "varchar(40)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "ipAddress",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_confirm_emails"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_forgot_password"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_forgot_password"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "token",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_forgot_password"
+ },
+ {
+ "type": "varchar(40)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "ipAddress",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_forgot_password"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_forgot_password"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "expiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_forgot_password"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_secondary_roles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "roleId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_secondary_roles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_secondary_roles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerAccountId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerEmail",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerUsername",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "syncOnSignIn",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "type": "varchar(2048)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "avatarSourceUrl",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "avatarSha256",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "avatarFileId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "varchar(64)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "tokenHash",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "varchar(16)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "intent",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 1,
+ "default": "'{}'",
+ "generated": null,
+ "identity": null,
+ "name": "fields",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerAccountId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "preview",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "varchar(128)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "codeVerifier",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "varchar(128)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "nonce",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "expiresAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "userId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_profile_sources"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "field",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_profile_sources"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "providerId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_profile_sources"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "core_users_sso_profile_sources"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_categories"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_categories"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_categories"
+ },
+ {
+ "type": "varchar(50)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "color",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_categories"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "friendlyUrl",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "varchar(500)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenReason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "deletedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "deletedBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "body",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "author",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "article",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "parent",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "type": "varchar(500)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenReason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "coverImage",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_author_id"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_author_id"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_author_id"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_author_id"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_category_id"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_category_id"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_category_id"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_category_id"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "friendlyUrl",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "content",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "type": "varchar(255)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "coverImageAlt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "varchar(500)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenReason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "deletedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "deletedBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "body",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "author",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "topic",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "parent",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "varchar(500)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenReason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "body",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "author",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "forum",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "body",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "author",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "category",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "featured",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "body",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_categories"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_categories"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_categories"
+ },
+ {
+ "type": "varchar(80)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_categories"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_categories"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "varchar(500)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenReason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "deletedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "deletedBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "body",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "author",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "article",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "parent",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": {
+ "type": "byDefault",
+ "name": "newsroom_events_id_seq",
+ "increment": "1",
+ "startWith": "1",
+ "minValue": "1",
+ "maxValue": "9223372036854775807",
+ "cache": 1,
+ "cycle": false
+ },
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "type": "varchar(500)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenReason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "primaryTag",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "category",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_gallery"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_gallery"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_gallery"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_gallery"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_related_events"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_related_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_related_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_related_events"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_sessions"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_sessions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_sessions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_sessions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_sessions"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_sessions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "startsAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_sessions"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_tags"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_tags"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "body",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "true",
+ "generated": null,
+ "identity": null,
+ "name": "syndicationIndexable",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "syndicationNoIndex",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "5",
+ "generated": null,
+ "identity": null,
+ "name": "syndicationPriority",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_categories"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_categories"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_categories"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_categories"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_faq"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_faq"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_faq"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_faq"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_faq"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "question",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_faq"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "answer",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_faq"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_related_explainers"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_related_explainers"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_related_explainers"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_related_explainers"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_tags"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "seoTitle",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "seoDescription",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "varchar(500)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenReason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "body",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "author",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "desk",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'[]'",
+ "generated": null,
+ "identity": null,
+ "name": "content",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "code",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "excerpt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "views",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "featured",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "noIndex",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "author",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "animation",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "category",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories_gallery"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories_gallery"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories_gallery"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_stories_gallery"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "gen_random_uuid()",
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "type": "varchar(500)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenReason",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "category",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_related_tags"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_related_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_related_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_related_tags"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "roleId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_admin_permissions_role_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_admin_permissions_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "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": "core_admin_permissions_updated_at_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_admin_sessions_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "deviceId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_admin_sessions_device_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "expiresAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_admin_sessions_expires_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "scopeKey",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "periodStart",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_ai_budget_periods_scope_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_budget_periods"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "runId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_ai_calls_run_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "costSource",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "reconciledAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_ai_calls_reconcile_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "callId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_ai_cost_adjustments_call_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "runId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "budgetPeriodId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_ai_reservations_run_period_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_reservations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_ai_reservations_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_reservations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_ai_runs_user_created_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "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": "core_ai_runs_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "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": "core_ai_runs_created_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "actionKey",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_ai_runs_action_created_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "leaseExpiresAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_ai_runs_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "actorType",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "idempotencyKey",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": "\"idempotencyKey\" IS NOT NULL",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_ai_runs_idempotency_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "locale",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "field",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_ai_translation_sources_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "definitionId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_containers_definition_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "definitionId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "parentId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_containers_definition_parent_position_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "parentId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_containers_parent_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "field",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "language",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_documents_doc_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_documents_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_documents_updated_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "language",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_drafts_key_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_drafts_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_drafts_updated_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "field",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "language",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_field_locks_key_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "expiresAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_field_locks_expires_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_field_locks_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": "\"status\" = 'pending'",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_submissions_pending_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "containerId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_submissions_queue_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_submissions_item_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "authorId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_submissions_author_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "revisionId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "fileId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_file_refs_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_file_refs"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "fileId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_file_refs_file_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_file_refs"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "version",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": "\"languageId\" IS NULL",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_revisions_item_version_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "version",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": "\"languageId\" IS NOT NULL",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_revisions_translation_version_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "version",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_revisions_language_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "pluginId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_revisions_plugin_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "actorUserId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_revisions_actor_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "action",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": "status = 'pending'",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_schedules_active_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "scheduledFor",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_schedules_due_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_schedules_item_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "pluginId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_schedules_plugin_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_schedules_created_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": "\"languageId\" IS NULL",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_slug_history_shared_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": "\"languageId\" IS NOT NULL",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_slug_history_locale_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "contentTypeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_slug_history_item_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "pluginId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_content_slug_history_plugin_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_content_slug_history"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "lastRun",
+ "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": "core_cron_last_run_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_cron"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_admin_dashboard_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_admin_dashboard"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "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": "core_files_user_created_at_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "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": "core_files_created_at_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "fileId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "languageCode",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_files_alt_file_language_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "fileId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "fileFingerprint",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_files_alt_analysis_file_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_files_alt_analysis"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": "status <> 'completed'",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_files_alt_state_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_files_alt_state"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "name",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_languages_name_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_languages"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageCode",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_languages_words_lang_code_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_languages_words"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "tableName",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "pluginCode",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "variable",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_languages_words_lookup_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_languages_words"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "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": "core_logs_created_at_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_logs_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "reportId",
+ "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": "core_moderation_report_events_report_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_moderation_report_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_moderation_report_reasons_position_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_moderation_report_reasons"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "pluginId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "targetType",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "targetId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_moderation_reports_target_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_moderation_reports_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "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": "core_moderation_reports_created_at_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "assigneeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_moderation_reports_assignee_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "reporterId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_moderation_reports_reporter_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "scopeFamily",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "scopeId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_moderation_reports_scope_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "roleId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_moderators_permissions_role_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_moderators_permissions_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "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": "core_moderators_permissions_updated_at_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "availableAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "id",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": "status = 'pending'",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notification_deliveries_claim_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "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": "core_notification_deliveries_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notification_deliveries_user_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "eventId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": "\"eventId\" IS NOT NULL",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notification_deliveries_event_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "pluginId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "type",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "idempotencyKey",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notification_events_idempotency_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "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": "core_notification_events_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notification_events_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "notificationId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "seq",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notification_receipts_notification_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notification_receipts_user_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": "\"emailPending\" = true AND \"emailDeliveryId\" IS NULL",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notification_receipts_email_pending_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "unreadCount",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notification_user_state_unread_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notification_user_state"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "pluginId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "type",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "groupKey",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "groupBucket",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notifications_group_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "lastActivityAt",
+ "isExpression": false,
+ "asc": false,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "id",
+ "isExpression": false,
+ "asc": false,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": "\"archivedAt\" IS NULL",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notifications_inbox_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "lastActivityAt",
+ "isExpression": false,
+ "asc": false,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "id",
+ "isExpression": false,
+ "asc": false,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": "\"archivedAt\" IS NULL AND \"readSeq\" < \"activitySeq\"",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notifications_unread_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "subjectType",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "subjectId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notifications_subject_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "lastActivityAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notifications_last_activity_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "latestEventId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_notifications_latest_event_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "expiresAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_users_passkey_challenges_expires_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users_passkey_challenges"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_users_passkey_challenges_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users_passkey_challenges"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_users_passkeys_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "webauthnUserId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_users_passkeys_webauthn_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "availableAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_queue_status_available_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "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": "core_queue_created_at_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "completedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": "\"completedAt\" IS NOT NULL",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_queue_completed_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "pluginId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "dedupeKey",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": "\"dedupeKey\" IS NOT NULL AND status IN ('pending', 'processing')",
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_queue_dedupe_active_unique",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_queue"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "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": "core_roles_updated_at_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_roles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "search_vector",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "gin",
+ "concurrently": false,
+ "name": "core_search_index_search_vector_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "to_tsvector('simple'::regconfig, \"title\")",
+ "isExpression": true,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "gin",
+ "concurrently": false,
+ "name": "core_search_index_title_vector_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_search_index_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "authorIds",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "gin",
+ "concurrently": false,
+ "name": "core_search_index_author_ids_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemType",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_search_index_item_type_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageCode",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_search_index_language_code_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "isPublic",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_search_index_is_public_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "imageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_search_index_image_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "containerType",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "containerId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_search_index_container_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "logScore",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_search_popularity_log_score_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_search_popularity"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_sessions_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_sessions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "deviceId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_sessions_device_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_sessions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "expiresAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_sessions_expires_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_sessions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "ipAddress",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_sessions_known_devices_ip_address_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_sessions_known_devices"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "expiresAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_sso_attempts_expires_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_sso_attempts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "expiresAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_sso_pending_expires_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_sso_pending"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "avatarId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_users_avatar_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "coverId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_users_cover_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "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": "core_users_created_at_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "roleId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_users_role_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "roleId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_users_secondary_roles_role_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users_secondary_roles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_users_sso_user_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "userId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "providerId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_users_sso_operations_user_provider_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "expiresAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "core_users_sso_operations_expires_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_categories_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_categories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_categories_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_categories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_categories_translations_language_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "friendlyUrl",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_categories_translations_language_id_friendly_url_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "article",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "parent",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_comments_article_parent_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_comments_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "author",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_comments_author_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "article",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_comments_article_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "parent",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_comments_parent_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_comments_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_comments_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_comments_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "hiddenBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_comments_hidden_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "deletedBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_comments_deleted_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_status_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "coverImage",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_cover_image_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "hiddenBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_hidden_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_author_id_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts_author_id"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_author_id_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts_author_id"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_category_id_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts_category_id"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_category_id_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts_category_id"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_translations_language_id_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "friendlyUrl",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "blog_posts_translations_language_id_friendly_url_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "topic",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "parent",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_comments_topic_parent_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_comments_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "author",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_comments_author_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "topic",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_comments_topic_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "parent",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_comments_parent_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_comments_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_comments_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_comments_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "hiddenBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_comments_hidden_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "deletedBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_comments_deleted_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "forum",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_topics_forum_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_topics_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "author",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_topics_author_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_topics_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_topics_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_topics_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "hiddenBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "forum_topics_hidden_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_articles_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "author",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_articles_author_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "category",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_articles_category_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_articles_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_articles_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_articles_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_bulletins_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_bulletins"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_bulletins_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_bulletins"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_bulletins_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_bulletins"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_bulletins_translations_language_id_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_bulletins_translations_language_id_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_categories_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_categories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_categories_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_categories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_categories_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_categories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_comments_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "author",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_comments_author_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "article",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_comments_article_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "parent",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_comments_parent_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_comments_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_comments_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_comments_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "hiddenBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_comments_hidden_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "deletedBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_comments_deleted_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "primaryTag",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_primary_tag_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "category",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_category_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "hiddenBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_hidden_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_gallery_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events_gallery"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_gallery_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events_gallery"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_related_events_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events_related_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_related_events_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events_related_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_sessions_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events_sessions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_tags_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_tags_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_translations_language_id_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_events_translations_language_id_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "syndicationPriority",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_syndication_priority_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_categories_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers_categories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_categories_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers_categories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_faq_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers_faq"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_related_explainers_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers_related_explainers"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_related_explainers_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers_related_explainers"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_tags_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_tags_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_translations_language_id_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_explainers_translations_language_id_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_letters_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "author",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_letters_author_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "desk",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_letters_desk_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_letters_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_letters_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_letters_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "hiddenBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_letters_hidden_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_pages_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_pages_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_pages_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_pages_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_pages"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_stories_status_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_stories_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "code",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_stories_code_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "author",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_stories_author_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "animation",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_stories_animation_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "category",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_stories_category_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_stories_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_stories_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_stories_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_stories_gallery_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_stories_gallery"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_stories_gallery_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_stories_gallery"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "category",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_tags_category_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_tags_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_tags_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "publishedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_tags_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "hiddenBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_tags_hidden_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "itemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "position",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_tags_related_tags_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_tags_related_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_tags_related_tags_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_tags_related_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "status",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_tags_translations_language_id_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "languageId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ },
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "newsroom_tags_translations_language_id_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "roleId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_roles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_admin_permissions_roleId_core_roles_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_admin_permissions_userId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_admin_permissions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_admin_sessions_userId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "deviceId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_sessions_known_devices",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_admin_sessions_deviceId_core_sessions_known_devices_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_admin_sessions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "runId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_ai_runs",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_ai_calls_runId_core_ai_runs_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_ai_calls"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "callId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_ai_calls",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_ai_cost_adjustments_callId_core_ai_calls_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "runId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_ai_runs",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_ai_cost_adjustments_runId_core_ai_runs_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "runId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_ai_runs",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_ai_reservations_runId_core_ai_runs_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_ai_reservations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "budgetPeriodId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_ai_budget_periods",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_ai_reservations_FClYpPXZwvsm_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_ai_reservations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "roleId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_roles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_ai_role_permissions_roleId_core_roles_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_ai_role_permissions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "roleId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_roles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_ai_role_policies_roleId_core_roles_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_ai_role_policies"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_ai_runs_userId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_ai_runs"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "updatedById"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_ai_translation_sources_updatedById_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_ai_translation_sources"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_ai_user_overrides_userId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_ai_user_overrides"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "parentId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_content_containers",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "RESTRICT",
+ "name": "core_content_containers_q6QIucJ4HJ7B_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_content_containers"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "updatedBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "core_content_documents_updatedBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_content_documents"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "updatedBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "core_content_drafts_updatedBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_content_drafts"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "core_content_field_locks_userId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_content_field_locks"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "authorId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_content_submissions_authorId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "reviewerId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_content_submissions_reviewerId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_content_submissions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "revisionId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_content_revisions",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "core_content_file_refs_5get6SfhBPHr_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_content_file_refs"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "fileId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "core_content_file_refs_fileId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_content_file_refs"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "actorUserId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "core_content_revisions_actorUserId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_content_revisions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "createdBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "core_content_schedules_createdBy_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_content_schedules"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_admin_dashboard_userId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_admin_dashboard"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_files_userId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_files"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "fileId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_files_alt_fileId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageCode"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "code"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_files_alt_languageCode_core_languages_code_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "runId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_ai_runs",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_files_alt_runId_core_ai_runs_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "updatedById"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_files_alt_updatedById_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_files_alt"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "fileId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_files_alt_analysis_fileId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_files_alt_analysis"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "runId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_ai_runs",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_files_alt_analysis_runId_core_ai_runs_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_files_alt_analysis"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "fileId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_files_alt_state_fileId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_files_alt_state"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageCode"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "code"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_languages_words_languageCode_core_languages_code_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_languages_words"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "core_logs_userId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_logs"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "reportId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_moderation_reports",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_moderation_report_events_4CqHOxfheaUm_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_moderation_report_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "actorId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_moderation_report_events_actorId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_moderation_report_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "reporterId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_moderation_reports_reporterId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "assigneeId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_moderation_reports_assigneeId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "resolvedById"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_moderation_reports_resolvedById_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_moderation_reports"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "roleId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_roles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_moderators_permissions_roleId_core_roles_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_moderators_permissions_userId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_moderators_permissions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_notification_deliveries_userId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "eventId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_notification_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_notification_deliveries_vcf37BytIa0M_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_notification_deliveries"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "actorId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_notification_events_actorId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_notification_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "eventId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_notification_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_notification_receipts_UQ7ZEs0I6ijx_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_notification_receipts_userId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "notificationId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_notifications",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_notification_receipts_Vxye2Cs6MgcL_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_notification_user_state_userId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_notification_user_state"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_notifications_userId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "latestEventId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_notification_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "RESTRICT",
+ "name": "core_notifications_I8QoGbTal5Wt_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_notifications"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_users_passkey_challenges_userId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users_passkey_challenges"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_users_passkeys_userId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users_passkeys"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "imageId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_search_index_imageId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_sessions_userId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_sessions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "deviceId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_sessions_known_devices",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_sessions_deviceId_core_sessions_known_devices_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_sessions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "roleId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_roles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "NO ACTION",
+ "name": "core_users_roleId_core_roles_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "language"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "code"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET DEFAULT",
+ "name": "core_users_language_core_languages_code_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "avatarId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_users_avatarId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "coverId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_users_coverId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_users_confirm_emails_userId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users_confirm_emails"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_users_forgot_password_userId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users_forgot_password"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_users_secondary_roles_userId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users_secondary_roles"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "roleId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_roles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_users_secondary_roles_roleId_core_roles_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users_secondary_roles"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_users_sso_userId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "avatarFileId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "SET NULL",
+ "name": "core_users_sso_avatarFileId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_users_sso_operations_userId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_users_sso_profile_sources_userId_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users_sso_profile_sources"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ "userId",
+ "providerId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users_sso",
+ "columnsTo": [
+ "userId",
+ "providerId"
+ ],
+ "onUpdate": "NO ACTION",
+ "onDelete": "CASCADE",
+ "name": "core_users_sso_profile_sources_connection_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "core_users_sso_profile_sources"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "blog_categories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "blog_categories_translations_itemId_blog_categories_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "blog_categories_translations_languageId_core_languages_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "hiddenBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "blog_comments_hiddenBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "deletedBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "blog_comments_deletedBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "author"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "blog_comments_author_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "article"
+ ],
+ "schemaTo": "public",
+ "tableTo": "blog_posts",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "blog_comments_article_blog_posts_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "parent"
+ ],
+ "schemaTo": "public",
+ "tableTo": "blog_comments",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "blog_comments_parent_blog_comments_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "hiddenBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "blog_posts_hiddenBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "coverImage"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "blog_posts_coverImage_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_posts"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "blog_posts",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "blog_posts_author_id_itemId_blog_posts_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_posts_author_id"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "blog_posts_author_id_relatedItemId_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_posts_author_id"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "blog_posts",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "blog_posts_category_id_itemId_blog_posts_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_posts_category_id"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "blog_categories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "blog_posts_category_id_relatedItemId_blog_categories_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_posts_category_id"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "blog_posts",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "blog_posts_translations_itemId_blog_posts_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "blog_posts_translations_languageId_core_languages_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "hiddenBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "forum_replies_hiddenBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "deletedBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "forum_comments_deletedBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "author"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "forum_replies_author_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "topic"
+ ],
+ "schemaTo": "public",
+ "tableTo": "forum_topics",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "forum_replies_topic_forum_topics_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "parent"
+ ],
+ "schemaTo": "public",
+ "tableTo": "forum_comments",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "forum_replies_parent_forum_replies_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "forum_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "hiddenBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "forum_topics_hiddenBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "author"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "forum_topics_author_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "forum"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_content_containers",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "forum_topics_forum_core_content_containers_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "forum_topics"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "author"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_articles_author_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "category"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_categories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_articles_category_newsroom_categories_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_articles"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_bulletins",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_bulletins_translations_kgMZwrpzwwU7_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_bulletins_translations_rkkiMJQiOrEo_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "hiddenBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_comments_hiddenBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "deletedBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_comments_deletedBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "author"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_comments_author_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "article"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_articles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_comments_article_newsroom_articles_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "parent"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_comments",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_comments_parent_newsroom_comments_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_comments"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "hiddenBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_events_hiddenBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "primaryTag"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_events_primaryTag_newsroom_tags_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "category"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_categories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_events_category_newsroom_categories_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_events_gallery_itemId_newsroom_events_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events_gallery"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_events_gallery_relatedItemId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events_gallery"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_events_related_events_itemId_newsroom_events_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events_related_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_events_related_events_0xHNSLM3JAJj_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events_related_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_events_sessions_itemId_newsroom_events_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events_sessions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_events_tags_itemId_newsroom_events_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_events_tags_relatedItemId_newsroom_tags_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_events_translations_itemId_newsroom_events_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_events_translations_languageId_core_languages_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_explainers",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_explainers_categories_9dOmLv3k6xDX_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_explainers_categories"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_categories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_explainers_categories_mnxKvproEUm5_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_explainers_categories"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_explainers",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_explainers_faq_itemId_newsroom_explainers_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_explainers_faq"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_explainers",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_explainers_related_explainers_TFvIU3TogSGy_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_explainers_related_explainers"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_explainers",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_explainers_related_explainers_74JhaXF5PsDV_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_explainers_related_explainers"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_explainers",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_explainers_tags_itemId_newsroom_explainers_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_explainers_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_explainers_tags_relatedItemId_newsroom_tags_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_explainers_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_explainers",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_explainers_translations_hcPB0jdTm8MV_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_explainers_translations_qqggtF6jhcsZ_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "hiddenBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_letters_hiddenBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "author"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_letters_author_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "desk"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_content_containers",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_letters_desk_core_content_containers_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_letters"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "author"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_stories_author_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "animation"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_stories_animation_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "category"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_categories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_stories_category_newsroom_categories_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_stories"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_stories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_stories_gallery_itemId_newsroom_stories_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_stories_gallery"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_stories_gallery_relatedItemId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_stories_gallery"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "hiddenBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_tags_hiddenBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "category"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_categories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "newsroom_tags_category_newsroom_categories_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_tags_related_tags_itemId_newsroom_tags_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_tags_related_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_tags_related_tags_relatedItemId_newsroom_tags_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_tags_related_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "newsroom_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "newsroom_tags_translations_itemId_newsroom_tags_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "newsroom_tags_translations_languageId_core_languages_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "columns": [
+ "roleId",
+ "permission"
+ ],
+ "nameExplicit": false,
+ "name": "core_ai_role_permissions_pkey",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "core_ai_role_permissions"
+ },
+ {
+ "columns": [
+ "eventId",
+ "userId"
+ ],
+ "nameExplicit": false,
+ "name": "core_notification_receipts_pkey",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "core_notification_receipts"
+ },
+ {
+ "columns": [
+ "itemType",
+ "itemId"
+ ],
+ "nameExplicit": false,
+ "name": "core_search_popularity_pkey",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "core_search_popularity"
+ },
+ {
+ "columns": [
+ "userId",
+ "roleId"
+ ],
+ "nameExplicit": false,
+ "name": "core_users_secondary_roles_userId_roleId_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "core_users_secondary_roles"
+ },
+ {
+ "columns": [
+ "userId",
+ "field"
+ ],
+ "nameExplicit": false,
+ "name": "core_users_sso_profile_sources_pkey",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "core_users_sso_profile_sources"
+ },
+ {
+ "columns": [
+ "itemId",
+ "languageId"
+ ],
+ "nameExplicit": true,
+ "name": "blog_categories_translations_item_id_language_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "blog_categories_translations"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "blog_posts_author_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "blog_posts_author_id"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "blog_posts_category_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "blog_posts_category_id"
+ },
+ {
+ "columns": [
+ "itemId",
+ "languageId"
+ ],
+ "nameExplicit": true,
+ "name": "blog_posts_translations_item_id_language_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "blog_posts_translations"
+ },
+ {
+ "columns": [
+ "itemId",
+ "languageId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_bulletins_translations_item_id_language_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_bulletins_translations"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_events_gallery_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_events_gallery"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_events_related_events_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_events_related_events"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_events_tags_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_events_tags"
+ },
+ {
+ "columns": [
+ "itemId",
+ "languageId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_events_translations_item_id_language_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_events_translations"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_explainers_categories_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_explainers_categories"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_explainers_related_explainers_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_explainers_related_explainers"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_explainers_tags_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_explainers_tags"
+ },
+ {
+ "columns": [
+ "itemId",
+ "languageId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_explainers_translations_item_id_language_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_explainers_translations"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_stories_gallery_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_stories_gallery"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_tags_related_tags_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_tags_related_tags"
+ },
+ {
+ "columns": [
+ "itemId",
+ "languageId"
+ ],
+ "nameExplicit": true,
+ "name": "newsroom_tags_translations_item_id_language_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "newsroom_tags_translations"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_admin_permissions_pkey",
+ "schema": "public",
+ "table": "core_admin_permissions",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_admin_sessions_pkey",
+ "schema": "public",
+ "table": "core_admin_sessions",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "actionKey"
+ ],
+ "nameExplicit": false,
+ "name": "core_ai_action_settings_pkey",
+ "schema": "public",
+ "table": "core_ai_action_settings",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_ai_budget_periods_pkey",
+ "schema": "public",
+ "table": "core_ai_budget_periods",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_ai_calls_pkey",
+ "schema": "public",
+ "table": "core_ai_calls",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_ai_cost_adjustments_pkey",
+ "schema": "public",
+ "table": "core_ai_cost_adjustments",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_ai_reservations_pkey",
+ "schema": "public",
+ "table": "core_ai_reservations",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "roleId"
+ ],
+ "nameExplicit": false,
+ "name": "core_ai_role_policies_pkey",
+ "schema": "public",
+ "table": "core_ai_role_policies",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_ai_runs_pkey",
+ "schema": "public",
+ "table": "core_ai_runs",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_ai_settings_pkey",
+ "schema": "public",
+ "table": "core_ai_settings",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_ai_translation_sources_pkey",
+ "schema": "public",
+ "table": "core_ai_translation_sources",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "userId"
+ ],
+ "nameExplicit": false,
+ "name": "core_ai_user_overrides_pkey",
+ "schema": "public",
+ "table": "core_ai_user_overrides",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_content_containers_pkey",
+ "schema": "public",
+ "table": "core_content_containers",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_content_documents_pkey",
+ "schema": "public",
+ "table": "core_content_documents",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_content_drafts_pkey",
+ "schema": "public",
+ "table": "core_content_drafts",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_content_field_locks_pkey",
+ "schema": "public",
+ "table": "core_content_field_locks",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_content_submissions_pkey",
+ "schema": "public",
+ "table": "core_content_submissions",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_content_file_refs_pkey",
+ "schema": "public",
+ "table": "core_content_file_refs",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_content_revisions_pkey",
+ "schema": "public",
+ "table": "core_content_revisions",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_content_schedules_pkey",
+ "schema": "public",
+ "table": "core_content_schedules",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_content_slug_history_pkey",
+ "schema": "public",
+ "table": "core_content_slug_history",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_cron_pkey",
+ "schema": "public",
+ "table": "core_cron",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_admin_dashboard_pkey",
+ "schema": "public",
+ "table": "core_admin_dashboard",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_files_pkey",
+ "schema": "public",
+ "table": "core_files",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_files_alt_pkey",
+ "schema": "public",
+ "table": "core_files_alt",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_files_alt_analysis_pkey",
+ "schema": "public",
+ "table": "core_files_alt_analysis",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "fileId"
+ ],
+ "nameExplicit": false,
+ "name": "core_files_alt_state_pkey",
+ "schema": "public",
+ "table": "core_files_alt_state",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_languages_pkey",
+ "schema": "public",
+ "table": "core_languages",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_languages_words_pkey",
+ "schema": "public",
+ "table": "core_languages_words",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_logs_pkey",
+ "schema": "public",
+ "table": "core_logs",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_moderation_report_events_pkey",
+ "schema": "public",
+ "table": "core_moderation_report_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_moderation_report_reasons_pkey",
+ "schema": "public",
+ "table": "core_moderation_report_reasons",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_moderation_reports_pkey",
+ "schema": "public",
+ "table": "core_moderation_reports",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_moderators_permissions_pkey",
+ "schema": "public",
+ "table": "core_moderators_permissions",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_notification_deliveries_pkey",
+ "schema": "public",
+ "table": "core_notification_deliveries",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_notification_events_pkey",
+ "schema": "public",
+ "table": "core_notification_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "key"
+ ],
+ "nameExplicit": false,
+ "name": "core_notification_settings_pkey",
+ "schema": "public",
+ "table": "core_notification_settings",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "userId"
+ ],
+ "nameExplicit": false,
+ "name": "core_notification_user_state_pkey",
+ "schema": "public",
+ "table": "core_notification_user_state",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_notifications_pkey",
+ "schema": "public",
+ "table": "core_notifications",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "pageId"
+ ],
+ "nameExplicit": false,
+ "name": "core_page_layouts_pkey",
+ "schema": "public",
+ "table": "core_page_layouts",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_users_passkey_challenges_pkey",
+ "schema": "public",
+ "table": "core_users_passkey_challenges",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_users_passkeys_pkey",
+ "schema": "public",
+ "table": "core_users_passkeys",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_queue_pkey",
+ "schema": "public",
+ "table": "core_queue",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_roles_pkey",
+ "schema": "public",
+ "table": "core_roles",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_search_index_pkey",
+ "schema": "public",
+ "table": "core_search_index",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "name"
+ ],
+ "nameExplicit": false,
+ "name": "core_secrets_pkey",
+ "schema": "public",
+ "table": "core_secrets",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_sessions_pkey",
+ "schema": "public",
+ "table": "core_sessions",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_sessions_known_devices_pkey",
+ "schema": "public",
+ "table": "core_sessions_known_devices",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "name"
+ ],
+ "nameExplicit": false,
+ "name": "core_update_lock_pkey",
+ "schema": "public",
+ "table": "core_update_lock",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "componentId"
+ ],
+ "nameExplicit": false,
+ "name": "core_update_results_pkey",
+ "schema": "public",
+ "table": "core_update_results",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "url"
+ ],
+ "nameExplicit": false,
+ "name": "core_update_sources_pkey",
+ "schema": "public",
+ "table": "core_update_sources",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_sso_attempts_pkey",
+ "schema": "public",
+ "table": "core_sso_attempts",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_sso_pending_pkey",
+ "schema": "public",
+ "table": "core_sso_pending",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_users_pkey",
+ "schema": "public",
+ "table": "core_users",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_users_confirm_emails_pkey",
+ "schema": "public",
+ "table": "core_users_confirm_emails",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_users_forgot_password_pkey",
+ "schema": "public",
+ "table": "core_users_forgot_password",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "core_users_sso_operations_pkey",
+ "schema": "public",
+ "table": "core_users_sso_operations",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "blog_categories_pkey",
+ "schema": "public",
+ "table": "blog_categories",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "blog_comments_pkey",
+ "schema": "public",
+ "table": "blog_comments",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "blog_posts_pkey",
+ "schema": "public",
+ "table": "blog_posts",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "forum_replies_pkey",
+ "schema": "public",
+ "table": "forum_comments",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "forum_topics_pkey",
+ "schema": "public",
+ "table": "forum_topics",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_articles_pkey",
+ "schema": "public",
+ "table": "newsroom_articles",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_bulletins_pkey",
+ "schema": "public",
+ "table": "newsroom_bulletins",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_categories_pkey",
+ "schema": "public",
+ "table": "newsroom_categories",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_comments_pkey",
+ "schema": "public",
+ "table": "newsroom_comments",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_events_pkey",
+ "schema": "public",
+ "table": "newsroom_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_events_sessions_pkey",
+ "schema": "public",
+ "table": "newsroom_events_sessions",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_explainers_pkey",
+ "schema": "public",
+ "table": "newsroom_explainers",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_explainers_faq_pkey",
+ "schema": "public",
+ "table": "newsroom_explainers_faq",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_letters_pkey",
+ "schema": "public",
+ "table": "newsroom_letters",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_pages_pkey",
+ "schema": "public",
+ "table": "newsroom_pages",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_stories_pkey",
+ "schema": "public",
+ "table": "newsroom_stories",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "newsroom_tags_pkey",
+ "schema": "public",
+ "table": "newsroom_tags",
+ "entityType": "pks"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ "itemType",
+ "itemId",
+ "languageCode"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_search_index_item_unique",
+ "entityType": "uniques",
+ "schema": "public",
+ "table": "core_search_index"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ "providerId",
+ "providerAccountId"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_users_sso_provider_account_key",
+ "entityType": "uniques",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ "userId",
+ "providerId"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_users_sso_user_provider_key",
+ "entityType": "uniques",
+ "schema": "public",
+ "table": "core_users_sso"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "token"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_admin_sessions_token_unique",
+ "schema": "public",
+ "table": "core_admin_sessions",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_admin_dashboard_userId_unique",
+ "schema": "public",
+ "table": "core_admin_dashboard",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "key"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_files_key_unique",
+ "schema": "public",
+ "table": "core_files",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "code"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_languages_code_unique",
+ "schema": "public",
+ "table": "core_languages",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "code"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_moderation_report_reasons_code_key",
+ "schema": "public",
+ "table": "core_moderation_report_reasons",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "openKey"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_moderation_reports_openKey_key",
+ "schema": "public",
+ "table": "core_moderation_reports",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "idempotencyKey"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_notification_deliveries_idempotencyKey_key",
+ "schema": "public",
+ "table": "core_notification_deliveries",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "tokenHash"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_users_passkey_challenges_tokenHash_key",
+ "schema": "public",
+ "table": "core_users_passkey_challenges",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "credentialId"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_users_passkeys_credentialId_key",
+ "schema": "public",
+ "table": "core_users_passkeys",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "token"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_sessions_token_unique",
+ "schema": "public",
+ "table": "core_sessions",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "publicId"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_sessions_known_devices_publicId_unique",
+ "schema": "public",
+ "table": "core_sessions_known_devices",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "stateHash"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_sso_attempts_stateHash_key",
+ "schema": "public",
+ "table": "core_sso_attempts",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "tokenHash"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_sso_pending_tokenHash_key",
+ "schema": "public",
+ "table": "core_sso_pending",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "nameCode"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_users_nameCode_unique",
+ "schema": "public",
+ "table": "core_users",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "name"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_users_name_unique",
+ "schema": "public",
+ "table": "core_users",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "email"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_users_email_unique",
+ "schema": "public",
+ "table": "core_users",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "token"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_users_confirm_emails_token_unique",
+ "schema": "public",
+ "table": "core_users_confirm_emails",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "userId"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_users_forgot_password_userId_unique",
+ "schema": "public",
+ "table": "core_users_forgot_password",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "token"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_users_forgot_password_token_unique",
+ "schema": "public",
+ "table": "core_users_forgot_password",
+ "entityType": "uniques"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "tokenHash"
+ ],
+ "nullsNotDistinct": false,
+ "name": "core_users_sso_operations_tokenHash_key",
+ "schema": "public",
+ "table": "core_users_sso_operations",
+ "entityType": "uniques"
+ },
+ {
+ "value": "\"intent\" IN ('link', 'import', 'sync', 'preview')",
+ "name": "core_users_sso_operations_intent_check",
+ "entityType": "checks",
+ "schema": "public",
+ "table": "core_users_sso_operations"
+ },
+ {
+ "value": "\"field\" IN ('avatar', 'firstName', 'lastName')",
+ "name": "core_users_sso_profile_sources_field_check",
+ "entityType": "checks",
+ "schema": "public",
+ "table": "core_users_sso_profile_sources"
+ }
+ ],
+ "renames": []
+}
\ No newline at end of file
diff --git a/apps/api/src/vitnode.api.config.ts b/apps/api/src/vitnode.api.config.ts
index a33d6bb10..6dccc6ac4 100644
--- a/apps/api/src/vitnode.api.config.ts
+++ b/apps/api/src/vitnode.api.config.ts
@@ -122,6 +122,25 @@ export const vitNodeApiConfig = buildApiConfig({
clientId: process.env.FACEBOOK_CLIENT_ID,
clientSecret: process.env.FACEBOOK_CLIENT_SECRET,
}),
+ // More built-in providers, opt-in: import the factory from
+ // `@vitnode/core/api/adapters/sso/{providerId}`, uncomment its line and
+ // set its variables in `.env`. A button without credentials still shows
+ // up and fails on click, so only add the ones you configure. Apple,
+ // PayPal and TikTok need a public HTTPS `VITNODE_WEB_URL`.
+ // See https://vitnode.com/docs/dev/sso
+ //
+ // AppleSSOApiPlugin({ clientId: process.env.APPLE_CLIENT_ID, teamId: process.env.APPLE_TEAM_ID, keyId: process.env.APPLE_KEY_ID, privateKey: process.env.APPLE_PRIVATE_KEY }),
+ // AtlassianSSOApiPlugin({ clientId: process.env.ATLASSIAN_CLIENT_ID, clientSecret: process.env.ATLASSIAN_CLIENT_SECRET }),
+ // GitLabSSOApiPlugin({ clientId: process.env.GITLAB_CLIENT_ID, clientSecret: process.env.GITLAB_CLIENT_SECRET }),
+ // KickSSOApiPlugin({ clientId: process.env.KICK_CLIENT_ID, clientSecret: process.env.KICK_CLIENT_SECRET }),
+ // LinkedInSSOApiPlugin({ clientId: process.env.LINKEDIN_CLIENT_ID, clientSecret: process.env.LINKEDIN_CLIENT_SECRET }),
+ // MicrosoftSSOApiPlugin({ clientId: process.env.MICROSOFT_CLIENT_ID, clientSecret: process.env.MICROSOFT_CLIENT_SECRET, tenant: "common" }),
+ // PayPalSSOApiPlugin({ clientId: process.env.PAYPAL_CLIENT_ID, clientSecret: process.env.PAYPAL_CLIENT_SECRET, environment: "sandbox" }),
+ // RedditSSOApiPlugin({ clientId: process.env.REDDIT_CLIENT_ID, clientSecret: process.env.REDDIT_CLIENT_SECRET, userAgent: process.env.REDDIT_USER_AGENT }),
+ // SlackSSOApiPlugin({ clientId: process.env.SLACK_CLIENT_ID, clientSecret: process.env.SLACK_CLIENT_SECRET, teamId: process.env.SLACK_TEAM_ID }),
+ // TikTokSSOApiPlugin({ clientKey: process.env.TIKTOK_CLIENT_KEY, clientSecret: process.env.TIKTOK_CLIENT_SECRET }),
+ // TwitchSSOApiPlugin({ clientId: process.env.TWITCH_CLIENT_ID, clientSecret: process.env.TWITCH_CLIENT_SECRET }),
+ // TwitterSSOApiPlugin({ clientId: process.env.TWITTER_CLIENT_ID, clientSecret: process.env.TWITTER_CLIENT_SECRET }),
],
},
// Bot protection on the routes that declare `withCaptcha` - register, log in,
diff --git a/apps/web/content/docs/dev/sso/apple.mdx b/apps/web/content/docs/dev/sso/apple.mdx
new file mode 100644
index 000000000..91eaf5854
--- /dev/null
+++ b/apps/web/content/docs/dev/sso/apple.mdx
@@ -0,0 +1,163 @@
+---
+title: Apple
+description: Add Sign in with Apple to VitNode. Create a Services ID and key, register the HTTPS return URL and wire up the Apple SSO adapter.
+icon: Apple
+---
+
+Add a **Continue with Apple** button to `/login` and `/register`. Visitors can share their real email or a private relay address, and both work with VitNode.
+
+## Before you begin
+
+- A running VitNode app. This page covers only the Apple parts; [SSO setup](/docs/dev/sso#set-up-your-first-provider) explains the shared steps and [where the API's `.env` and config live](/docs/dev/sso#where-the-files-live).
+- A paid [Apple Developer Program](https://developer.apple.com/programs/) membership. Free accounts cannot create Sign in with Apple keys.
+- A public **HTTPS domain** for the site. Apple rejects `http://`, IP addresses and `localhost` return URLs, so local development needs a tunnel (see [Develop locally](#develop-locally)).
+
+## Set up Sign in with Apple
+
+
+
+
+### Create an App ID
+
+In [Certificates, Identifiers & Profiles](https://developer.apple.com/account/resources/identifiers/list), add an **App IDs** identifier (type **App**), give it a bundle ID such as `com.example.forum`, and tick **Sign in with Apple** under capabilities. This is the primary App ID the web sign-in groups under.
+
+
+
+
+
+### Create a Services ID
+
+Add another identifier, this time of type **Services IDs**. Its identifier, for example `com.example.forum.web`, is the **client ID** VitNode sends to Apple. The description is what visitors see on Apple's consent screen.
+
+
+
+
+
+### Register the domain and return URL
+
+Open the new Services ID, tick **Sign in with Apple** and press **Configure**. Choose the primary App ID, then add:
+
+| Field | Value |
+| ----------- | ----------------------------------------- |
+| Domains | `your-domain.com` |
+| Return URLs | `https://your-domain.com/login/sso/apple` |
+
+VitNode builds the return URL from `VITNODE_WEB_URL` as `{VITNODE_WEB_URL}/login/sso/apple`, so they must match exactly: same scheme and host, no trailing slash.
+
+{/* Image prompt: The Apple Developer "Web Authentication Configuration" dialog for a Services ID, with a primary App ID selected, "your-domain.com" in Domains and Subdomains and "https://your-domain.com/login/sso/apple" in Return URLs, light theme, 1100x600. */}
+
+
+
+
+
+### Create a key
+
+Under **Keys**, add a key, tick **Sign in with Apple**, configure it with the same primary App ID and register it. Download the `.p8` file and note the 10-character **Key ID**. Apple lets you download the file **once**. Your 10-character **Team ID** is under **Membership details** in your developer account.
+
+
+
+
+
+### Set the environment variables
+
+Keep these server-side and out of `clientEnv`. Paste the `.p8` contents with `\n` for line breaks; VitNode turns them back into newlines.
+
+```bash title=".env"
+APPLE_CLIENT_ID=com.example.forum.web # [!code ++]
+APPLE_TEAM_ID=A1B2C3D4E5 # [!code ++]
+APPLE_KEY_ID=F6G7H8I9J0 # [!code ++]
+APPLE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIGT...\n-----END PRIVATE KEY-----" # [!code ++]
+VITNODE_WEB_URL=https://your-domain.com
+```
+
+Apple's token endpoint wants a **client secret**: a short ES256 JWT signed with the key. `AppleSSOApiPlugin` creates it for you, keeps it for 24 hours and renews it before it expires, so there is no secret to rotate by hand.
+
+
+
+
+
+### Add the adapter
+
+Add `AppleSSOApiPlugin` to `authorization.ssoAdapters` in the API's `vitnode.api.config.ts` ([where it lives](/docs/dev/sso#where-the-files-live)), next to any adapters you already have. Keep the rest of the config as it is:
+
+```ts title="src/vitnode.api.config.ts (excerpt)"
+import { AppleSSOApiPlugin } from '@vitnode/core/api/adapters/sso/apple' // [!code ++]
+import { buildApiConfig } from '@vitnode/core/vitnode.config'
+
+export const vitNodeApiConfig = buildApiConfig({
+ // ...
+ authorization: {
+ ssoAdapters: [
+ // ...
+ // [!code ++:6]
+ AppleSSOApiPlugin({
+ clientId: process.env.APPLE_CLIENT_ID,
+ teamId: process.env.APPLE_TEAM_ID,
+ keyId: process.env.APPLE_KEY_ID,
+ privateKey: process.env.APPLE_PRIVATE_KEY,
+ }),
+ ],
+ },
+})
+```
+
+No `authorization` block yet? Create one with just `ssoAdapters`, as in the [SSO setup](/docs/dev/sso#add-the-adapter-to-ssoadapters). Then restart the dev server, since `.env` and the API config are only read at start-up.
+
+
+
+
+
+### Check the result
+
+Open `/login` on your HTTPS domain and press the **Apple** button under **Continue with**. Apple asks whether to share or hide the email, then returns to `/login/sso/apple` and you land signed in.
+
+
+
+
+## How Apple's callback works
+
+Because VitNode asks for the name and email, Apple returns with a **cross-site POST** (`response_mode=form_post`), and browsers do not send VitNode's `SameSite=Lax` sign-in cookie with it. VitNode's request middleware (part of `createVitNodeStart`) answers that POST with a `303` redirect to the same URL as a normal `GET`, which carries the cookie. Nothing is relaxed. The state is still checked against the browser that started the sign-in. Only `code`, `state`, `error` and the name from Apple's `user` field are forwarded.
+
+Apple sends the name only on the **first** authorization. VitNode uses it as the new account's display name (or "Apple user" when it is hidden). A later [import from Connected accounts](/docs/dev/sso/connected-accounts) finds no name, because Apple does not send it again.
+
+## Develop locally
+
+Apple will not redirect to `localhost`. Expose the dev server through an HTTPS tunnel (for example Cloudflare Tunnel or ngrok) and use that host everywhere:
+
+```bash title=".env"
+VITNODE_WEB_URL=https://forum-dev.example.com
+VITNODE_API_URL=https://forum-dev.example.com
+```
+
+Add `forum-dev.example.com` to the Services ID's domains and `https://forum-dev.example.com/login/sso/apple` to its return URLs.
+
+## Scopes and profile fields
+
+| Setting | Value |
+| -------------- | ------------------------------------------------------------- |
+| Scopes | `name email` |
+| Account ID | ID token `sub` (stable per developer team) |
+| Email trusted | when the ID token says `email_verified: true` |
+| Profile fields | first name, last name (sent on the first authorization only) |
+| ID token | RS256 signature, issuer, audience, expiry and nonce validated |
+
+Private relay addresses (`...@privaterelay.appleid.com`) are real, verified inboxes. To email them, register your sending domain under **Sign in with Apple for Email Communication** in the developer account.
+
+## Troubleshooting
+
+
+ The Services ID, Team ID, Key ID or key do not belong together. Check that the
+ key has Sign in with Apple enabled for the same primary App ID as the Services
+ ID, and that `APPLE_CLIENT_ID` is the Services ID, not the App ID.
+
+
+- **"Invalid redirect_uri" on Apple's page.** The return URL is not listed on the Services ID, or `VITNODE_WEB_URL` differs from it.
+- **The callback page says the request expired.** The sign-in started on another host than it returned to (for example `localhost` vs. the tunnel), so the browser had no matching cookie.
+- **A missing variable.** The button still renders. A missing `APPLE_CLIENT_ID` fails as soon as it is pressed; a missing team ID, key ID or private key fails only after Apple's screen, when VitNode exchanges the code. Either way the server log shows `Missing Apple ...`.
+
+## Related
+
+
+
+
+
diff --git a/apps/web/content/docs/dev/sso/atlassian.mdx b/apps/web/content/docs/dev/sso/atlassian.mdx
new file mode 100644
index 000000000..3d28d562b
--- /dev/null
+++ b/apps/web/content/docs/dev/sso/atlassian.mdx
@@ -0,0 +1,127 @@
+---
+title: Atlassian
+description: Add Atlassian account sign-in to VitNode. Create an OAuth 2.0 (3LO) integration with only the User identity API and wire up the Atlassian SSO adapter.
+icon: Layers
+---
+
+Add a **Continue with Atlassian** button so people can sign in with the Atlassian account they use for Jira, Confluence or Trello. This is sign-in only. VitNode asks for the person's own profile and nothing from Jira, Confluence or any other product.
+
+## Before you begin
+
+- A running VitNode app. This page covers only the Atlassian parts; [SSO setup](/docs/dev/sso#set-up-your-first-provider) explains the shared steps and [where the API's `.env` and config live](/docs/dev/sso#where-the-files-live).
+- An [email adapter](/docs/dev/email#configuring-email-adapters), in case Atlassian does not mark the email verified (see [Scopes and profile fields](#scopes-and-profile-fields)).
+
+## Set up the integration
+
+
+
+
+### Create an OAuth 2.0 integration
+
+Open the [Atlassian developer console](https://developer.atlassian.com/console/myapps/), press **Create** and choose **OAuth 2.0 integration**. Name it after your site, since people see the name on the consent screen.
+
+
+
+
+
+### Add only the User identity API
+
+Open **Permissions**, find **User identity API** and press **Add**, then **Configure** and enable **View user profile** (`read:me`). Leave every product API (Jira, Confluence, Bitbucket) alone. VitNode does not need them, and asking for them turns a sign-in button into a product integration.
+
+
+
+
+
+### Add the callback URL
+
+Open **Authorization**, select **Configure** next to **OAuth 2.0 (3LO)** and enter the callback URL:
+
+| Environment | Callback URL |
+| ------------------------------------- | --------------------------------------------- |
+| Development (`VITNODE_WEB_URL` unset) | `http://localhost:3000/login/sso/atlassian` |
+| Production | `https://your-domain.com/login/sso/atlassian` |
+
+VitNode builds it from `VITNODE_WEB_URL`, so it must match exactly.
+
+
+
+
+
+### Copy the credentials
+
+Open **Settings** and copy the **Client ID** and **Secret** into server-side variables (never `clientEnv`):
+
+```bash title=".env"
+ATLASSIAN_CLIENT_ID=AbCdEf123456 # [!code ++]
+ATLASSIAN_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # [!code ++]
+```
+
+
+
+
+
+### Add the adapter
+
+Add `AtlassianSSOApiPlugin` to `authorization.ssoAdapters` in the API's `vitnode.api.config.ts` ([where it lives](/docs/dev/sso#where-the-files-live)), next to any adapters you already have. Keep the rest of the config as it is:
+
+```ts title="src/vitnode.api.config.ts (excerpt)"
+import { AtlassianSSOApiPlugin } from '@vitnode/core/api/adapters/sso/atlassian' // [!code ++]
+import { buildApiConfig } from '@vitnode/core/vitnode.config'
+
+export const vitNodeApiConfig = buildApiConfig({
+ // ...
+ authorization: {
+ ssoAdapters: [
+ // ...
+ // [!code ++:4]
+ AtlassianSSOApiPlugin({
+ clientId: process.env.ATLASSIAN_CLIENT_ID,
+ clientSecret: process.env.ATLASSIAN_CLIENT_SECRET,
+ }),
+ ],
+ },
+})
+```
+
+No `authorization` block yet? Create one with just `ssoAdapters`, as in the [SSO setup](/docs/dev/sso#add-the-adapter-to-ssoadapters). Then restart the dev server, since `.env` and the API config are only read at start-up.
+
+
+
+
+
+### Check the result
+
+Open `/login` and press the **Atlassian** button under **Continue with**. The consent screen should list only "View your user profile". After **Accept** you return to `/login/sso/atlassian` and are signed in, or asked to [confirm an email](/docs/dev/sso/email-confirmation) if Atlassian did not share a verified one.
+
+
+
+
+## Share the integration
+
+A new integration works only for its owner. To let anyone sign in, open **Distribution**, set the status to **Sharing**, and fill in the vendor and privacy details Atlassian asks for.
+
+## Scopes and profile fields
+
+| Setting | Value |
+| -------------- | ---------------------------------------- |
+| Scopes | `read:me` |
+| Account ID | `account_id` (one per Atlassian account) |
+| Email trusted | only with `email_verified: true` |
+| Profile fields | avatar |
+
+Atlassian has no separate first and last name, and VitNode does not split the display name.
+
+VitNode trusts the email only when `/me` returns `email_verified: true`. Atlassian's documented `/me` response has no `email_verified` field, so if your integration's responses don't include it, every new Atlassian member [confirms an email](/docs/dev/sso/email-confirmation) first. Configure an [email adapter](/docs/dev/email#configuring-email-adapters) before testing Atlassian sign-in.
+
+## Troubleshooting
+
+- **"Something went wrong" on Atlassian's page.** The callback URL is not on the **Authorization** page, or `VITNODE_WEB_URL` differs from it.
+- **Only you can sign in.** The integration is not shared yet; see [Share the integration](#share-the-integration).
+- **The consent screen asks for Jira or Confluence.** A product API was added under **Permissions**. Remove it; sign-in needs only `read:me`.
+
+## Related
+
+
+
+
+
diff --git a/apps/web/content/docs/dev/sso/connected-accounts.mdx b/apps/web/content/docs/dev/sso/connected-accounts.mdx
index ace0d2e7c..e33c9e577 100644
--- a/apps/web/content/docs/dev/sso/connected-accounts.mdx
+++ b/apps/web/content/docs/dev/sso/connected-accounts.mdx
@@ -1,38 +1,41 @@
---
title: Connected accounts
-description: Let members connect Google, Discord, Facebook or custom SSO accounts from Settings, import their avatar and name, and keep them in sync on sign-in.
+description: Let members connect any configured SSO provider from Settings, import their avatar and name, and keep them in sync on sign-in.
icon: Link
---
import { TypeTable } from "fumadocs-ui/components/type-table"
-**Settings → Connected accounts** (`/settings/sso`) is where a signed-in member manages their SSO accounts. It shows up in the settings menu as soon as at least one [SSO adapter](/docs/dev/sso) is configured - no extra setup, no extra redirect URIs.
+**Settings → Connected accounts** (`/settings/sso`) is where a signed-in member manages their SSO accounts. It shows up in the settings menu as soon as at least one [SSO adapter](/docs/dev/sso) is configured. It needs no setup of its own and reuses the sign-in redirect URIs.
{/* Image prompt: A settings page titled "Connected accounts" with three grouped lists - "Sign-in accounts" (Google with an email and "Connected Mar 14", Discord, Facebook with a Connect button), "Profile" (Avatar, First name, Last name rows, each with its current value and a "From Google" / "Manual" dropdown) and "Sync" (Google · First name, an "On sign-in" switch and a "Sync now" button), light theme, blue accents. */}
The page uses the same grouped rows as the rest of Settings, in three groups:
-- **Sign-in accounts** - every configured provider with the connected account and date. **Connect**, **Import avatar and name** (a one-time copy after a preview, labelled with what the provider shares) and **Disconnect** live here.
-- **Profile** - shown once a connected account can supply something. One row per field it can supply: the value the member has now, and a dropdown choosing where it comes from (**Manual**, or a connected account that can supply it). Changes save immediately.
-- **Sync** - shown once a field follows an account. One row per account with the fields it covers, an **On sign-in** switch and **Sync now**, which confirms it's the member at the provider and updates those fields right away. They stay signed in; no sign-out, no new session.
+- **Sign-in accounts.** Every configured provider with the connected account and date. **Connect**, **Import avatar and name** (a one-time copy after a preview, labelled with what the provider shares) and **Disconnect** live here.
+- **Profile.** Shown once a connected account can supply something. One row per field it can supply: the value the member has now, and a dropdown choosing where it comes from (**Manual**, or a connected account that can supply it). Changes save immediately.
+- **Sync.** Shown once a field follows an account. One row per account with the fields it covers, an **On sign-in** switch and **Sync now**, which confirms it's the member at the provider and updates those fields right away. The member stays signed in, and no new session is created.
Only the avatar, first name and last name are ever imported. Email, username, display name, language, birthday, phone and headline are never touched. A provider's email is shown as connection info and nothing more.
## How connecting works
-1. The member selects **Connect**. `POST /users/sso/connections/{providerId}/authorize` stores a short-lived, single-use **state** bound to that member, that provider and the `link` intent - only its SHA-256 hash is kept, in `core_users_sso_operations`.
+1. The member selects **Connect**. `POST /users/sso/connections/{providerId}/authorize` checks that this browser signed in within the **last hour**. If not, it answers `403 reauthentication_required` and the member is asked to sign in again. It then stores a short-lived, single-use **state** bound to that member, that provider and the `link` intent, together with the round trip's PKCE verifier and nonce. Only the state's SHA-256 hash is kept, in `core_users_sso_operations`.
2. The browser goes to the provider and comes back to the usual callback, `/login/sso/{providerId}`. That page recognises a settings state and calls the authenticated `POST /users/sso/connections/{providerId}/callback` instead of the public sign-in.
-3. The state is spent the moment it is looked up - even a failed attempt burns it - and it must still be fresh (ten minutes), for the same provider, the same intent and the **currently signed-in member**. Anything else is a `400 invalid_state`.
-4. The provider account is linked to the member. Accounts are never merged by email.
+3. The state is spent the moment it is looked up, so even a failed attempt burns it. It must also be fresh (ten minutes), for the same provider, the same intent and the **currently signed-in member**. Anything else is a `400 invalid_state`.
+4. The provider account is linked to the member by its stable account ID. Accounts are never merged by email, so a provider that shares no email (Reddit, TikTok) or an unverified one connects just the same.
5. The member lands back on `/settings/sso` with a toast.
A provider account already linked to someone else answers `409 account_taken`. A member can have **one account per provider**; a second one answers `409 provider_already_connected`. Both rules are unique constraints on `core_users_sso`, so two racing requests can't sneak past them.
-Connecting never creates a session - public or AdminCP - and never changes the profile.
+Connecting never creates a session, public or AdminCP, and never changes the profile.
+
+The recent sign-in rule means a stolen session cookie alone cannot add a sign-in method the thief controls. Import and sync round trips are not affected: they only read from an account that is already connected.
- The public sign-in and the login-time "Connect *Provider* to your account"
- password flow work exactly as before. See [How Accounts Link](/docs/dev/sso#how-accounts-link).
+ Connecting from Settings doesn't change the public sign-in or the "Connect
+ *Provider* to your account" password step on the login page. Both are covered
+ in [how accounts link](/docs/dev/sso#how-accounts-link).
## Disconnecting
@@ -47,7 +50,7 @@ It refuses with `409 last_sign_in_method` when nothing else could sign the membe
| Passkeys | passkeys are enabled **and** the member has at least one |
| Other SSO accounts | the provider is still configured in `ssoAdapters` |
-The check and the delete run in one transaction that locks the member's row - the same lock passkey removal takes - so two parallel requests can't remove the last two methods at once.
+The check and the delete run in one transaction that locks the member's row, so two parallel requests can't remove the last two methods at once. Passkey removal takes the same lock.
Disconnecting doesn't revoke anything at the provider. The page says so, and members remove the app in their provider account themselves.
@@ -61,27 +64,32 @@ A fresh round trip every time means no provider tokens are ever stored.
## Sync now
-Each field - `avatar`, `firstName`, `lastName` - has at most one source (`core_users_sso_profile_sources`, primary key `userId + field`). Different fields can use different providers. Picking a source in a field's dropdown moves the field to that account.
+Each of `avatar`, `firstName` and `lastName` has at most one source (`core_users_sso_profile_sources`, primary key `userId + field`). Different fields can use different providers. Picking a source in a field's dropdown moves the field to that account.
-**Sync now** starts a round trip with the `sync` intent. The server - not the browser - decides which fields it covers: the ones sourced from that provider when the round trip starts (`400 nothing_to_sync` if there are none). On the way back it checks it's the same provider account (`409 account_mismatch`), re-reads the sources so a field made manual in the meantime is skipped, applies the values and answers with a per-field result. The member stays on `/settings/sso` with a toast, still signed in. No token is stored, and no session is created.
+**Sync now** starts a round trip with the `sync` intent. The server decides which fields it covers, not the browser. It takes the fields sourced from that provider when the round trip starts, and answers `400 nothing_to_sync` if there are none. On the way back it checks it's the same provider account (`409 account_mismatch`), re-reads the sources so a field made manual in the meantime is skipped, applies the values and answers with a per-field result. The member stays on `/settings/sso` with a toast, still signed in. No token is stored, and no session is created.
## Sync on sign-in
-When the **On sign-in** switch is on, every sign-in through that provider refreshes the same fields automatically. It's optional - Sync now works without it. There's no polling and no background job.
+When the **On sign-in** switch is on, every sign-in through that provider refreshes the same fields automatically. It's optional, and **Sync now** works without it. Nothing polls the provider in the background.
The rules that keep this predictable:
- Connecting an account doesn't copy anything. Existing connections start as manual with sign-in updates off.
- A missing or empty value from the provider never erases a local one.
- Sync now and sign-in updates only ever touch fields sourced from that provider.
-- Editing a field yourself - `PATCH /users/me`, an avatar upload or removal, or staff changing the avatar in the AdminCP - switches that field back to manual.
+- Editing a field by hand switches it back to manual. That covers `PATCH /users/me`, an avatar upload or removal, and staff changing the avatar in the AdminCP.
- Importing a field that syncs from a different provider switches it to manual too, and the response lists it in `manualFields`.
- Role limits still apply: personal information rules for names, avatar upload permission and size for the avatar. Importing names never turns on `showRealName`.
-- Anything that goes wrong during a sign-in sync is swallowed - the member is still signed in.
+- An error during a sign-in sync is swallowed, and the member is still signed in.
## Avatars
-Imported avatars go through the normal avatar pipeline (`setUserImage`), so storage, image processing, file ownership and cleanup of the previous avatar are the same as an upload. The download (`downloadRemoteImage`) only speaks HTTPS, resolves the host and refuses private, loopback, link-local and reserved addresses - again at connect time, and again after every redirect (three at most) - caps the size at the role's limit (5 MB hard cap), and trusts the bytes, not the `Content-Type`: only real JPEG, PNG or WebP files under 8192 × 8192 pass.
+Imported avatars go through the normal avatar pipeline (`setUserImage`), so storage, image processing, file ownership and cleanup of the previous avatar are the same as an upload. The download (`downloadRemoteImage`) is strict:
+
+- It only speaks HTTPS.
+- It resolves the host and refuses private, loopback, link-local and reserved addresses. It checks again when it connects, and again after every redirect (three at most).
+- It caps the size at the role's limit, with a hard cap of 5 MB.
+- It trusts the bytes, not the `Content-Type`. Only real JPEG, PNG or WebP files under 8192 × 8192 pass.
The URL and a SHA-256 of the last imported picture are kept on the connection, so the same avatar isn't downloaded again while it's still shown, or stored twice when a provider hands out a new URL for the same image. A failed download leaves the current avatar alone.
@@ -115,19 +123,33 @@ Mutations take JSON bodies, which the browser can't send cross-site without a CO
## Events
-- [`user.sso.linked`](/docs/dev/events/built-in-events) - a provider was connected.
-- [`user.sso.unlinked`](/docs/dev/events/built-in-events) - a provider was disconnected.
-- [`user.sso.profile_synced`](/docs/dev/events/built-in-events) - profile fields changed because of a provider.
-- [`user.sso.preferences_updated`](/docs/dev/events/built-in-events) - profile-field sources or sync-on-sign-in settings were saved, by the member or by staff.
+- [`user.sso.linked`](/docs/dev/events/built-in-events) fires when a provider is connected.
+- [`user.sso.unlinked`](/docs/dev/events/built-in-events) fires when a provider is disconnected.
+- [`user.sso.profile_synced`](/docs/dev/events/built-in-events) fires when a provider changes profile fields.
+- [`user.sso.preferences_updated`](/docs/dev/events/built-in-events) fires when the member or staff save profile-field sources or sync-on-sign-in settings.
## Adapter support
-Which fields a provider can supply comes from the adapter's `profileFields`. The page tells "this provider can't provide it" apart from "this provider didn't send it this time".
-
-| Adapter | Avatar | First name | Last name |
-| -------- | ------ | ---------- | --------- |
-| Google | ✓ | ✓ | ✓ |
-| Discord | ✓ | - | - |
-| Facebook | ✓ | ✓ | ✓ |
-
-Discord has no real-name fields, and VitNode never guesses a first and last name from a username or a full name. For your own provider, see [Custom SSO Adapter](/docs/dev/sso/custom-adapter#profile-data).
+The table lists the profile fields each built-in adapter can supply, from its `profileFields`. "Can supply" is not "always sends": a provider may leave a value out for a particular account or authorization, and the page tells "this provider can't provide it" apart from "this provider didn't send it this time". A missing value never erases the member's own.
+
+| Provider | Avatar | First name | Last name |
+| ------------------------------------- | ------ | ---------- | --------- |
+| [Apple](/docs/dev/sso/apple) | - | ✓ | ✓ |
+| [Atlassian](/docs/dev/sso/atlassian) | ✓ | - | - |
+| [Discord](/docs/dev/sso/discord) | ✓ | - | - |
+| [Facebook](/docs/dev/sso/facebook) | ✓ | ✓ | ✓ |
+| [GitLab](/docs/dev/sso/gitlab) | ✓ | ✓ | ✓ |
+| [Google](/docs/dev/sso/google) | ✓ | ✓ | ✓ |
+| [Kick](/docs/dev/sso/kick) | ✓ | - | - |
+| [LinkedIn](/docs/dev/sso/linkedin) | ✓ | ✓ | ✓ |
+| [Microsoft](/docs/dev/sso/microsoft) | - | ✓ | ✓ |
+| [PayPal](/docs/dev/sso/paypal) | - | ✓ | ✓ |
+| [Reddit](/docs/dev/sso/reddit) | ✓ | - | - |
+| [Slack](/docs/dev/sso/slack) | ✓ | ✓ | ✓ |
+| [TikTok](/docs/dev/sso/tiktok) | ✓ | - | - |
+| [Twitch](/docs/dev/sso/twitch) | ✓ | - | - |
+| [Twitter (X)](/docs/dev/sso/twitter) | ✓ | - | - |
+
+A dash means the adapter never supplies that field. VitNode never guesses a first and last name from a username or a full name, so providers with only a display name supply none. Provider-specific gaps are on each guide: for example, [Apple](/docs/dev/sso/apple) shares the name only on the first authorization, and Facebook skips its default silhouette picture.
+
+These fields are separate from the sign-in email. Whether a provider's email is trusted decides how a new member [signs in or confirms an address](/docs/dev/sso#when-an-email-is-trusted); it is never imported into the profile. For your own provider, see [Custom adapter](/docs/dev/sso/custom-adapter#profile-data).
diff --git a/apps/web/content/docs/dev/sso/custom-adapter.mdx b/apps/web/content/docs/dev/sso/custom-adapter.mdx
index a22b418bc..a2bf5346f 100644
--- a/apps/web/content/docs/dev/sso/custom-adapter.mdx
+++ b/apps/web/content/docs/dev/sso/custom-adapter.mdx
@@ -6,118 +6,198 @@ icon: Puzzle
import { TypeTable } from "fumadocs-ui/components/type-table"
-VitNode ships SSO adapters for Google, Discord and Facebook. To connect any other OAuth2 provider, such as GitHub, write an object that implements `SSOApiPlugin`. VitNode handles the state cookie, account linking, sessions and the login button; your adapter only talks to the provider.
+VitNode includes [15 built-in SSO adapters](/docs/dev/sso#providers), from Apple to Twitter (X). You can connect any other OAuth 2.0 or OpenID Connect provider (for example GitHub, Bitbucket or Zoom) by implementing the `SSOApiPlugin` interface. VitNode handles the sign-in attempt (state, PKCE verifier, nonce), account linking, email confirmation and the login buttons.
## Before you begin
-- An OAuth app at the provider. For GitHub, create one under **Settings → Developer settings → OAuth Apps** with the callback URL `http://localhost:3000/login/sso/github` (your `VITNODE_WEB_URL` plus `login/sso/github`), and put its client ID and secret in the API's `.env` as `GITHUB_CLIENT_ID` and `GITHUB_CLIENT_SECRET`.
+- A VitNode app with SSO set up as on [SSO](/docs/dev/sso#set-up-your-first-provider), so you know which app holds your [API config and `.env`](/docs/dev/sso#where-the-files-live).
+- A GitHub OAuth app. Create one under **Settings → Developer settings → OAuth Apps → New OAuth App**, with the **Authorization callback URL** `http://localhost:3000/login/sso/github` (your `VITNODE_WEB_URL` plus `/login/sso/github`). Copy the **Client ID**, then generate a client secret.
+- An [email adapter](/docs/dev/email#configuring-email-adapters) if members may have no verified primary email on GitHub. They [confirm an address by email](/docs/dev/sso/email-confirmation) first.
## Build a GitHub adapter
-An adapter has three functions: `getUrl`, `fetchToken` and `fetchUser`.
+An adapter has three functions: `getUrl` sends the browser to the provider, `fetchToken` exchanges the code for an access token, and `fetchUser` turns that token into a provider account. Everything runs on the API server.
-### 1. Write the adapter
+
+
-```ts title="apps/api/src/utils/sso/github.ts"
-import type { SSOApiPlugin } from "@vitnode/core/api/models/sso"
-import { getRedirectUri } from "@vitnode/core/api/models/sso"
-import { HTTPException } from "hono/http-exception"
+### Add the credentials
+
+Add the GitHub credentials to the API's `.env`:
+
+```bash title="apps/web/.env (Single App with Turborepo)"
+GITHUB_CLIENT_ID=Ov23lixxxxxxxxxxxxxx # [!code ++]
+GITHUB_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # [!code ++]
+```
+
+
+
+
+
+### Create the adapter
+
+Create `src/utils/sso/github.ts` next to `vitnode.api.config.ts`, in the same app:
+
+```ts title="src/utils/sso/github.ts"
+import type { SSOApiPlugin } from "@vitnode/core/api/models/sso";
+
+import {
+ bearerAuth,
+ formPost,
+ requestSsoProviderJson,
+ requireSsoOption,
+} from "@vitnode/core/api/lib/sso-protocol";
+import { getRedirectUri } from "@vitnode/core/api/models/sso";
+import { HTTPException } from "hono/http-exception";
+import { z } from "zod";
+
+const tokenSchema = z.union([
+ z.object({ access_token: z.string().min(1), token_type: z.string() }),
+ z.object({ error: z.string() }),
+]);
+
+const userSchema = z.object({
+ avatar_url: z.string().nullable().optional(),
+ id: z.number().int().positive(),
+ login: z.string(),
+});
+
+const emailsSchema = z.array(
+ z.object({ email: z.string(), primary: z.boolean(), verified: z.boolean() }),
+);
export const GitHubSSOApiPlugin = ({
clientId,
clientSecret,
}: {
- clientId: string
- clientSecret: string
+ clientId: string | undefined;
+ clientSecret: string | undefined;
}): SSOApiPlugin => {
- const id = "github"
- const redirectUri = getRedirectUri(id)
+ const id = "github";
+ const redirectUri = getRedirectUri(id);
return {
id,
name: "GitHub",
profileFields: ["avatar"],
- // 1. Send the browser to the provider
- getUrl: ({ state }) =>
- `https://github.com/login/oauth/authorize?client_id=${clientId}&redirect_uri=${encodeURIComponent(redirectUri)}&scope=read:user,user:email&state=${state}`,
-
- // 2. Exchange the authorization code for a token
- fetchToken: async (code) => {
- const response = await fetch("https://github.com/login/oauth/access_token", {
- method: "POST",
- headers: {
- Accept: "application/json",
- "Content-Type": "application/json",
- },
- body: JSON.stringify({
- client_id: clientId,
- client_secret: clientSecret,
+ getUrl: ({ codeChallenge, codeChallengeMethod, state }) => {
+ const url = new URL("https://github.com/login/oauth/authorize");
+ url.searchParams.set(
+ "client_id",
+ requireSsoOption(clientId, "GitHub", "client ID"),
+ );
+ url.searchParams.set("redirect_uri", redirectUri);
+ url.searchParams.set("scope", "user:email");
+ url.searchParams.set("state", state);
+ url.searchParams.set("code_challenge", codeChallenge);
+ url.searchParams.set("code_challenge_method", codeChallengeMethod);
+
+ return url.toString();
+ },
+ fetchToken: async (code, { codeVerifier }) => {
+ const token = await requestSsoProviderJson({
+ init: formPost({
+ client_id: requireSsoOption(clientId, "GitHub", "client ID"),
+ client_secret: requireSsoOption(
+ clientSecret,
+ "GitHub",
+ "client secret",
+ ),
code,
+ code_verifier: codeVerifier,
redirect_uri: redirectUri,
}),
- })
-
- const data = await response.json()
- if (!data.access_token) {
- throw new HTTPException(400, { message: "GitHub refused the code" })
+ schema: tokenSchema,
+ step: "token",
+ url: "https://github.com/login/oauth/access_token",
+ });
+ if ("error" in token) {
+ throw new HTTPException(400, { message: "GitHub refused the code" });
}
- return { access_token: data.access_token, token_type: data.token_type }
+ return token;
},
-
- // 3. Read the provider account
- fetchUser: async ({ access_token, token_type }) => {
- const headers = { Authorization: `${token_type} ${access_token}` }
-
- // Fetch Profile
- const userRes = await fetch("https://api.github.com/user", { headers })
- const user = await userRes.json()
-
- // Fetch Primary Email
- const emailRes = await fetch("https://api.github.com/user/emails", { headers })
- const emails: Array<{ email: string; primary: boolean; verified: boolean }> =
- await emailRes.json()
- const primaryEmail = emails.find((e) => e.primary && e.verified)?.email
- if (!primaryEmail) {
- throw new HTTPException(400, { message: "Email not verified" })
- }
+ fetchUser: async ({ access_token }) => {
+ const init = {
+ headers: {
+ ...bearerAuth(access_token),
+ Accept: "application/vnd.github+json",
+ },
+ };
+ const user = await requestSsoProviderJson({
+ init,
+ schema: userSchema,
+ step: "profile",
+ url: "https://api.github.com/user",
+ });
+ const emails = await requestSsoProviderJson({
+ init,
+ schema: emailsSchema,
+ step: "email",
+ url: "https://api.github.com/user/emails",
+ });
+ const primary = emails.find(email => email.primary);
return {
+ avatarUrl: user.avatar_url ?? null,
+ email: primary?.email ?? null,
+ emailVerified: primary?.verified === true,
id: String(user.id),
- email: primaryEmail,
- emailVerified: true, // only a verified primary address gets this far
username: user.login,
- avatarUrl: user.avatar_url,
- }
+ };
},
- }
-}
+ };
+};
```
-`getRedirectUri(id)` returns `{VITNODE_WEB_URL}login/sso/{id}`; send the same value from `getUrl` and `fetchToken`. Throw an `HTTPException` to fail a sign-in with a clear status; a plain `Error` becomes a `500`.
+What keeps it safe:
+
+- **Failed or malformed responses.** `requestSsoProviderJson` adds a 10-second timeout, rejects redirects and non-2xx answers, and validates the JSON with the schema. Any failure becomes a `502` whose message never repeats the provider's body. GitHub reports a bad or expired code as an `error` field instead, which becomes a `400`.
+- **No leaked secrets.** The client secret and the access token stay inside these functions on the server. Nothing here logs them or puts them in an error message, and a missing option throws `Missing GitHub client ID` (or `client secret`) to the server log, not the visitor.
+- **A stable ID.** `id` is GitHub's numeric user ID, which never changes. The `login` can be renamed, so it is only the suggested username.
+- **A truthful email.** `user:email` lets `fetchUser` read the primary address and whether GitHub verified it. An unverified primary address returns `emailVerified: false`, and no primary address returns `email: null`. Either way a new member confirms an email first.
+- **PKCE.** GitHub supports `S256`, so `getUrl` sends VitNode's challenge and `fetchToken` sends the matching verifier.
-### 2. Register it in the API config
+
-```ts title="apps/api/src/vitnode.api.config.ts"
-import { buildApiConfig } from "@vitnode/core/vitnode.config"
-import { GitHubSSOApiPlugin } from "./utils/sso/github"
+
+
+### Add it to `ssoAdapters`
+
+In `vitnode.api.config.ts`, import the adapter and add it to `authorization.ssoAdapters`. Keep everything else, including adapters you already have:
+
+```ts title="src/vitnode.api.config.ts (excerpt)"
+import { buildApiConfig } from "@vitnode/core/vitnode.config";
+
+import { GitHubSSOApiPlugin } from "./utils/sso/github"; // [!code ++]
export const vitNodeApiConfig = buildApiConfig({
- // [!code ++:8]
+ // ...
authorization: {
ssoAdapters: [
+ // ...
+ // [!code ++:4]
GitHubSSOApiPlugin({
- clientId: process.env.GITHUB_CLIENT_ID!,
- clientSecret: process.env.GITHUB_CLIENT_SECRET!,
+ clientId: process.env.GITHUB_CLIENT_ID,
+ clientSecret: process.env.GITHUB_CLIENT_SECRET,
}),
],
},
-})
+});
```
+No `authorization` block yet? Add it with just `ssoAdapters`, as in [SSO](/docs/dev/sso#add-the-adapter-to-ssoadapters).
+
+
+
+
+`getRedirectUri(id)` returns `{VITNODE_WEB_URL}/login/sso/{id}`; send the same value from `getUrl` and `fetchToken`. Throw an `HTTPException` to fail a sign-in with a clear status; a plain `Error` becomes a `500`.
+
## Check the result
-Restart the API and open `/login`. A **Continue with GitHub** button appears on `/login` and `/register`; pressing it sends you to GitHub and back to `/login/sso/github`, signed in. It is a neutral, text-only button until you give the adapter an [icon and a brand color](/docs/dev/sso/icons).
+1. Restart the dev server and open `/login` in a private window. A **GitHub** button appears under **Continue with** on `/login` and `/register`. It is a neutral, text-only button until you give the adapter an [icon and a brand color](/docs/dev/sso/icons).
+2. Press it and authorize the app on GitHub. You return to `/login/sso/github` and are signed in as a new member. If your primary GitHub email is not verified, **Confirm your email** appears instead.
+3. Sign out and press the button again. The same GitHub account signs straight in.
## `SSOApiPlugin` reference
@@ -144,19 +224,19 @@ Restart the API and open `/login`. A **Continue with GitHub** button appears on
type: "string",
},
getUrl: {
- description: "Returns the provider authorization redirect URL.",
+ description: "Returns the provider authorization URL. Pass state through unchanged; send codeChallenge (S256) and nonce when the provider supports PKCE and OpenID Connect.",
required: true,
- type: "({ state: string }) => string",
+ type: "(request: { state: string; codeChallenge: string; codeChallengeMethod: 'S256'; nonce: string }) => string",
},
fetchToken: {
- description: "Exchanges code for access_token.",
+ description: "Exchanges the code for tokens. The context carries the attempt's PKCE verifier, nonce and any extra callback parameters (such as Apple's user). Extra token fields, like id_token, are kept for fetchUser.",
required: true,
- type: "(code: string) => Promise<{ access_token: string; token_type: string }>",
+ type: "(code: string, context: SSOCallbackContext) => Promise",
},
fetchUser: {
- description: "Fetches the user profile: id, email, username, and optionally emailVerified, avatarUrl, firstName and lastName. VitNode keys accounts on the email, so set emailVerified: false (or throw) for an address the provider has not confirmed - VitNode then refuses the sign-in with a 400 instead of creating, linking or verifying an account with it. Set it to true when the provider confirms the address. The built-in adapters only ever return confirmed addresses.",
+ description: "Returns the provider account: a stable id, and optionally email, emailVerified, username, avatarUrl, firstName and lastName. Validate the ID token here when the provider issues one. Set emailVerified: true only when the provider verified the address. Return emailVerified: false (or email: null) whenever you cannot verify ownership from the provider's response; VitNode then asks a new visitor to confirm an email. An omitted emailVerified counts as true, for older adapters. A returning member is always recognized by id.",
required: true,
- type: "(token: TokenResponse) => Promise",
+ type: "(token: SSOTokenResponse, context: SSOCallbackContext) => Promise",
},
profileFields: {
description: "Which profile fields the provider can supply for Connected accounts: 'avatar', 'firstName', 'lastName'. Leave it out and nothing is ever imported from this adapter.",
@@ -166,6 +246,37 @@ Restart the API and open `/login`. A **Continue with GitHub** button appears on
}}
/>
+Adapters written for older versions, with `getUrl({ state })`, `fetchToken(code)` and `fetchUser(token)`, still work, because JavaScript ignores the extra arguments.
+
+## PKCE, ID tokens and provider calls
+
+`@vitnode/core/api/lib/sso-protocol` has the small helpers the built-in adapters use. All of them are server-only:
+
+| Helper | Use it to |
+| -------------------------- | ------------------------------------------------------------------------------------------------- |
+| `requestSsoProviderJson` | Call a provider endpoint with a 10-second timeout, no redirects, and validate the JSON with a Zod schema (`502` otherwise) |
+| `requireSsoOption` | Read a required option such as the client ID; a missing one throws to the server log, not the visitor |
+| `formPost`, `basicClientAuth`, `bearerAuth` | Build a form-encoded token request, HTTP Basic client auth or a bearer header |
+| `verifySsoIdToken` | Validate an ID token with `jose`: signature, algorithm, `iss`, `aud`, `exp`/`iat` and `nonce` |
+| `remoteJwks` | Fetch and cache the provider's signing keys |
+
+```ts title="src/utils/sso/acme.ts"
+import { remoteJwks, verifySsoIdToken } from '@vitnode/core/api/lib/sso-protocol'
+
+// inside the adapter
+fetchUser: async ({ id_token }, { nonce }) => {
+ const claims = await verifySsoIdToken({
+ audience: clientId,
+ idToken: id_token,
+ issuer: 'https://id.acme.example',
+ keys: remoteJwks('https://id.acme.example/.well-known/jwks.json'),
+ nonce,
+ })
+
+ return { id: String(claims.sub), email: null }
+},
+```
+
See [Provider icons](/docs/dev/sso/icons) for the accepted `icon` and `brandColor` formats, and for registering a React component instead.
## Profile data
@@ -175,42 +286,31 @@ See [Provider icons](/docs/dev/sso/icons) for the accepted `icon` and `brandColo
1. Declare what the provider can supply in `profileFields`.
2. Return those values from `fetchUser` as `avatarUrl`, `firstName` and `lastName`.
-```ts
-fetchUser: async ({ access_token, token_type }) => {
- // ...
- return {
- id: String(user.id),
- email: primaryEmail,
- username: user.login,
- avatarUrl: user.avatar_url ?? null,
- }
-},
-profileFields: ["avatar"],
-```
+The [GitHub adapter](#create-the-adapter) does both for the avatar: `profileFields: ["avatar"]`, and `avatarUrl: user.avatar_url ?? null`. GitHub has only a display name, so it supplies no first or last name.
-All three are optional, so adapters written before this still work - they just have nothing to import. A few rules keep imports honest:
+All three are optional, so older adapters still work and have nothing to import. A few rules keep imports honest:
- Return `null` (or leave it out) when the provider has no value. VitNode never erases a member's value with an empty one.
-- Only send separate first and last names the provider actually has. Don't split a full name - `"Mary Ann Smith"` has no safe answer.
+- Only send separate first and last names the provider actually has. Don't split a full name. `"Mary Ann Smith"` has no safe answer.
- `avatarUrl` must be `https`. VitNode downloads and re-stores it itself, with SSRF protection and size and type checks, so you don't have to.
- Don't add scopes just for profile data. If a field needs extra permission, leave it out of `profileFields`.
-## Built-in adapters
+## Related
diff --git a/apps/web/content/docs/dev/sso/discord.mdx b/apps/web/content/docs/dev/sso/discord.mdx
index 53f3416c9..ea0331b09 100644
--- a/apps/web/content/docs/dev/sso/discord.mdx
+++ b/apps/web/content/docs/dev/sso/discord.mdx
@@ -1,43 +1,16 @@
---
title: Discord
-description: Add Discord sign-in to VitNode - create an application, register the redirect URL and wire up the Discord SSO adapter in your API config.
+description: Add Discord sign-in to VitNode. Create an application, register the redirect URL and wire up the Discord SSO adapter in your API config.
icon: MessagesSquare
---
-import { Tab, Tabs } from 'fumadocs-ui/components/tabs'
+Discord is one of the quickest providers to set up, because nothing waits on a
+review or a publish step. Create an application, add one redirect URL and copy
+two values.
-Discord is the quickest of the three to set up: no consent screen review, no app
-modes, no verification. Create an application, add one redirect URL, copy two
-values.
+## Before you begin
-## Quick start
-
-If you already have a client ID and secret, this is the entire integration.
-
-```bash title=".env"
-DISCORD_CLIENT_ID=1234567890123456789
-DISCORD_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-```
-
-```ts title="src/vitnode.api.config.ts"
-import { DiscordSSOApiPlugin } from '@vitnode/core/api/adapters/sso/discord' // [!code ++]
-import { buildApiConfig } from '@vitnode/core/vitnode.config'
-
-export const vitNodeApiConfig = buildApiConfig({
- plugins: [],
- // [!code ++:8]
- authorization: {
- ssoAdapters: [
- DiscordSSOApiPlugin({
- clientId: process.env.DISCORD_CLIENT_ID,
- clientSecret: process.env.DISCORD_CLIENT_SECRET,
- }),
- ],
- },
-})
-```
-
-Restart the API and a **Discord** button appears on `/login`.
+- A running VitNode app. This page covers only the Discord parts; [SSO setup](/docs/dev/sso#set-up-your-first-provider) explains the shared steps and [where the API's `.env` and config live](/docs/dev/sso#where-the-files-live).
## Set up the application
@@ -69,8 +42,8 @@ authorization screen, and accept the terms.
Open **OAuth2** in the left navigation and, under **Redirects**, press **Add
Redirect**. Paste the URI for the origin you are running and save.
-VitNode builds this URI from `VITNODE_WEB_URL`, so it has to match exactly -
-no trailing slash, no locale prefix.
+VitNode builds this URI from `VITNODE_WEB_URL`, so it has to match exactly,
+with no trailing slash and no locale prefix.
| Environment | Redirect URL |
| ------------------------------------- | ------------------------------------------- |
@@ -94,8 +67,8 @@ Add both entries so one application covers local development and your live site.
### Copy the client ID and secret
Still on the **OAuth2** page, the **Client ID** and **Client Secret** are in the
-client information block at the top. Press **Reset Secret** if the secret was
-never revealed or you have lost it - Discord shows it once.
+client information block at the top. Discord shows the secret once, so press
+**Reset Secret** if it was never revealed or you have lost it.
{/* Image prompt: The Discord Developer Portal OAuth2 page client information block showing "Client ID" with a Copy button and "Client Secret" with a Reset Secret button, values redacted, dark theme, 1100x450. */}
@@ -105,7 +78,7 @@ never revealed or you have lost it - Discord shows it once.
### Set the environment variables
-Server-side variables, so leave them out of `clientEnv` - that list is what
+These are server-side variables, so leave them out of `clientEnv`. That list
publishes a value to the browser bundle, and a client secret in the browser
bundle is a client secret you have published.
@@ -118,20 +91,20 @@ DISCORD_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # [!code ++]
-### Register the adapter
+### Add the adapter
-Add `DiscordSSOApiPlugin` to `authorization.ssoAdapters`. It is a plain factory
-function, not a class - there is no `new`.
+Add `DiscordSSOApiPlugin` to `authorization.ssoAdapters` in the API's `vitnode.api.config.ts` ([where it lives](/docs/dev/sso#where-the-files-live)), next to any adapters you already have. Keep the rest of the config as it is:
-```ts title="src/vitnode.api.config.ts"
+```ts title="src/vitnode.api.config.ts (excerpt)"
import { DiscordSSOApiPlugin } from '@vitnode/core/api/adapters/sso/discord' // [!code ++]
import { buildApiConfig } from '@vitnode/core/vitnode.config'
export const vitNodeApiConfig = buildApiConfig({
- plugins: [],
- // [!code ++:8]
+ // ...
authorization: {
ssoAdapters: [
+ // ...
+ // [!code ++:4]
DiscordSSOApiPlugin({
clientId: process.env.DISCORD_CLIENT_ID,
clientSecret: process.env.DISCORD_CLIENT_SECRET,
@@ -141,44 +114,15 @@ export const vitNodeApiConfig = buildApiConfig({
})
```
-The redirect URI is computed when this file is evaluated, so restart the API
-rather than relying on a hot reload:
-
-
-
-```bash tab="bun"
-bun dev
-```
-
-```bash tab="pnpm"
-pnpm dev
-```
-
-```bash tab="npm"
-npm run dev
-```
-
-
+No `authorization` block yet? Create one with just `ssoAdapters`, as in the [SSO setup](/docs/dev/sso#add-the-adapter-to-ssoadapters). Then restart the dev server, since `.env` and the API config are only read at start-up.
-### Verify it works
-
-Ask the API what it thinks it supports:
-
-```bash
-curl http://localhost:3000/api/@vitnode/core/middleware
-```
-
-The `sso` array in the response now lists the provider. Here it is abridged, with the SVG icon cut short:
-
-```json
-{ "sso": [{ "id": "discord", "name": "Discord", "icon": "
@@ -97,13 +71,13 @@ portfolio, and **Finalize** creates the app.
### Add the OAuth redirect URI
-In the app dashboard, open the Facebook Login use case's settings - **Use cases →
+In the app dashboard, open the Facebook Login use case's settings: **Use cases →
Authenticate and request data from users with Facebook Login → Customize →
Settings** on a new app, or **Products → Facebook Login → Settings** on an older
one. Paste your URI into **Valid OAuth Redirect URIs** and save.
VitNode builds this URI itself, from `VITNODE_WEB_URL`, so it has to match
-character for character - no trailing slash, no locale prefix.
+character for character, with no trailing slash and no locale prefix.
| Environment | Valid OAuth Redirect URI |
| ------------------------------------- | -------------------------------------------- |
@@ -139,7 +113,7 @@ text; the **App Secret** is behind a **Show** button and your password.
### Set the environment variables
-Server-side variables, so leave them out of `clientEnv` - that list is what
+These are server-side variables, so leave them out of `clientEnv`. That list
publishes a value to the browser bundle, and an app secret in the browser bundle
is an app secret you have published.
@@ -152,20 +126,20 @@ FACEBOOK_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # [!code ++]
-### Register the adapter
+### Add the adapter
-Add `FacebookSSOApiPlugin` to `authorization.ssoAdapters` in your API config. It
-is a plain factory function, not a class - there is no `new`.
+Add `FacebookSSOApiPlugin` to `authorization.ssoAdapters` in the API's `vitnode.api.config.ts` ([where it lives](/docs/dev/sso#where-the-files-live)), next to any adapters you already have. Keep the rest of the config as it is:
-```ts title="src/vitnode.api.config.ts"
+```ts title="src/vitnode.api.config.ts (excerpt)"
import { FacebookSSOApiPlugin } from '@vitnode/core/api/adapters/sso/facebook' // [!code ++]
import { buildApiConfig } from '@vitnode/core/vitnode.config'
export const vitNodeApiConfig = buildApiConfig({
- plugins: [],
- // [!code ++:8]
+ // ...
authorization: {
ssoAdapters: [
+ // ...
+ // [!code ++:4]
FacebookSSOApiPlugin({
clientId: process.env.FACEBOOK_CLIENT_ID,
clientSecret: process.env.FACEBOOK_CLIENT_SECRET,
@@ -175,44 +149,15 @@ export const vitNodeApiConfig = buildApiConfig({
})
```
-The redirect URI is computed when this file is evaluated, so restart the API
-rather than relying on a hot reload:
-
-
-
-```bash tab="bun"
-bun dev
-```
-
-```bash tab="pnpm"
-pnpm dev
-```
-
-```bash tab="npm"
-npm run dev
-```
-
-
+No `authorization` block yet? Create one with just `ssoAdapters`, as in the [SSO setup](/docs/dev/sso#add-the-adapter-to-ssoadapters). Then restart the dev server, since `.env` and the API config are only read at start-up.
-### Verify it works
-
-Ask the API what it thinks it supports:
-
-```bash
-curl http://localhost:3000/api/@vitnode/core/middleware
-```
-
-The `sso` array in the response now lists the provider. Here it is abridged, with the SVG icon cut short:
-
-```json
-{ "sso": [{ "id": "facebook", "name": "Facebook", "icon": "