diff --git a/apps/api/migrations/20261019161102_add_moderation_report_reasons/migration.sql b/apps/api/migrations/20261019161102_add_moderation_report_reasons/migration.sql
new file mode 100644
index 000000000..b95dd19c1
--- /dev/null
+++ b/apps/api/migrations/20261019161102_add_moderation_report_reasons/migration.sql
@@ -0,0 +1,11 @@
+CREATE TABLE "core_moderation_report_reasons" (
+ "id" serial PRIMARY KEY,
+ "code" varchar(32) NOT NULL UNIQUE,
+ "requiresDetails" boolean DEFAULT false NOT NULL,
+ "position" integer DEFAULT 0 NOT NULL,
+ "createdAt" timestamp DEFAULT now() NOT NULL,
+ "updatedAt" timestamp DEFAULT now() NOT NULL
+);
+--> statement-breakpoint
+ALTER TABLE "core_moderation_report_reasons" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
+CREATE INDEX "core_moderation_report_reasons_position_idx" ON "core_moderation_report_reasons" ("position");
\ No newline at end of file
diff --git a/apps/api/migrations/20261019161102_add_moderation_report_reasons/snapshot.json b/apps/api/migrations/20261019161102_add_moderation_report_reasons/snapshot.json
new file mode 100644
index 000000000..ce974c5c7
--- /dev/null
+++ b/apps/api/migrations/20261019161102_add_moderation_report_reasons/snapshot.json
@@ -0,0 +1,20195 @@
+{
+ "version": "8",
+ "dialect": "postgres",
+ "id": "48d4174b-1986-4fa5-8919-80bd98f443d6",
+ "prevIds": [
+ "fa39e13e-f0d1-451d-9e0f-5c0cf68593db"
+ ],
+ "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_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_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": "example_advanced_articles",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_advanced_articles_categories",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_advanced_articles_faq",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_advanced_articles_related_articles",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_advanced_articles_tags",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_advanced_articles_translations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_articles",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_articles_gallery",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_categories",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_discussions",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_events",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_events_gallery",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_events_related_events",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_events_sessions",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_events_tags",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_events_translations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_localized_articles",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_localized_articles_translations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_pages",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_tags",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_tags_related_tags",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "example_tags_translations",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "forum_comments",
+ "entityType": "tables",
+ "schema": "public"
+ },
+ {
+ "isRlsEnabled": true,
+ "name": "forum_topics",
+ "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": "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_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": "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": "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": "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": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "excerpt",
+ "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": "example_advanced_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "true",
+ "generated": null,
+ "identity": null,
+ "name": "syndicationIndexable",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "syndicationNoIndex",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "5",
+ "generated": null,
+ "identity": null,
+ "name": "syndicationPriority",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_categories"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_categories"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_categories"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_categories"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_faq"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_faq"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_faq"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_faq"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_faq"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "question",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_faq"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "answer",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_faq"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_related_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_related_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_related_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_related_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_tags"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "seoTitle",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "seoDescription",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "code",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "excerpt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "0",
+ "generated": null,
+ "identity": null,
+ "name": "views",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "featured",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "noIndex",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "author",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "animation",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "category",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles_gallery"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles_gallery"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles_gallery"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_articles_gallery"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_categories"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_categories"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_categories"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_categories"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "body",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "author",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "board",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": {
+ "type": "byDefault",
+ "name": "example_events_id_seq",
+ "increment": "1",
+ "startWith": "1",
+ "minValue": "1",
+ "maxValue": "9223372036854775807",
+ "cache": 1,
+ "cycle": false
+ },
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "primaryTag",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "category",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_gallery"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_gallery"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_gallery"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_gallery"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_related_events"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_related_events"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_related_events"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_related_events"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_sessions"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_sessions"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_sessions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_sessions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_sessions"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_sessions"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "startsAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_sessions"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_tags"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_tags"
+ },
+ {
+ "type": "bigint",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "body",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles"
+ },
+ {
+ "type": "boolean",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "false",
+ "generated": null,
+ "identity": null,
+ "name": "featured",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "type": "text",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "body",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "type": "serial",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_pages"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_pages"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_pages"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_pages"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_pages"
+ },
+ {
+ "type": "varchar(200)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "title",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_pages"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_pages"
+ },
+ {
+ "type": "jsonb",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'[]'",
+ "generated": null,
+ "identity": null,
+ "name": "content",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_pages"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "gen_random_uuid()",
+ "generated": null,
+ "identity": null,
+ "name": "id",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "hiddenBy",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "category",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_related_tags"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "relatedItemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_related_tags"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "position",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_related_tags"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_related_tags"
+ },
+ {
+ "type": "uuid",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "itemId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "languageId",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_translations"
+ },
+ {
+ "type": "integer",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "1",
+ "generated": null,
+ "identity": null,
+ "name": "version",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "createdAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "now()",
+ "generated": null,
+ "identity": null,
+ "name": "updatedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_translations"
+ },
+ {
+ "type": "timestamp",
+ "typeSchema": null,
+ "notNull": false,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "publishedAt",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_translations"
+ },
+ {
+ "type": "varchar(32)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": "'draft'",
+ "generated": null,
+ "identity": null,
+ "name": "status",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_translations"
+ },
+ {
+ "type": "varchar(100)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "name",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_translations"
+ },
+ {
+ "type": "varchar(160)",
+ "typeSchema": null,
+ "notNull": true,
+ "dimensions": 0,
+ "default": null,
+ "generated": null,
+ "identity": null,
+ "name": "slug",
+ "entityType": "columns",
+ "schema": "public",
+ "table": "example_tags_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(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(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"
+ },
+ {
+ "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": "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": "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": "syndicationPriority",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_advanced_articles_syndication_priority_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_advanced_articles_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_advanced_articles_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_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": "example_advanced_articles_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles"
+ },
+ {
+ "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": "example_advanced_articles_categories_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles_categories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_advanced_articles_categories_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles_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": "example_advanced_articles_faq_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles_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": "example_advanced_articles_related_articles_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles_related_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_advanced_articles_related_articles_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles_related_articles"
+ },
+ {
+ "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": "example_advanced_articles_tags_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_advanced_articles_tags_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles_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": "example_advanced_articles_translations_language_id_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles_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": "example_advanced_articles_translations_language_id_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "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": "example_articles_status_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_articles_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "code",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_articles_code_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "author",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_articles_author_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "animation",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_articles_animation_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "category",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_articles_category_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_articles_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_articles_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_articles_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "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": "example_articles_gallery_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_articles_gallery"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "relatedItemId",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_articles_gallery_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_articles_gallery"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_categories_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_categories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_categories_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_categories"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_discussions_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "author",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_discussions_author_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "board",
+ "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": "example_discussions_board_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_discussions_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_discussions_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "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": "example_discussions_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "hiddenBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_discussions_hidden_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "primaryTag",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_events_primary_tag_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "category",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_events_category_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_events_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_events_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_events_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "hiddenBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_events_hidden_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_events_gallery_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_events_gallery_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_events_related_events_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_events_related_events_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_events_sessions_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_events_tags_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_events_tags_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_events_translations_language_id_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_events_translations_language_id_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_localized_articles_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_localized_articles"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_localized_articles_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_localized_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": "example_localized_articles_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_localized_articles"
+ },
+ {
+ "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": "example_localized_articles_translations_language_id_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_localized_articles_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": "example_localized_articles_translations_language_id_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "slug",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": true,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_pages_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_pages"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_pages_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_pages"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_pages_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_pages_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_pages"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "category",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_tags_category_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "createdAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_tags_created_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "updatedAt",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_tags_updated_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_tags_status_published_at_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "nameExplicit": true,
+ "columns": [
+ {
+ "value": "hiddenBy",
+ "isExpression": false,
+ "asc": true,
+ "nullsFirst": false,
+ "opclass": null
+ }
+ ],
+ "isUnique": false,
+ "where": null,
+ "with": "",
+ "method": "btree",
+ "concurrently": false,
+ "name": "example_tags_hidden_by_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_tags_related_tags_position_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_tags_related_tags_related_item_id_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_tags_translations_language_id_status_idx",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_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": "example_tags_translations_language_id_slug_key",
+ "entityType": "indexes",
+ "schema": "public",
+ "table": "example_tags_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": "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": 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_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": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_advanced_articles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_advanced_articles_categories_itemId_example_advanced_ar",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_advanced_articles_categories"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_categories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_advanced_articles_categories_relatedItemId_example_cate",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_advanced_articles_categories"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_advanced_articles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_advanced_articles_faq_itemId_example_advanced_articles_",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_advanced_articles_faq"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_advanced_articles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_advanced_articles_related_articles_itemId_example_advan",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_advanced_articles_related_articles"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_advanced_articles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_advanced_articles_related_articles_relatedItemId_exampl",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_advanced_articles_related_articles"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_advanced_articles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_advanced_articles_tags_ATchHLRtvoCM_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_advanced_articles_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_advanced_articles_tags_dEsWdkDmu7nW_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_advanced_articles_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_advanced_articles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_advanced_articles_translations_itemId_example_advanced_",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_advanced_articles_translations_languageId_core_language",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "author"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "example_articles_author_core_users_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "animation"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_articles_animation_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "category"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_categories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_articles_category_example_categories_id_fk",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_articles"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_articles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_articles_gallery_itemId_example_articles_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_articles_gallery"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_articles_gallery_relatedItemId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_articles_gallery"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "hiddenBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "example_discussions_hiddenBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "author"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "example_discussions_author_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "board"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_content_containers",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_discussions_board_core_content_containers_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_discussions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "hiddenBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "example_events_hiddenBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "primaryTag"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "example_events_primaryTag_example_tags_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "category"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_categories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "example_events_category_example_categories_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_events_gallery_itemId_example_events_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events_gallery"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_files",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_events_gallery_relatedItemId_core_files_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events_gallery"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_events_related_events_itemId_example_events_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events_related_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_events_related_events_oaRvqnKyAS7L_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events_related_events"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_events_sessions_itemId_example_events_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events_sessions"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_events_tags_itemId_example_events_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_events_tags_relatedItemId_example_tags_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_events",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_events_translations_itemId_example_events_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_events_translations_languageId_core_languages_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_localized_articles",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_localized_articles_translations_itemId_example_localize",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_localized_articles_translations_languageId_core_languag",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "hiddenBy"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_users",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "example_tags_hiddenBy_core_users_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "category"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_categories",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "SET NULL",
+ "name": "example_tags_category_example_categories_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_tags_related_tags_itemId_example_tags_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_tags_related_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "relatedItemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_tags_related_tags_relatedItemId_example_tags_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_tags_related_tags"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "itemId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "example_tags",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "CASCADE",
+ "name": "example_tags_translations_itemId_example_tags_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_tags_translations"
+ },
+ {
+ "nameExplicit": false,
+ "columns": [
+ "languageId"
+ ],
+ "schemaTo": "public",
+ "tableTo": "core_languages",
+ "columnsTo": [
+ "id"
+ ],
+ "onUpdate": "CASCADE",
+ "onDelete": "RESTRICT",
+ "name": "example_tags_translations_languageId_core_languages_id_fkey",
+ "entityType": "fks",
+ "schema": "public",
+ "table": "example_tags_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": [
+ "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"
+ },
+ {
+ "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",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "example_advanced_articles_categories_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_advanced_articles_categories"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "example_advanced_articles_related_articles_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_advanced_articles_related_articles"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "example_advanced_articles_tags_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_advanced_articles_tags"
+ },
+ {
+ "columns": [
+ "itemId",
+ "languageId"
+ ],
+ "nameExplicit": true,
+ "name": "example_advanced_articles_translations_item_id_language_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_advanced_articles_translations"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "example_articles_gallery_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_articles_gallery"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "example_events_gallery_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_events_gallery"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "example_events_related_events_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_events_related_events"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "example_events_tags_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_events_tags"
+ },
+ {
+ "columns": [
+ "itemId",
+ "languageId"
+ ],
+ "nameExplicit": true,
+ "name": "example_events_translations_item_id_language_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_events_translations"
+ },
+ {
+ "columns": [
+ "itemId",
+ "languageId"
+ ],
+ "nameExplicit": true,
+ "name": "example_localized_articles_translations_item_id_language_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_localized_articles_translations"
+ },
+ {
+ "columns": [
+ "itemId",
+ "relatedItemId"
+ ],
+ "nameExplicit": true,
+ "name": "example_tags_related_tags_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_tags_related_tags"
+ },
+ {
+ "columns": [
+ "itemId",
+ "languageId"
+ ],
+ "nameExplicit": true,
+ "name": "example_tags_translations_item_id_language_id_pk",
+ "entityType": "pks",
+ "schema": "public",
+ "table": "example_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_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_posts_pkey",
+ "schema": "public",
+ "table": "blog_posts",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "example_advanced_articles_pkey",
+ "schema": "public",
+ "table": "example_advanced_articles",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "example_advanced_articles_faq_pkey",
+ "schema": "public",
+ "table": "example_advanced_articles_faq",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "example_articles_pkey",
+ "schema": "public",
+ "table": "example_articles",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "example_categories_pkey",
+ "schema": "public",
+ "table": "example_categories",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "example_discussions_pkey",
+ "schema": "public",
+ "table": "example_discussions",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "example_events_pkey",
+ "schema": "public",
+ "table": "example_events",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "example_events_sessions_pkey",
+ "schema": "public",
+ "table": "example_events_sessions",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "example_localized_articles_pkey",
+ "schema": "public",
+ "table": "example_localized_articles",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "example_pages_pkey",
+ "schema": "public",
+ "table": "example_pages",
+ "entityType": "pks"
+ },
+ {
+ "columns": [
+ "id"
+ ],
+ "nameExplicit": false,
+ "name": "example_tags_pkey",
+ "schema": "public",
+ "table": "example_tags",
+ "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"
+ },
+ {
+ "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": [
+ "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/web/content/docs/dev/events/built-in-events.mdx b/apps/web/content/docs/dev/events/built-in-events.mdx
index 6fb07331e..751adba30 100644
--- a/apps/web/content/docs/dev/events/built-in-events.mdx
+++ b/apps/web/content/docs/dev/events/built-in-events.mdx
@@ -481,22 +481,26 @@ member is notified.
## Moderation events
-Seven names, declared in `VitNodeEvents` in
+Eleven names, declared in `VitNodeEvents` in
`packages/vitnode/src/api/models/events.ts` and emitted by core with
-`pluginId: "@vitnode/core"`. Each fires **after** its database transaction
-commits. The envelope's `actor` is the reporter for `created` and the
-moderator for the rest. Adding an internal note emits nothing. See
+`pluginId: "@vitnode/core"`. Each fires **after** its database write
+commits. The envelope's `actor` is the reporter for `created`, the
+administrator for `report_reason.*` and the moderator for the rest. Adding an internal note emits nothing. See
[Moderation](/docs/dev/moderation).
| Event | Payload | Fires when |
| ---------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------- |
-| `moderation.report.created` | `{ reportId, pluginId, targetType, targetId, reason }` | A signed-in user files a report |
+| `moderation.report.created` | `{ reportId, pluginId, targetType, targetId, reason }` | A signed-in user files a report. `reason` is the reason's `code` |
| `moderation.report.assigned` | `{ reportId, assigneeId, previousAssigneeId }` | A moderator takes, reassigns or unassigns a report. `assigneeId` may be `null` |
| `moderation.report.action` | `{ reportId, action, pluginId, targetType, targetId }` | A content action from the ModCP changed the content. `action` is `hide` or `unhide` |
| `moderation.report.resolved` | `{ reportId, resolution }` | A report is closed with an outcome |
| `moderation.report.reopened` | `{ reportId }` | A closed report is reopened |
| `moderation.report.note_updated` | `{ reportId, noteId }` | A moderator edits an internal note |
| `moderation.report.note_deleted` | `{ reportId, noteId }` | A moderator deletes an internal note |
+| `moderation.report_reason.created` | `{ reasonId, code }` | An admin adds a [report reason](/docs/dev/moderation/manage-report-reasons) |
+| `moderation.report_reason.updated` | `{ reasonId, code }` | An admin edits a report reason |
+| `moderation.report_reason.deleted` | `{ reasonId, code }` | An admin deletes a report reason. Its reports stay |
+| `moderation.report_reason.reordered` | `{ reasonIds }` | An admin saves a new order. `reasonIds` lists every reason in that order |
A hide or restore from the ModCP also emits the content type's own
`content.{id}.hidden` or `unhidden` event, because it goes through the same
diff --git a/apps/web/content/docs/dev/moderation/enable-reports.mdx b/apps/web/content/docs/dev/moderation/enable-reports.mdx
index df1fb1333..62a93ef3b 100644
--- a/apps/web/content/docs/dev/moderation/enable-reports.mdx
+++ b/apps/web/content/docs/dev/moderation/enable-reports.mdx
@@ -24,6 +24,7 @@ implementation:
import { ImgDocs } from "@/components/fumadocs/img";
import reportDialog from "./moderation-report-dialog.webp";
+import reportDetails from "./moderation-report-details.webp";
Turn on reports for a content type so signed-in readers can flag a published record to your moderators. This guide follows the blog plugin, whose articles are reportable.
@@ -105,6 +106,13 @@ import { manifest } from "@/manifest.gen";
{!metadata.hidden && metadata.itemId !== null ? (
+
+Pick a reason. The dialog moves on by itself and keeps the article and your reason at the top, with **Change** to go back:
+
+
-A toast says **Report sent**. Try sending it again and the toast tells you, politely, that you already did. A moderator with `can_view_reports` on the blog now sees the report in [the ModCP](/docs/dev/moderation/process-reports).
+Choose **Send report** and the dialog says **Report sent**. Try reporting the same article again and a toast tells you, politely, that you already did. A moderator with `can_view_reports` on the blog now sees the report in [the ModCP](/docs/dev/moderation/process-reports).
## What the server checks
- The reporter must be signed in. A guest gets `401`, and a reader whose session ended mid-dialog sees a "sign in again" message.
- The target must be readable by the reporter through the public API. Anything else is `404`, the same answer as a typo.
-- **Other** needs at least 10 characters of details. Details are at most 2000 characters.
+- The reason must exist. A reason deleted while the dialog was open answers `400 reason_not_found`, and the dialog asks the reader to pick another.
+- A reason with **Require details** needs at least 10 characters of details. Details are at most 2000 characters.
- One reporter can hold one open report per target. Other reporters get their own reports.
- A user can file at most 20 reports per hour, on top of the per-IP [rate limiter](/docs/dev/advanced/rate-limiter) every API route has.
diff --git a/apps/web/content/docs/dev/moderation/index.mdx b/apps/web/content/docs/dev/moderation/index.mdx
index 01b2c1b21..adbc7ad92 100644
--- a/apps/web/content/docs/dev/moderation/index.mdx
+++ b/apps/web/content/docs/dev/moderation/index.mdx
@@ -19,6 +19,7 @@ A moderator signs in with their normal user session. The ModCP never asks for an
| You want to | Read |
| --------------------------------------------------------------- | ------------------------------------------------------------------- |
| Let readers report a Content Engine content type, like the blog | [Enable reports](/docs/dev/moderation/enable-reports) |
+| Choose the reasons members pick from when they report | [Report reasons](/docs/dev/moderation/manage-report-reasons) |
| Limit moderators to some categories or sections | [Scoped permissions](/docs/dev/moderation/scoped-permissions) |
| Give a user or role moderator permissions in the AdminCP | [Configure moderators](/docs/dev/moderation/configure-moderators) |
| Review, assign, resolve and act on reports | [Process reports](/docs/dev/moderation/process-reports) |
diff --git a/apps/web/content/docs/dev/moderation/manage-report-reasons.mdx b/apps/web/content/docs/dev/moderation/manage-report-reasons.mdx
new file mode 100644
index 000000000..b7f246243
--- /dev/null
+++ b/apps/web/content/docs/dev/moderation/manage-report-reasons.mdx
@@ -0,0 +1,77 @@
+---
+title: Report reasons
+description: Add, translate, reorder and delete the reasons members pick from when they report content in VitNode, from AdminCP → Moderation → Report reasons.
+icon: ListChecks
+---
+
+import { ImgDocs } from "@/components/fumadocs/img";
+import reasonsList from "./moderation-report-reasons.webp";
+import reasonSheet from "./moderation-report-reason-sheet.webp";
+
+Report reasons are the choices a member sees first in the report dialog, like **Spam** or **Abusive content**. You manage them in the AdminCP, with a title and a description in every language your site serves, so the list fits your community instead of a fixed one.
+
+A new installation starts with four reasons: **Spam**, **Abusive content**, **Rule violation** and **Other**. **Other** asks the member to explain. Sites upgraded from the fixed list get the same four on their next `pnpm db:migrate`, and existing reports keep their reason.
+
+## Before you begin
+
+You need the **Report reasons** admin permissions, or a root role. Each permission covers one action: **View report reasons**, **Create report reasons**, **Edit and reorder report reasons** and **Delete report reasons**. Grant them in **AdminCP → Staff → Administrators**.
+
+
+
+
+
+### Open the list
+
+Open **AdminCP → Moderation → Report reasons**. The list is in the order members see it, and the **Details** column shows which reasons make the member explain.
+
+
+
+
+
+
+
+### Add a reason
+
+Choose **Add reason**. Write a short **Title** and a one-line **Description**, then pick another language from the menu next to each field to translate it. A language you leave empty falls back to the site's default language.
+
+Turn on **Require details** when moderators cannot act on the reason without an explanation, as with **Other**. The member then has to write at least 10 characters before the report is sent.
+
+
+
+Choose **Add reason**. The reason goes to the end of the list, and members can pick it right away.
+
+
+
+
+
+### Put the most common reason first
+
+Drag a row by its handle to move it. With a keyboard, focus the handle, press Space, move with the arrow keys and press Space again to drop. The order saves on drop.
+
+
+
+
+
+## Edit or delete a reason
+
+Choose the pencil to edit a reason. Reports already filed with it show the new title, because a report stores which reason was picked, not its text.
+
+Choose the trash can to delete a reason. Members can no longer pick it, and reports filed with it stay, labeled **Removed reason** in the [Moderator CP](/docs/dev/moderation/process-reports).
+
+## Limits
+
+- At most 10 reasons. **Add reason** is disabled at 10 and the API refuses an 11th with `409 limit_reached`.
+- At least one reason. The last one cannot be deleted (`409 last_reason`), so the dialog always has something to offer.
+- Titles are up to 100 characters, descriptions up to 255.
+
+## Check the result
+
+Open a published article as a signed-in member and choose **Report**. The dialog lists your reasons in your order, in the member's language, and a reason with **Require details** asks **What should moderators know?** before **Send report**.
+
+The routes and events behind this page are in the [moderation reference](/docs/dev/moderation/reference#report-reasons).
diff --git a/apps/web/content/docs/dev/moderation/meta.json b/apps/web/content/docs/dev/moderation/meta.json
index 752f2acbc..fa3c4e79a 100644
--- a/apps/web/content/docs/dev/moderation/meta.json
+++ b/apps/web/content/docs/dev/moderation/meta.json
@@ -5,6 +5,7 @@
"pages": [
"index",
"enable-reports",
+ "manage-report-reasons",
"scoped-permissions",
"configure-moderators",
"process-reports",
diff --git a/apps/web/content/docs/dev/moderation/moderation-report-details.webp b/apps/web/content/docs/dev/moderation/moderation-report-details.webp
new file mode 100644
index 000000000..3932c4b82
Binary files /dev/null and b/apps/web/content/docs/dev/moderation/moderation-report-details.webp differ
diff --git a/apps/web/content/docs/dev/moderation/moderation-report-dialog.webp b/apps/web/content/docs/dev/moderation/moderation-report-dialog.webp
index b93f9ef75..fef9a91f8 100644
Binary files a/apps/web/content/docs/dev/moderation/moderation-report-dialog.webp and b/apps/web/content/docs/dev/moderation/moderation-report-dialog.webp differ
diff --git a/apps/web/content/docs/dev/moderation/moderation-report-reason-sheet.webp b/apps/web/content/docs/dev/moderation/moderation-report-reason-sheet.webp
new file mode 100644
index 000000000..1f5452af9
Binary files /dev/null and b/apps/web/content/docs/dev/moderation/moderation-report-reason-sheet.webp differ
diff --git a/apps/web/content/docs/dev/moderation/moderation-report-reasons.webp b/apps/web/content/docs/dev/moderation/moderation-report-reasons.webp
new file mode 100644
index 000000000..17d0d6038
Binary files /dev/null and b/apps/web/content/docs/dev/moderation/moderation-report-reasons.webp differ
diff --git a/apps/web/content/docs/dev/moderation/reference.mdx b/apps/web/content/docs/dev/moderation/reference.mdx
index eee531f5b..cda1f937a 100644
--- a/apps/web/content/docs/dev/moderation/reference.mdx
+++ b/apps/web/content/docs/dev/moderation/reference.mdx
@@ -102,11 +102,12 @@ A ghost button labelled **Report** that opens the dialog. Its accessible name is
| `describedBy` | `string` | No | | Id of the element naming the item, read after the label so list buttons differ |
| `locale` | `string \| null` | No | `null` | The locale the reader was served, for moderators |
| `requestedLocale` | `string \| null` | No | `null` | The locale the reader asked for, when the content fell back to another |
+| `preview` | `ReportPreview` | No | | What the reader is reporting, shown at the top of the dialog: `{ title, imageUrl?, meta? }`, already translated |
| `className` | `string` | No | | Classes for the button |
### `ReportDialog`
-The same dialog, controlled by you. Use it for your own trigger, such as a menu item, or to share one dialog across a long list. It takes `target`, `typeLabel`, `locale` and `requestedLocale` like `ReportButton`, plus `open: boolean` and `onOpenChange(open: boolean)`.
+The same dialog, controlled by you. Use it for your own trigger, such as a menu item, or to share one dialog across a long list. It takes `target`, `typeLabel`, `locale`, `requestedLocale` and `preview` like `ReportButton`, plus `open: boolean` and `onOpenChange(open: boolean)`.
```tsx
import type { ContentTarget } from "@vitnode/core/content";
@@ -127,7 +128,7 @@ const [reporting, setReporting] = useState(null);
) : null}
```
-The dialog shows a toast with a description after every outcome: sent, already reported (`409 duplicate`), no longer available (`404`), too many reports (`429`), session ended (`401`), invalid details (`400`) and anything else.
+The dialog has three screens: pick a reason, add details, and **Report sent**. Picking a reason with a click, tap, Space or Enter moves on; arrow keys only move the selection. A failure shows a toast with a description: already reported (`409 duplicate`), no longer available (`404`), too many reports (`429`), session ended (`401`), reason just removed (`400 reason_not_found`, back to the reasons), missing details (`400 details_required`) and anything else.
## Report lifecycle
@@ -137,7 +138,7 @@ The dialog shows a toast with a description after every outcome: sent, already r
| `in_progress` | Taking or assigning a report, or reopening an assigned one |
| `done` | Resolving with `no_violation`, `action_taken` or `duplicate` |
-Reasons are `spam`, `abusive`, `rule_violation` and `other`; `other` needs details. Every change except a note needs `expectedVersion`. A stale version answers `409` with `{ error: "conflict", current }`, and taking a report someone else holds answers `409 already_claimed`.
+A report stores its reason's `code`. Admins manage the reasons in [Report reasons](/docs/dev/moderation/manage-report-reasons); the four starter codes are `spam`, `abusive`, `rule_violation` and `other`, and only a reason with `requiresDetails` needs details. Every change except a note needs `expectedVersion`. A stale version answers `409` with `{ error: "conflict", current }`, and taking a report someone else holds answers `409 already_claimed`.
## ModCP API routes
@@ -145,7 +146,8 @@ All under `/api/@vitnode/core/moderation`, using the user session. A guest gets
| Method and path | Permission | Body |
| ------------------------------------ | -------------------- | -------------------------------------------- |
-| `POST /reports` | Signed in | `{ pluginId, targetType, targetId, locale?, requestedLocale?, reason, description? }` |
+| `GET /reasons` | Anyone | Returns `{ reasons }` in display order, each `{ id, code, requiresDetails, title, description }` with every translation as `{ languageCode, value }[]` |
+| `POST /reports` | Signed in | `{ pluginId, targetType, targetId, locale?, requestedLocale?, reason, description? }`, where `reason` is a reason `code` |
| `GET /reports` | `can_view_reports` | Query `status`, `assigned`, `search`, `page`, `pageSize` |
| `GET /reports/{id}` | `can_view_reports` | |
| `POST /reports/{id}/claim` | `can_manage_reports` | `{ expectedVersion }` |
@@ -158,6 +160,27 @@ All under `/api/@vitnode/core/moderation`, using the user session. A guest gets
| `POST /reports/{id}/actions/{action}` | `can_manage_reports` and the action's permission | `{ expectedVersion }` |
| `GET /reports/{id}/assignees` | `can_manage_reports` | |
+## Report reasons
+
+The AdminCP routes behind [Report reasons](/docs/dev/moderation/manage-report-reasons), under `/api/@vitnode/core/admin/report-reasons`, using the AdminCP session. Each needs the matching `report_reasons` admin permission.
+
+| Method and path | Permission | Body | Success |
+| ---------------- | ------------ | ------------------------------------------------- | ------------------ |
+| `GET /` | `can_view` | | `{ reasons }` with `position` |
+| `POST /create` | `can_create` | `{ title, description, requiresDetails }` | `201 { id }`, added last |
+| `PATCH /{id}` | `can_edit` | Any of `{ title, description, requiresDetails }` | `{ id }` |
+| `PUT /reorder` | `can_edit` | `{ ids }`: every reason id once, in the new order | `200` |
+| `DELETE /{id}` | `can_delete` | | `200` |
+
+`title` and `description` are `{ languageCode, value }[]`. `title` needs at least one value. Empty values are dropped, and a missing language falls back to the default language in the dialog. A new reason gets a generated `code`.
+
+| `error` | Status | When |
+| --------------- | ------ | ------------------------------------------- |
+| `limit_reached` | `409` | Creating an 11th reason |
+| `last_reason` | `409` | Deleting the only reason left |
+| `mismatch` | `400` | `ids` misses, repeats or invents a reason |
+| `not_found` | `404` | No reason with that id |
+
## Approval routes
Also under `/api/@vitnode/core/moderation`, for [approvals](/docs/content-engine/approvals). The queue routes need a moderator entry and show only submissions in containers where the moderator holds `can_approve`; anything else answers `404`, so its existence is not revealed. Every response is `Cache-Control: private, no-store`.
@@ -196,6 +219,10 @@ Statuses are `pending`, `approved`, `rejected`, `superseded` (replaced by the au
| `moderation.report.reopened` | `{ reportId }` |
| `moderation.report.note_updated` | `{ reportId, noteId }` |
| `moderation.report.note_deleted` | `{ reportId, noteId }` |
+| `moderation.report_reason.created` | `{ reasonId, code }` |
+| `moderation.report_reason.updated` | `{ reasonId, code }` |
+| `moderation.report_reason.deleted` | `{ reasonId, code }` |
+| `moderation.report_reason.reordered` | `{ reasonIds }` in the new order |
| `content.approval.submitted` | `{ submissionId, replacedSubmissionId, pluginId, contentTypeId, contentId, containerId, kind, authorId }` |
| `content.approval.approved` | `{ submissionId, pluginId, contentTypeId, contentId, containerId, kind, authorId, reviewerId }` |
| `content.approval.rejected` | `{ submissionId, pluginId, contentTypeId, contentId, containerId, kind, authorId, reviewerId, reason }` |
@@ -225,7 +252,8 @@ The snapshot is read in one read-only transaction, so its fields and `source` de
| Limit | Value |
| -------------------------------- | ---------- |
-| Report details | 2000 characters, at least 10 for `other` |
+| Report details | 2000 characters, at least 10 when the reason requires details |
+| Report reasons | 1 to 10; titles up to 100 characters, descriptions up to 255 |
| Plain-text notes, reopen reasons | 3 to 2000 characters |
| Resolution explanations | Optional, up to 2000 characters |
| Rich-text notes | 64 KB, not empty |
@@ -244,4 +272,6 @@ File fields keep `{ id, name, mimeType, size, url }` only. The file's bytes are
The migration `20261011193321_add_moderation_reports` adds `core_moderation_reports` and `core_moderation_report_events`. Neither references the reported content, so deleting content keeps its reports. Reporter, assignee and resolver are `ON DELETE SET NULL`, so deleting an account keeps the evidence. The unique `openKey` column enforces one open report per reporter and target, even under concurrent submissions.
+The migration `20261019161102_add_moderation_report_reasons` adds `core_moderation_report_reasons` with a unique `code`, `requiresDetails` and `position`. Titles and descriptions live in `core_languages_words`. `core_moderation_reports.reason` holds the reason's `code` without a foreign key, so deleting a reason keeps its reports. `db:prepare` and `db:migrate` add the four starter reasons only while the table is empty.
+
Approvals live in `core_content_submissions`, one row per submission. Rows are never deleted with the content, author and reviewer are `ON DELETE SET NULL`, and a partial unique index allows one `pending` submission per record. Container policy overrides are stored in `core_content_containers.policies`.
diff --git a/apps/web/src/locales/@vitnode/core/pl.json b/apps/web/src/locales/@vitnode/core/pl.json
index c6057336c..4b6458e12 100644
--- a/apps/web/src/locales/@vitnode/core/pl.json
+++ b/apps/web/src/locales/@vitnode/core/pl.json
@@ -26,6 +26,11 @@
"@vitnode/core:plugins:can_view": "Przeglądanie zainstalowanych wtyczek i ich wersji",
"@vitnode/core:queue": "Zadania w kolejce",
"@vitnode/core:queue:can_view": "Wyświetlanie zadań w kolejce",
+ "@vitnode/core:report_reasons": "Powody zgłoszeń",
+ "@vitnode/core:report_reasons:can_create": "Dodawanie powodów zgłoszeń",
+ "@vitnode/core:report_reasons:can_delete": "Usuwanie powodów zgłoszeń",
+ "@vitnode/core:report_reasons:can_edit": "Edycja i zmiana kolejności powodów zgłoszeń",
+ "@vitnode/core:report_reasons:can_view": "Podgląd powodów zgłoszeń",
"@vitnode/core:roles": "Role",
"@vitnode/core:roles:can_create": "Tworzenie ról",
"@vitnode/core:roles:can_delete": "Usuwanie ról",
@@ -476,6 +481,10 @@
"moderators": "Moderatorzy",
"title": "Zespół"
},
+ "moderation": {
+ "title": "Moderacja",
+ "report_reasons": "Powody zgłoszeń"
+ },
"system": {
"files": "Pliki",
"integrations": "Integracje",
@@ -723,6 +732,60 @@
},
"title": "Zespół"
},
+ "moderation": {
+ "report_reasons": {
+ "title": "Powody zgłoszeń",
+ "desc": "Powody, spośród których członkowie wybierają, gdy coś zgłaszają - maksymalnie 10. Przeciągnij, aby zmienić ich kolejność.",
+ "create": "Dodaj powód",
+ "limit": "Możesz mieć maksymalnie {max} powodów. Usuń jeden, aby dodać kolejny.",
+ "columns": {
+ "reason": "Powód",
+ "details": "Szczegóły"
+ },
+ "details_required": "Wymagane",
+ "details_optional": "Opcjonalne",
+ "actions": {
+ "label": "Akcje dla: {reason}",
+ "edit": "Edytuj",
+ "delete": "Usuń"
+ },
+ "reorder": {
+ "success": "Kolejność zapisana",
+ "success_desc": "Członkowie widzą powody w nowej kolejności."
+ },
+ "form": {
+ "create_title": "Dodaj powód zgłoszenia",
+ "edit_title": "Edytuj powód zgłoszenia",
+ "sheet_desc": "Członkowie widzą tytuł i opis w oknie zgłoszenia, w swoim języku.",
+ "title": "Tytuł",
+ "title_desc": "Krótko i konkretnie, np. „Spam” albo „Nękanie”.",
+ "description": "Opis",
+ "description_desc": "Jedno zdanie, które pomaga odróżnić ten powód od pozostałych.",
+ "requires_details": "Wymagaj szczegółów",
+ "requires_details_desc": "Członkowie muszą opisać problem (co najmniej {min} znaków), zanim wyślą zgłoszenie.",
+ "submit_create": "Dodaj powód",
+ "submit_edit": "Zapisz zmiany",
+ "created": "Powód dodany",
+ "created_desc": "Członkowie mogą wybrać „{reason}”, gdy coś zgłaszają.",
+ "updated": "Powód zapisany",
+ "updated_desc": "Istniejące zgłoszenia też pokazują nowy tytuł.",
+ "error": "Nie udało się zapisać powodu",
+ "error_desc": "Sprawdź pola i spróbuj ponownie.",
+ "limit_reached": "Możesz mieć maksymalnie {max} powodów. Usuń jeden, aby dodać kolejny."
+ },
+ "delete": {
+ "title": "Usunąć „{reason}”?",
+ "desc": "Członkowie nie będą mogli go wybrać. Wysłane już zgłoszenia zostają, ale zamiast tytułu pokazują „Usunięty powód”.",
+ "confirm": "Usuń powód",
+ "cancel": "Anuluj",
+ "success": "Powód usunięty",
+ "success_desc": "„{reason}” nie pojawia się już w oknie zgłoszenia.",
+ "error": "Nie udało się usunąć powodu",
+ "last_reason": "Zostaw co najmniej jeden powód - członkowie muszą mieć z czego wybierać.",
+ "unknown": "Coś poszło nie tak. Spróbuj ponownie za chwilę."
+ }
+ }
+ },
"system": {
"files": {
"actions": {
diff --git a/apps/web/src/page-cache.gen.ts b/apps/web/src/page-cache.gen.ts
index 7c4d0fd9c..117ce331e 100644
--- a/apps/web/src/page-cache.gen.ts
+++ b/apps/web/src/page-cache.gen.ts
@@ -33,6 +33,7 @@ export const pageCacheRoutes: PageCacheRouteTable = [
{ path: '/admin/core/debug/search' },
{ path: '/admin/core/debug/services' },
{ path: '/admin/core/debug/vitnode' },
+ { path: '/admin/core/moderation/report-reasons' },
{ path: '/admin/core/staff/admins' },
{ path: '/admin/core/staff/moderators' },
{ path: '/admin/core/system/files' },
diff --git a/packages/vitnode/scripts/prepare-database.ts b/packages/vitnode/scripts/prepare-database.ts
index 7dfdabd47..062a351c9 100644
--- a/packages/vitnode/scripts/prepare-database.ts
+++ b/packages/vitnode/scripts/prepare-database.ts
@@ -7,9 +7,11 @@ import postgres from "postgres";
import { core_admin_permissions } from "@/database/admins.js";
import { core_languages, core_languages_words } from "@/database/languages.js";
+import { core_moderation_report_reasons } from "@/database/moderation.js";
import { core_moderators_permissions } from "@/database/moderators.js";
import { core_roles } from "@/database/roles.js";
import { SEARCH_TEXT_CONFIGS } from "@/database/search.js";
+import { MODERATION_DEFAULT_REPORT_REASONS } from "@/lib/moderation/const.js";
import type { VitNodeApiI18nConfig } from "../src/lib/i18n/types.js";
import type { VitNodeApiConfig } from "../src/vitnode.config.js";
@@ -641,6 +643,8 @@ export const initialDataForDatabase = async (given?: VitNodeApiConfig) => {
.limit(1);
const languages = languagesFromApiConfig(config.i18n);
+ const { code: defaultLanguageCode } =
+ languages.find(language => language.default) ?? languages[0];
// Idempotent by `code`, which is what lets a locale be added to the config and
// picked up by the next `db:prepare` without touching the rows already there.
@@ -695,9 +699,6 @@ export const initialDataForDatabase = async (given?: VitNodeApiConfig) => {
* not serve English - which is reachable now that these rows come from the
* app's own configuration rather than from a fallback that always said `en`.
*/
- const { code: defaultLanguageCode } =
- languages.find(language => language.default) ?? languages[0];
-
await dbClient.insert(core_languages_words).values(
[
{ role: roles[0].id, value: "Guest" },
@@ -733,6 +734,52 @@ export const initialDataForDatabase = async (given?: VitNodeApiConfig) => {
unrestricted: true,
});
}
+
+ await seedReportReasons(dbClient, defaultLanguageCode);
+};
+
+const seedReportReasons = async (
+ dbClient: VitNodeApiConfig["dbProvider"],
+ languageCode: string,
+) => {
+ const [reasonCount] = await dbClient
+ .select({ count: count() })
+ .from(core_moderation_report_reasons)
+ .limit(1);
+ if (reasonCount.count > 0) return;
+
+ const reasons = await dbClient
+ .insert(core_moderation_report_reasons)
+ .values(
+ MODERATION_DEFAULT_REPORT_REASONS.map((reason, position) => ({
+ code: reason.code,
+ position,
+ requiresDetails: reason.requiresDetails,
+ })),
+ )
+ .onConflictDoNothing({ target: core_moderation_report_reasons.code })
+ .returning({
+ code: core_moderation_report_reasons.code,
+ id: core_moderation_report_reasons.id,
+ });
+
+ const words = reasons.flatMap(({ code, id }) => {
+ const reason = MODERATION_DEFAULT_REPORT_REASONS.find(
+ item => item.code === code,
+ );
+ if (!reason) return [];
+
+ return (["title", "description"] as const).map(variable => ({
+ itemId: id,
+ languageCode,
+ pluginCode: "core",
+ tableName: "core_moderation_report_reasons",
+ value: reason[variable],
+ variable,
+ }));
+ });
+ if (words.length > 0)
+ await dbClient.insert(core_languages_words).values(words);
};
/**
diff --git a/packages/vitnode/src/api/lib/moderation/report-reasons.ts b/packages/vitnode/src/api/lib/moderation/report-reasons.ts
new file mode 100644
index 000000000..dea615bf7
--- /dev/null
+++ b/packages/vitnode/src/api/lib/moderation/report-reasons.ts
@@ -0,0 +1,82 @@
+import type { Context } from "hono";
+
+import { z } from "@hono/zod-openapi";
+import { and, asc, eq, inArray } from "drizzle-orm";
+
+import { core_languages_words } from "@/database/languages";
+import { core_moderation_report_reasons } from "@/database/moderation";
+
+export const REPORT_REASON_WORDS = {
+ pluginCode: "core",
+ tableName: "core_moderation_report_reasons",
+} as const;
+
+export type ReportReasonWordVariable = "description" | "title";
+
+const multiLangSchema = z.array(
+ z.object({ languageCode: z.string(), value: z.string() }),
+);
+
+export const reportReasonSchema = z.object({
+ id: z.number(),
+ code: z.string(),
+ requiresDetails: z.boolean(),
+ position: z.number(),
+ title: multiLangSchema,
+ description: multiLangSchema,
+});
+
+export type ReportReason = z.infer;
+
+const wordsFor = async (c: Context, ids: number[]) => {
+ if (ids.length === 0) return [];
+
+ return await c
+ .get("db")
+ .select({
+ itemId: core_languages_words.itemId,
+ languageCode: core_languages_words.languageCode,
+ value: core_languages_words.value,
+ variable: core_languages_words.variable,
+ })
+ .from(core_languages_words)
+ .where(
+ and(
+ eq(core_languages_words.pluginCode, REPORT_REASON_WORDS.pluginCode),
+ eq(core_languages_words.tableName, REPORT_REASON_WORDS.tableName),
+ inArray(core_languages_words.itemId, ids),
+ ),
+ );
+};
+
+export const listReportReasons = async (
+ c: Context,
+): Promise => {
+ const rows = await c
+ .get("db")
+ .select({
+ code: core_moderation_report_reasons.code,
+ id: core_moderation_report_reasons.id,
+ position: core_moderation_report_reasons.position,
+ requiresDetails: core_moderation_report_reasons.requiresDetails,
+ })
+ .from(core_moderation_report_reasons)
+ .orderBy(
+ asc(core_moderation_report_reasons.position),
+ asc(core_moderation_report_reasons.id),
+ );
+ const words = await wordsFor(
+ c,
+ rows.map(row => row.id),
+ );
+ const pick = (id: number, variable: ReportReasonWordVariable) =>
+ words
+ .filter(word => word.itemId === id && word.variable === variable)
+ .map(word => ({ languageCode: word.languageCode, value: word.value }));
+
+ return rows.map(row => ({
+ ...row,
+ description: pick(row.id, "description"),
+ title: pick(row.id, "title"),
+ }));
+};
diff --git a/packages/vitnode/src/api/models/events.ts b/packages/vitnode/src/api/models/events.ts
index 8ed841ce7..545c279db 100644
--- a/packages/vitnode/src/api/models/events.ts
+++ b/packages/vitnode/src/api/models/events.ts
@@ -115,6 +115,21 @@ export interface VitNodeEvents {
reportId: number;
resolution: string;
};
+ "moderation.report_reason.created": {
+ code: string;
+ reasonId: number;
+ };
+ "moderation.report_reason.deleted": {
+ code: string;
+ reasonId: number;
+ };
+ "moderation.report_reason.reordered": {
+ reasonIds: number[];
+ };
+ "moderation.report_reason.updated": {
+ code: string;
+ reasonId: number;
+ };
"notifications.deleted_all": {
items: number;
};
diff --git a/packages/vitnode/src/api/modules/admin/admin.module.ts b/packages/vitnode/src/api/modules/admin/admin.module.ts
index 2626d8c11..914e3579b 100644
--- a/packages/vitnode/src/api/modules/admin/admin.module.ts
+++ b/packages/vitnode/src/api/modules/admin/admin.module.ts
@@ -7,6 +7,7 @@ import { debugAdminModule } from "./debug/debug.admin.module";
import { filesAdminModule } from "./files/files.admin.module";
import { notificationsAdminModule } from "./notifications/notifications.admin.module";
import { pluginsAdminModule } from "./plugins/plugins.admin.module";
+import { reportReasonsAdminModule } from "./report-reasons/report-reasons.admin.module";
import { rolesAdminModule } from "./roles/roles.admin.module";
import { sendNotificationRoute } from "./routes/notifications.route";
import { sessionAdminRoute } from "./routes/session.route";
@@ -27,6 +28,7 @@ export const adminModule = buildModule({
dashboardAdminModule,
notificationsAdminModule,
pluginsAdminModule,
+ reportReasonsAdminModule,
],
cronJobs: [],
});
diff --git a/packages/vitnode/src/api/modules/admin/report-reasons/report-reasons.admin.module.ts b/packages/vitnode/src/api/modules/admin/report-reasons/report-reasons.admin.module.ts
new file mode 100644
index 000000000..7a4a48130
--- /dev/null
+++ b/packages/vitnode/src/api/modules/admin/report-reasons/report-reasons.admin.module.ts
@@ -0,0 +1,20 @@
+import { buildModule } from "@/api/builders";
+
+import {
+ createReportReasonAdminRoute,
+ deleteReportReasonAdminRoute,
+ listReportReasonsAdminRoute,
+ reorderReportReasonsAdminRoute,
+ updateReportReasonAdminRoute,
+} from "./routes/report-reasons.routes";
+
+export const reportReasonsAdminModule = buildModule({
+ name: "report-reasons",
+ routes: [
+ listReportReasonsAdminRoute,
+ createReportReasonAdminRoute,
+ reorderReportReasonsAdminRoute,
+ updateReportReasonAdminRoute,
+ deleteReportReasonAdminRoute,
+ ],
+});
diff --git a/packages/vitnode/src/api/modules/admin/report-reasons/routes/report-reasons.routes.ts b/packages/vitnode/src/api/modules/admin/report-reasons/routes/report-reasons.routes.ts
new file mode 100644
index 000000000..96dc39595
--- /dev/null
+++ b/packages/vitnode/src/api/modules/admin/report-reasons/routes/report-reasons.routes.ts
@@ -0,0 +1,316 @@
+import type { Context } from "hono";
+
+import { z } from "@hono/zod-openapi";
+import { and, count, eq, inArray, max, sql } from "drizzle-orm";
+import { randomBytes } from "node:crypto";
+
+import { buildRoute } from "@/api/builders";
+import {
+ listReportReasons,
+ REPORT_REASON_WORDS,
+ reportReasonSchema,
+} from "@/api/lib/moderation/report-reasons";
+import { saveLanguageWords } from "@/api/lib/save-language-words";
+import { errorSchema, json } from "@/api/modules/moderation/lib/schema";
+import { core_languages_words } from "@/database/languages";
+import { core_moderation_report_reasons } from "@/database/moderation";
+import { MODERATION_LIMITS } from "@/lib/moderation/const";
+
+const titleSchema = z
+ .array(
+ z.object({
+ languageCode: z.string(),
+ value: z
+ .string()
+ .trim()
+ .min(1)
+ .max(MODERATION_LIMITS.reasonTitleMaxLength),
+ }),
+ )
+ .min(1);
+
+const descriptionSchema = z.array(
+ z.object({
+ languageCode: z.string(),
+ value: z.string().trim().max(MODERATION_LIMITS.reasonDescriptionMaxLength),
+ }),
+);
+
+const reasonBody = z.object({
+ title: titleSchema,
+ description: descriptionSchema,
+ requiresDetails: z.boolean(),
+});
+
+const idParams = z.object({
+ id: z.coerce.number().int().positive().openapi({ example: 1 }),
+});
+
+const LOCK_REASONS = sql`lock table ${core_moderation_report_reasons} in share row exclusive mode`;
+
+const filledIn = (values: z.infer) =>
+ values.filter(item => item.value.length > 0);
+
+const saveReasonWords = async (
+ c: Context,
+ reasonId: number,
+ body: Partial>,
+) => {
+ if (body.title !== undefined) {
+ await saveLanguageWords(c, {
+ ...REPORT_REASON_WORDS,
+ itemId: reasonId,
+ values: filledIn(body.title),
+ variable: "title",
+ });
+ }
+ if (body.description !== undefined) {
+ await saveLanguageWords(c, {
+ ...REPORT_REASON_WORDS,
+ itemId: reasonId,
+ values: filledIn(body.description),
+ variable: "description",
+ });
+ }
+};
+
+const findReasonRow = async (c: Context, id: number) => {
+ const [row] = await c
+ .get("db")
+ .select({
+ code: core_moderation_report_reasons.code,
+ id: core_moderation_report_reasons.id,
+ })
+ .from(core_moderation_report_reasons)
+ .where(eq(core_moderation_report_reasons.id, id))
+ .limit(1);
+
+ return row;
+};
+
+export const listReportReasonsAdminRoute = buildRoute({
+ adminStaffPermission: { module: "report_reasons", permission: "can_view" },
+ route: {
+ method: "get",
+ path: "/",
+ description: "Every report reason in display order (Admin only)",
+ responses: {
+ 200: json(
+ z.object({ reasons: z.array(reportReasonSchema) }),
+ "Report reasons",
+ ),
+ 403: { description: "Access Denied" },
+ },
+ },
+ handler: async c => c.json({ reasons: await listReportReasons(c) }, 200),
+});
+
+export const createReportReasonAdminRoute = buildRoute({
+ adminStaffPermission: { module: "report_reasons", permission: "can_create" },
+ route: {
+ method: "post",
+ path: "/create",
+ description:
+ "Add a report reason at the end of the list (Admin only). Members see it in the report dialog right away. There can be at most 10 reasons",
+ request: {
+ body: {
+ required: true,
+ content: { "application/json": { schema: reasonBody } },
+ },
+ },
+ responses: {
+ 201: json(z.object({ id: z.number() }), "Report reason created"),
+ 403: { description: "Access Denied" },
+ 409: json(
+ errorSchema,
+ "The list already holds the maximum number of reasons",
+ ),
+ },
+ },
+ handler: async c => {
+ const body = c.req.valid("json");
+ const code = `reason_${randomBytes(6).toString("hex")}`;
+ const created = await c.get("db").transaction(async tx => {
+ await tx.execute(LOCK_REASONS);
+ const [{ position: lastPosition, total }] = await tx
+ .select({
+ position: max(core_moderation_report_reasons.position),
+ total: count(),
+ })
+ .from(core_moderation_report_reasons);
+ if (total >= MODERATION_LIMITS.maxReportReasons) return null;
+
+ const [row] = await tx
+ .insert(core_moderation_report_reasons)
+ .values({
+ code,
+ position: (lastPosition ?? -1) + 1,
+ requiresDetails: body.requiresDetails,
+ })
+ .returning({ id: core_moderation_report_reasons.id });
+
+ return row;
+ });
+ if (!created) return c.json({ error: "limit_reached" }, 409);
+
+ await saveReasonWords(c, created.id, body);
+ await c
+ .get("events")
+ .emit("moderation.report_reason.created", { code, reasonId: created.id });
+
+ return c.json({ id: created.id }, 201);
+ },
+});
+
+export const updateReportReasonAdminRoute = buildRoute({
+ adminStaffPermission: { module: "report_reasons", permission: "can_edit" },
+ route: {
+ method: "patch",
+ path: "/{id}",
+ description:
+ "Edit a report reason (Admin only). Existing reports show the new title",
+ request: {
+ params: idParams,
+ body: {
+ required: true,
+ content: { "application/json": { schema: reasonBody.partial() } },
+ },
+ },
+ responses: {
+ 200: json(z.object({ id: z.number() }), "Report reason updated"),
+ 403: { description: "Access Denied" },
+ 404: json(errorSchema, "Report reason not found"),
+ },
+ },
+ handler: async c => {
+ const { id } = c.req.valid("param");
+ const body = c.req.valid("json");
+ const row = await findReasonRow(c, id);
+ if (!row) return c.json({ error: "not_found" }, 404);
+
+ if (body.requiresDetails !== undefined) {
+ await c
+ .get("db")
+ .update(core_moderation_report_reasons)
+ .set({ requiresDetails: body.requiresDetails })
+ .where(eq(core_moderation_report_reasons.id, id));
+ }
+ await saveReasonWords(c, id, body);
+ await c.get("events").emit("moderation.report_reason.updated", {
+ code: row.code,
+ reasonId: id,
+ });
+
+ return c.json({ id }, 200);
+ },
+});
+
+export const deleteReportReasonAdminRoute = buildRoute({
+ adminStaffPermission: { module: "report_reasons", permission: "can_delete" },
+ route: {
+ method: "delete",
+ path: "/{id}",
+ description:
+ "Delete a report reason (Admin only). Reports filed with it keep the report but lose the reason's title. The last reason cannot be deleted",
+ request: { params: idParams },
+ responses: {
+ 200: { description: "Report reason deleted" },
+ 403: { description: "Access Denied" },
+ 404: json(errorSchema, "Report reason not found"),
+ 409: json(errorSchema, "The last reason cannot be deleted"),
+ },
+ },
+ handler: async c => {
+ const { id } = c.req.valid("param");
+ const row = await findReasonRow(c, id);
+ if (!row) return c.json({ error: "not_found" }, 404);
+
+ const deleted = await c.get("db").transaction(async tx => {
+ await tx.execute(LOCK_REASONS);
+ const [{ total }] = await tx
+ .select({ total: count() })
+ .from(core_moderation_report_reasons);
+ if (total <= 1) return false;
+
+ await tx
+ .delete(core_languages_words)
+ .where(
+ and(
+ eq(core_languages_words.pluginCode, REPORT_REASON_WORDS.pluginCode),
+ eq(core_languages_words.tableName, REPORT_REASON_WORDS.tableName),
+ eq(core_languages_words.itemId, id),
+ ),
+ );
+ await tx
+ .delete(core_moderation_report_reasons)
+ .where(eq(core_moderation_report_reasons.id, id));
+
+ return true;
+ });
+ if (!deleted) return c.json({ error: "last_reason" }, 409);
+
+ await c.get("events").emit("moderation.report_reason.deleted", {
+ code: row.code,
+ reasonId: id,
+ });
+
+ return c.body(null, 200);
+ },
+});
+
+export const reorderReportReasonsAdminRoute = buildRoute({
+ adminStaffPermission: { module: "report_reasons", permission: "can_edit" },
+ route: {
+ method: "put",
+ path: "/reorder",
+ description:
+ "Set the order of every report reason at once (Admin only). `ids` must list each reason exactly once",
+ request: {
+ body: {
+ required: true,
+ content: {
+ "application/json": {
+ schema: z.object({ ids: z.array(z.number().int()).min(1) }),
+ },
+ },
+ },
+ },
+ responses: {
+ 200: { description: "Order saved" },
+ 400: json(errorSchema, "`ids` does not match the current reasons"),
+ 403: { description: "Access Denied" },
+ },
+ },
+ handler: async c => {
+ const { ids } = c.req.valid("json");
+ const db = c.get("db");
+ const current = await db
+ .select({ id: core_moderation_report_reasons.id })
+ .from(core_moderation_report_reasons);
+ const known = new Set(current.map(row => row.id));
+ if (
+ ids.length !== known.size ||
+ new Set(ids).size !== ids.length ||
+ ids.some(id => !known.has(id))
+ ) {
+ return c.json({ error: "mismatch" }, 400);
+ }
+
+ const positionById = sql.join(
+ ids.map(
+ (id, position) =>
+ sql`when ${core_moderation_report_reasons.id} = ${id} then ${position}::integer`,
+ ),
+ sql` `,
+ );
+ await db
+ .update(core_moderation_report_reasons)
+ .set({ position: sql`case ${positionById} end` })
+ .where(inArray(core_moderation_report_reasons.id, ids));
+ await c
+ .get("events")
+ .emit("moderation.report_reason.reordered", { reasonIds: ids });
+
+ return c.body(null, 200);
+ },
+});
diff --git a/packages/vitnode/src/api/modules/moderation/lib/schema.ts b/packages/vitnode/src/api/modules/moderation/lib/schema.ts
index 0975bc95c..3a51587d1 100644
--- a/packages/vitnode/src/api/modules/moderation/lib/schema.ts
+++ b/packages/vitnode/src/api/modules/moderation/lib/schema.ts
@@ -4,7 +4,6 @@ import { createRichTextDocumentSchema } from "@/content/rich-text/document";
import {
MODERATION_LIMITS,
MODERATION_REPORT_EVENT_TYPES,
- MODERATION_REPORT_REASONS,
MODERATION_REPORT_RESOLUTIONS,
MODERATION_REPORT_STATUSES,
} from "@/lib/moderation/const";
@@ -51,7 +50,7 @@ export const reportStateSchema = z.object({
version: z.number(),
});
-export const reasonSchema = z.enum(MODERATION_REPORT_REASONS);
+export const reasonSchema = z.string().min(1).max(32);
export const resolutionSchema = z.enum(MODERATION_REPORT_RESOLUTIONS);
export const eventTypeSchema = z.enum(MODERATION_REPORT_EVENT_TYPES);
diff --git a/packages/vitnode/src/api/modules/moderation/moderation.module.ts b/packages/vitnode/src/api/modules/moderation/moderation.module.ts
index 1a057f24b..390c2a50a 100644
--- a/packages/vitnode/src/api/modules/moderation/moderation.module.ts
+++ b/packages/vitnode/src/api/modules/moderation/moderation.module.ts
@@ -14,6 +14,7 @@ import {
deleteReportNoteRoute,
editReportNoteRoute,
} from "./routes/notes.routes";
+import { listReportReasonsRoute } from "./routes/reasons.route";
import { showReportRoute } from "./routes/show.route";
import {
assignReportRoute,
@@ -28,6 +29,7 @@ import {
export const moderationModule = buildModule({
name: "moderation",
routes: [
+ listReportReasonsRoute,
createReportRoute,
listReportsRoute,
showReportRoute,
diff --git a/packages/vitnode/src/api/modules/moderation/reports.test.ts b/packages/vitnode/src/api/modules/moderation/reports.test.ts
index b274413db..1a03da25f 100644
--- a/packages/vitnode/src/api/modules/moderation/reports.test.ts
+++ b/packages/vitnode/src/api/modules/moderation/reports.test.ts
@@ -10,6 +10,7 @@ import { defineModerationScope, defineReportTarget } from "@/api/moderation";
import { core_files } from "@/database/files";
import {
core_moderation_report_events,
+ core_moderation_report_reasons,
core_moderation_reports,
} from "@/database/moderation";
import { core_roles } from "@/database/roles";
@@ -165,6 +166,13 @@ const harness = async () => {
[core_files, []],
[core_moderation_reports, []],
[core_moderation_report_events, []],
+ [
+ core_moderation_report_reasons,
+ [
+ { code: "spam", id: 1, position: 0, requiresDetails: false },
+ { code: "other", id: 2, position: 1, requiresDetails: true },
+ ],
+ ],
]);
const emit = vi.fn(async () => Promise.resolve());
@@ -351,10 +359,10 @@ describe("filing a report", () => {
});
it.each([
- [MODERATION_LIMITS.otherDescriptionMinLength - 1, 400],
- [MODERATION_LIMITS.otherDescriptionMinLength, 201],
+ [MODERATION_LIMITS.requiredDescriptionMinLength - 1, 400],
+ [MODERATION_LIMITS.requiredDescriptionMinLength, 201],
])(
- 'needs a description of the problem for "other" (%i characters: %i)',
+ "needs a description for a reason that requires details (%i characters: %i)",
async (length, status) => {
const h = await harness();
diff --git a/packages/vitnode/src/api/modules/moderation/routes/create.route.ts b/packages/vitnode/src/api/modules/moderation/routes/create.route.ts
index 122c23eed..5c7fe2691 100644
--- a/packages/vitnode/src/api/modules/moderation/routes/create.route.ts
+++ b/packages/vitnode/src/api/modules/moderation/routes/create.route.ts
@@ -6,7 +6,10 @@ import { buildRoute } from "@/api/builders";
import { isUniqueViolation } from "@/api/lib/db-errors";
import { findReportTarget } from "@/api/lib/moderation/registry";
import { sealReportSnapshot } from "@/api/lib/moderation/snapshot";
-import { core_moderation_reports } from "@/database/moderation";
+import {
+ core_moderation_report_reasons,
+ core_moderation_reports,
+} from "@/database/moderation";
import { MODERATION_LIMITS } from "@/lib/moderation/const";
import {
@@ -22,44 +25,36 @@ const localeSchema = z
.max(20)
.regex(/^[A-Za-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/);
-const createBody = z
- .object({
- pluginId: z.string().min(1).max(100),
- targetType: z.string().min(1).max(100),
- targetId: z.string().min(1).max(64),
- locale: localeSchema.nullable().optional(),
- requestedLocale: localeSchema.nullable().optional(),
- reason: reasonSchema,
- description: z
- .string()
- .trim()
- .max(MODERATION_LIMITS.descriptionMaxLength)
- .nullable()
- .optional(),
- })
- .refine(
- body =>
- body.reason !== "other" ||
- (body.description?.length ?? 0) >=
- MODERATION_LIMITS.otherDescriptionMinLength,
- {
- message: `Describe the problem in at least ${MODERATION_LIMITS.otherDescriptionMinLength} characters when the reason is "other".`,
- path: ["description"],
- },
- );
+const createBody = z.object({
+ pluginId: z.string().min(1).max(100),
+ targetType: z.string().min(1).max(100),
+ targetId: z.string().min(1).max(64),
+ locale: localeSchema.nullable().optional(),
+ requestedLocale: localeSchema.nullable().optional(),
+ reason: reasonSchema,
+ description: z
+ .string()
+ .trim()
+ .max(MODERATION_LIMITS.descriptionMaxLength)
+ .nullable()
+ .optional(),
+});
export const createReportRoute = buildRoute({
route: {
method: "post",
path: "/reports",
description:
- "Report content to the moderators. The server captures the snapshot - the client sends only the target, locale, reason and description",
+ "Report content to the moderators. The server captures the snapshot - the client sends only the target, locale, reason code and description. A reason that requires details needs a description",
request: {
body: { content: { "application/json": { schema: createBody } } },
},
responses: {
201: json(z.object({ id: z.number() }), "Report filed"),
- 400: { description: "Invalid reason or description" },
+ 400: json(
+ errorSchema,
+ "The reason does not exist (`reason_not_found`) or needs details (`details_required`)",
+ ),
401: { description: "Sign in first" },
404: json(
errorSchema,
@@ -77,6 +72,23 @@ export const createReportRoute = buildRoute({
if (!user) throw new HTTPException(401, { message: "Sign in first." });
const body = c.req.valid("json");
+ const [reason] = await c
+ .get("db")
+ .select({
+ requiresDetails: core_moderation_report_reasons.requiresDetails,
+ })
+ .from(core_moderation_report_reasons)
+ .where(eq(core_moderation_report_reasons.code, body.reason))
+ .limit(1);
+ if (!reason) throw reportError(400, { error: "reason_not_found" });
+ if (
+ reason.requiresDetails &&
+ (body.description?.length ?? 0) <
+ MODERATION_LIMITS.requiredDescriptionMinLength
+ ) {
+ throw reportError(400, { error: "details_required" });
+ }
+
const registered = findReportTarget(c.get("core").moderation, {
pluginId: body.pluginId,
type: body.targetType,
diff --git a/packages/vitnode/src/api/modules/moderation/routes/reasons.route.ts b/packages/vitnode/src/api/modules/moderation/routes/reasons.route.ts
new file mode 100644
index 000000000..9cc1f2ef1
--- /dev/null
+++ b/packages/vitnode/src/api/modules/moderation/routes/reasons.route.ts
@@ -0,0 +1,34 @@
+import { z } from "@hono/zod-openapi";
+
+import { buildRoute } from "@/api/builders";
+import {
+ listReportReasons,
+ reportReasonSchema,
+} from "@/api/lib/moderation/report-reasons";
+
+import { json } from "../lib/schema";
+
+export const listReportReasonsRoute = buildRoute({
+ route: {
+ method: "get",
+ path: "/reasons",
+ description:
+ "The reasons a member can pick when reporting something, in display order, with every translation",
+ responses: {
+ 200: json(
+ z.object({
+ reasons: z.array(reportReasonSchema.omit({ position: true })),
+ }),
+ "Report reasons",
+ ),
+ },
+ },
+ handler: async c => {
+ const reasons = await listReportReasons(c);
+
+ return c.json(
+ { reasons: reasons.map(({ position: _position, ...reason }) => reason) },
+ 200,
+ );
+ },
+});
diff --git a/packages/vitnode/src/api/plugin.ts b/packages/vitnode/src/api/plugin.ts
index 06d44ee15..02a799686 100644
--- a/packages/vitnode/src/api/plugin.ts
+++ b/packages/vitnode/src/api/plugin.ts
@@ -101,6 +101,12 @@ export const newBuildPluginApiCore = buildApiPlugin({
],
ai: ["can_view", { permission: "can_manage", dependsOn: ["can_view"] }],
cron: ["can_view", { permission: "can_run", dependsOn: ["can_view"] }],
+ report_reasons: [
+ "can_view",
+ { permission: "can_create", dependsOn: ["can_view"] },
+ { permission: "can_edit", dependsOn: ["can_view"] },
+ { permission: "can_delete", dependsOn: ["can_view"] },
+ ],
staff_moderators: [
"can_view",
{ permission: "can_create", dependsOn: ["can_view"] },
diff --git a/packages/vitnode/src/components/table/content.tsx b/packages/vitnode/src/components/table/content.tsx
index ba3ec28ae..bf37b7848 100644
--- a/packages/vitnode/src/components/table/content.tsx
+++ b/packages/vitnode/src/components/table/content.tsx
@@ -138,7 +138,9 @@ const ReorderableBodyDataTable = React.lazy(async () =>
* each page. Optional row selection with bulk actions, expandable and
* reorderable rows, and grouping.
*
- * Pass the API's `edges` and `pageInfo` for the current page.
+ * Pass the API's `edges` and `pageInfo` for the current page. Leave
+ * `pageInfo` out for a short list that is never paged, and the pagination
+ * footer is not rendered.
*/
export function ContentDataTable({
bulkActions,
@@ -324,7 +326,7 @@ export function ContentDataTable({
-
+ {pageInfo ? : null}
);
diff --git a/packages/vitnode/src/components/table/data-table-content.tsx b/packages/vitnode/src/components/table/data-table-content.tsx
index 1e0fb6da9..0eb72f172 100644
--- a/packages/vitnode/src/components/table/data-table-content.tsx
+++ b/packages/vitnode/src/components/table/data-table-content.tsx
@@ -63,7 +63,7 @@ export type DataTableProps = Omit<
React.ComponentProps,
"columns"
> &
- React.ComponentProps &
+ Partial> &
React.ComponentProps & {
/** Adds a checkbox per row and shows these actions while rows are selected. */
bulkActions?: React.ReactNode;
diff --git a/packages/vitnode/src/database/moderation.ts b/packages/vitnode/src/database/moderation.ts
index 5c146e43f..e2574f6bf 100644
--- a/packages/vitnode/src/database/moderation.ts
+++ b/packages/vitnode/src/database/moderation.ts
@@ -2,7 +2,6 @@ import { camelCase, index } from "drizzle-orm/pg-core";
import type {
ModerationReportEventType,
- ModerationReportReason,
ModerationReportResolution,
ModerationReportStatus,
} from "@/lib/moderation/const";
@@ -10,13 +9,29 @@ import type { ModerationReportSnapshot } from "@/lib/moderation/snapshot";
import {
MODERATION_REPORT_EVENT_TYPES,
- MODERATION_REPORT_REASONS,
MODERATION_REPORT_RESOLUTIONS,
MODERATION_REPORT_STATUSES,
} from "@/lib/moderation/const";
import { core_users } from "./users";
+export const core_moderation_report_reasons = camelCase.table.withRLS(
+ "core_moderation_report_reasons",
+ t => ({
+ id: t.serial().primaryKey(),
+ code: t.varchar({ length: 32 }).notNull().unique(),
+ requiresDetails: t.boolean().notNull().default(false),
+ position: t.integer().notNull().default(0),
+ createdAt: t.timestamp().notNull().defaultNow(),
+ updatedAt: t
+ .timestamp()
+ .notNull()
+ .defaultNow()
+ .$onUpdate(() => new Date()),
+ }),
+ t => [index("core_moderation_report_reasons_position_idx").on(t.position)],
+);
+
export const core_moderation_reports = camelCase.table.withRLS(
"core_moderation_reports",
t => ({
@@ -27,10 +42,7 @@ export const core_moderation_reports = camelCase.table.withRLS(
reporterId: t.integer().references(() => core_users.id, {
onDelete: "set null",
}),
- reason: t
- .varchar({ enum: MODERATION_REPORT_REASONS, length: 32 })
- .$type()
- .notNull(),
+ reason: t.varchar({ length: 32 }).notNull(),
description: t.text(),
snapshot: t.jsonb().$type().notNull(),
targetTitle: t.varchar({ length: 500 }),
diff --git a/packages/vitnode/src/lib/moderation/const.ts b/packages/vitnode/src/lib/moderation/const.ts
index ba9e88335..2dabe6a6c 100644
--- a/packages/vitnode/src/lib/moderation/const.ts
+++ b/packages/vitnode/src/lib/moderation/const.ts
@@ -7,15 +7,33 @@ export const MODERATION_PERMISSIONS = {
hide: "can_hide",
} as const;
-export const MODERATION_REPORT_REASONS = [
- "spam",
- "abusive",
- "rule_violation",
- "other",
+export const MODERATION_DEFAULT_REPORT_REASONS = [
+ {
+ code: "spam",
+ description: "Advertising, scams or repeated junk.",
+ requiresDetails: false,
+ title: "Spam",
+ },
+ {
+ code: "abusive",
+ description: "Harassment, hate or threats.",
+ requiresDetails: false,
+ title: "Abusive content",
+ },
+ {
+ code: "rule_violation",
+ description: "Breaks the community rules in another way.",
+ requiresDetails: false,
+ title: "Rule violation",
+ },
+ {
+ code: "other",
+ description: "Something else - tell us what.",
+ requiresDetails: true,
+ title: "Other",
+ },
] as const;
-export type ModerationReportReason = (typeof MODERATION_REPORT_REASONS)[number];
-
export const MODERATION_REPORT_STATUSES = [
"new",
"in_progress",
@@ -56,7 +74,10 @@ export type ModerationTargetAction = (typeof MODERATION_TARGET_ACTIONS)[number];
export const MODERATION_LIMITS = {
descriptionMaxLength: 2000,
- otherDescriptionMinLength: 10,
+ requiredDescriptionMinLength: 10,
+ reasonTitleMaxLength: 100,
+ reasonDescriptionMaxLength: 255,
+ maxReportReasons: 10,
noteMaxLength: 2000,
explanationMinLength: 3,
richNoteMaxBytes: 64 * 1024,
diff --git a/packages/vitnode/src/locales/en.json b/packages/vitnode/src/locales/en.json
index c17e3c77b..3fcd7a0eb 100644
--- a/packages/vitnode/src/locales/en.json
+++ b/packages/vitnode/src/locales/en.json
@@ -45,6 +45,11 @@
"@vitnode/core:cron": "Cron Jobs",
"@vitnode/core:cron:can_view": "View cron jobs",
"@vitnode/core:cron:can_run": "Run cron jobs",
+ "@vitnode/core:report_reasons": "Report reasons",
+ "@vitnode/core:report_reasons:can_view": "View report reasons",
+ "@vitnode/core:report_reasons:can_create": "Create report reasons",
+ "@vitnode/core:report_reasons:can_edit": "Edit and reorder report reasons",
+ "@vitnode/core:report_reasons:can_delete": "Delete report reasons",
"@vitnode/core:staff_moderators": "Staff: Moderators",
"@vitnode/core:staff_moderators:can_view": "View moderators list",
"@vitnode/core:staff_moderators:can_create": "Create moderators",
@@ -2163,18 +2168,7 @@
"empty_desc": "When something needs your attention, it lands here."
},
"moderation": {
- "reasons": {
- "spam": "Spam",
- "abusive": "Abusive content",
- "rule_violation": "Rule violation",
- "other": "Other"
- },
- "reason_descs": {
- "spam": "Advertising, scams or repeated junk.",
- "abusive": "Harassment, hate or threats.",
- "rule_violation": "Breaks the community rules in another way.",
- "other": "Something else - tell us what."
- },
+ "reason_removed": "Removed reason",
"statuses": {
"new": "New",
"in_progress": "In progress",
@@ -2193,24 +2187,36 @@
"report": {
"button": "Report",
"title": "Report {type}",
- "desc": "Tell the moderators what is wrong. They see what you saw, even if it changes later.",
- "reason": "Reason",
- "description": "Details",
- "description_desc": "Optional, unless you chose Other. Moderators read this, the author does not.",
+ "pick_title": "What's wrong with this {type}?",
+ "review_title": "Ready to send?",
+ "sent_title": "Report sent",
+ "reasons_label": "Reason",
+ "change": "Change",
+ "change_label": "Change reason, currently {reason}",
+ "details_required_label": "What should moderators know?",
+ "details_optional_label": "Anything to add?",
+ "required": "Required",
+ "details_placeholder": "Links, timestamps or what exactly is wrong",
+ "details_note": "Only moderators read this, the author doesn't.",
+ "chars_left": "{count} left",
"submit": "Send report",
- "cancel": "Cancel",
+ "sent_stamp": "Sent to the moderators just now",
+ "sent_desc": "A moderator will look at the {type} as you saw it, even if it changes later. If it breaks the rules, they can hide it.",
+ "done": "Done",
"signed_out": "Sign in to report content.",
"sign_in": "Sign in",
- "success": "Report sent",
- "success_desc": "Thanks. A moderator will take a look.",
+ "load_error": "We couldn't load the reasons.",
+ "retry": "Try again",
"errors": {
"title": "Could not send the report",
"duplicate": "You already reported this, and that report is still open.",
"not_found": "This content is no longer available to report.",
"rate_limited": "You have sent a lot of reports recently. Try again later.",
- "unauthenticated": "Your session has ended. Sign in again to send the report.",
+ "unauthenticated": "Your session has ended. Sign in again to send the report.",
"validation": "Check the reason and the details, then try again.",
- "unknown": "Something went wrong. Try again in a moment."
+ "unknown": "Something went wrong. Try again in a moment.",
+ "details_required": "Tell the moderators a bit more - at least {min} characters.",
+ "reason_not_found": "That reason was just removed. Pick another one."
}
},
"modcp": {
@@ -2734,6 +2740,10 @@
"moderators": "Moderators",
"admins": "Administrators"
},
+ "moderation": {
+ "title": "Moderation",
+ "report_reasons": "Report reasons"
+ },
"user_bar": {
"home_page": "Home Page",
"debug": "Debug Panel",
@@ -3371,6 +3381,60 @@
}
}
},
+ "moderation": {
+ "report_reasons": {
+ "title": "Report reasons",
+ "desc": "The reasons members pick from when they report something, up to 10. Drag to change the order they appear in.",
+ "create": "Add reason",
+ "limit": "You can have up to {max} reasons. Delete one to add another.",
+ "columns": {
+ "reason": "Reason",
+ "details": "Details"
+ },
+ "details_required": "Required",
+ "details_optional": "Optional",
+ "actions": {
+ "label": "Actions for {reason}",
+ "edit": "Edit",
+ "delete": "Delete"
+ },
+ "reorder": {
+ "success": "Order saved",
+ "success_desc": "Members see the reasons in the new order."
+ },
+ "form": {
+ "create_title": "Add report reason",
+ "edit_title": "Edit report reason",
+ "sheet_desc": "Members see the title and description in the report dialog, in their own language.",
+ "title": "Title",
+ "title_desc": "Short and specific, like “Spam” or “Harassment”.",
+ "description": "Description",
+ "description_desc": "One line that helps members tell this reason apart from the others.",
+ "requires_details": "Require details",
+ "requires_details_desc": "Members must explain what's wrong (at least {min} characters) before they can send the report.",
+ "submit_create": "Add reason",
+ "submit_edit": "Save changes",
+ "created": "Reason added",
+ "created_desc": "Members can pick “{reason}” when they report something.",
+ "updated": "Reason saved",
+ "updated_desc": "Existing reports show the new title too.",
+ "error": "Could not save the reason",
+ "error_desc": "Check the fields and try again.",
+ "limit_reached": "You can have up to {max} reasons. Delete one to add another."
+ },
+ "delete": {
+ "title": "Delete “{reason}”?",
+ "desc": "Members can't pick it anymore. Reports already filed with it stay, but show “Removed reason” instead of its title.",
+ "confirm": "Delete reason",
+ "cancel": "Cancel",
+ "success": "Reason deleted",
+ "success_desc": "“{reason}” is no longer in the report dialog.",
+ "error": "Could not delete the reason",
+ "last_reason": "Keep at least one reason - members need something to pick.",
+ "unknown": "Something went wrong. Try again in a moment."
+ }
+ }
+ },
"system": {
"notifications": {
"title": "Notifications",
diff --git a/packages/vitnode/src/pages/admin/moderation/report-reasons.tsx b/packages/vitnode/src/pages/admin/moderation/report-reasons.tsx
new file mode 100644
index 000000000..fa8d3d02e
--- /dev/null
+++ b/packages/vitnode/src/pages/admin/moderation/report-reasons.tsx
@@ -0,0 +1,25 @@
+import type { PluginRoutePageProps } from "@/routing";
+import type { AdminReportReasonsRouteData } from "@/tanstack/admin/report-reasons/route";
+
+import { adminBreadcrumb } from "@/tanstack/admin/breadcrumb";
+import { loadAdminReportReasonsRoute } from "@/tanstack/admin/report-reasons/route";
+import { AdminReportReasonsRouteContent } from "@/tanstack/admin/report-reasons/screen";
+import { defineAdminRoute } from "@/tanstack/plugin-routes";
+
+const AdminReportReasonsPage = ({
+ loaderData,
+}: PluginRoutePageProps) => (
+
+);
+
+export const route = defineAdminRoute({
+ load: async ({ context, t }) =>
+ await loadAdminReportReasonsRoute({ ...context, t }),
+ head: ({ loaderData }) => ({ ...loaderData }),
+
+ breadcrumb: adminBreadcrumb({
+ segments: ["core", "moderation", "report-reasons"],
+ }),
+});
+
+export default AdminReportReasonsPage;
diff --git a/packages/vitnode/src/routes.tsx b/packages/vitnode/src/routes.tsx
index b070115a6..2cc38c93f 100644
--- a/packages/vitnode/src/routes.tsx
+++ b/packages/vitnode/src/routes.tsx
@@ -27,6 +27,7 @@ import { ADMIN_INTEGRATIONS_NAMESPACES } from "./tanstack/admin/integrations/rou
import { ADMIN_NOTIFICATIONS_NAMESPACES } from "./tanstack/admin/notifications/route";
import { ADMIN_PLUGINS_NAMESPACES } from "./tanstack/admin/plugins/route";
import { normalizeQueueRouteSearch } from "./tanstack/admin/queue/route-search";
+import { ADMIN_REPORT_REASONS_NAMESPACES } from "./tanstack/admin/report-reasons/route";
import { ADMIN_ROLES_NAMESPACES } from "./tanstack/admin/roles/route";
import { normalizeRolesRouteSearch } from "./tanstack/admin/roles/route-search";
import { normalizeSearchIndexRouteSearch } from "./tanstack/admin/search-index/route-search";
@@ -357,6 +358,13 @@ export const routes = defineRoutes([
pendingComponent: CardsPendingSkeleton,
}),
+ page("/admin/core/moderation/report-reasons", {
+ area: "admin",
+ component: lazy(() => import("./pages/admin/moderation/report-reasons")),
+ messages: ADMIN_REPORT_REASONS_NAMESPACES,
+ pendingComponent: TablePendingSkeleton,
+ }),
+
page("/admin/core/users", {
area: "admin",
component: lazy(() => import("./pages/admin/users/index")),
diff --git a/packages/vitnode/src/tanstack/admin/report-reasons/index.ts b/packages/vitnode/src/tanstack/admin/report-reasons/index.ts
new file mode 100644
index 000000000..a78ac93d9
--- /dev/null
+++ b/packages/vitnode/src/tanstack/admin/report-reasons/index.ts
@@ -0,0 +1,12 @@
+export {
+ adminReportReasonsQuery,
+ useAdminReportReasonMutations,
+} from "./query";
+export type { AdminReportReasonsRouteData } from "./route";
+export {
+ ADMIN_REPORT_REASONS_NAMESPACES,
+ loadAdminReportReasonsRoute,
+} from "./route";
+export { AdminReportReasonsRouteContent } from "./screen";
+
+export type { AdminReportReason } from "@/views/admin/views/core/moderation/report-reasons/report-reasons-query";
diff --git a/packages/vitnode/src/tanstack/admin/report-reasons/query.ts b/packages/vitnode/src/tanstack/admin/report-reasons/query.ts
new file mode 100644
index 000000000..98331fb6d
--- /dev/null
+++ b/packages/vitnode/src/tanstack/admin/report-reasons/query.ts
@@ -0,0 +1,67 @@
+import { useQueryClient } from "@tanstack/react-query";
+import React from "react";
+
+import type { ReportReasonsContentProps } from "@/views/admin/views/core/moderation/report-reasons/report-reasons-content";
+import type { AdminIdentity } from "@/views/admin/views/core/shared/admin-scope";
+
+import {
+ createAdminReportReason,
+ deleteAdminReportReason,
+ reorderAdminReportReasons,
+ updateAdminReportReason,
+} from "@/views/admin/views/core/moderation/report-reasons/report-reasons-mutations";
+import {
+ adminReportReasonsQueryOptions,
+ adminReportReasonsQueryRoot,
+} from "@/views/admin/views/core/moderation/report-reasons/report-reasons-query";
+import { isAdminMutationError } from "@/views/admin/views/core/shared/admin-mutation";
+import { REPORT_REASONS_QUERY_KEY } from "@/views/moderation/report-reasons-query";
+
+import { useAdminIdentity } from "../identity";
+
+export const adminReportReasonsQuery = (adminUserId: AdminIdentity) =>
+ adminReportReasonsQueryOptions(adminUserId);
+
+export const useAdminReportReasonMutations = (): Pick<
+ ReportReasonsContentProps,
+ "onDelete" | "onReorder" | "onSave"
+> => {
+ const queryClient = useQueryClient();
+ const adminUserId = useAdminIdentity();
+
+ return React.useMemo(() => {
+ const refresh = async () => {
+ await Promise.all([
+ queryClient.invalidateQueries({
+ queryKey: adminReportReasonsQueryRoot(adminUserId),
+ }),
+ queryClient.invalidateQueries({ queryKey: REPORT_REASONS_QUERY_KEY }),
+ ]);
+ };
+
+ return {
+ onDelete: async id => {
+ const result = await deleteAdminReportReason(id);
+ if (!isAdminMutationError(result)) await refresh();
+
+ return result;
+ },
+ onReorder: async ids => {
+ const result = await reorderAdminReportReasons(ids);
+ if (isAdminMutationError(result)) {
+ throw new Error(`Saving the order answered ${result.error.status}.`);
+ }
+ await refresh();
+ },
+ onSave: async ({ id, values }) => {
+ const result =
+ id === undefined
+ ? await createAdminReportReason(values)
+ : await updateAdminReportReason(id, values);
+ if (!isAdminMutationError(result)) await refresh();
+
+ return result;
+ },
+ };
+ }, [adminUserId, queryClient]);
+};
diff --git a/packages/vitnode/src/tanstack/admin/report-reasons/route.tsx b/packages/vitnode/src/tanstack/admin/report-reasons/route.tsx
new file mode 100644
index 000000000..ffb73e105
--- /dev/null
+++ b/packages/vitnode/src/tanstack/admin/report-reasons/route.tsx
@@ -0,0 +1,39 @@
+import type { PluginRouteTranslator } from "@/routing";
+
+import { ADMIN_REPORT_REASON_PERMISSIONS } from "@/views/admin/views/core/shared/admin-permissions";
+
+import type { AdminScreenContext } from "../screen";
+
+import { adminIdentityOf } from "../identity";
+import { requireAdminPermission } from "../screen";
+import { adminReportReasonsQuery } from "./query";
+
+export const ADMIN_REPORT_REASONS_NAMESPACES = [
+ "admin.moderation.report_reasons",
+ "core.global",
+] as const;
+
+export interface AdminReportReasonsRouteData {
+ description: string;
+ title: string;
+}
+
+export const loadAdminReportReasonsRoute = async ({
+ adminAccess,
+ queryClient,
+ t,
+}: AdminScreenContext & {
+ t: PluginRouteTranslator;
+}): Promise => {
+ requireAdminPermission(adminAccess, ADMIN_REPORT_REASON_PERMISSIONS.view);
+
+ await queryClient.query({
+ ...adminReportReasonsQuery(adminIdentityOf(adminAccess)),
+ staleTime: "static",
+ });
+
+ return {
+ description: t("admin.moderation.report_reasons.desc"),
+ title: t("admin.moderation.report_reasons.title"),
+ };
+};
diff --git a/packages/vitnode/src/tanstack/admin/report-reasons/screen.tsx b/packages/vitnode/src/tanstack/admin/report-reasons/screen.tsx
new file mode 100644
index 000000000..d77e00345
--- /dev/null
+++ b/packages/vitnode/src/tanstack/admin/report-reasons/screen.tsx
@@ -0,0 +1,89 @@
+import { useSuspenseQuery } from "@tanstack/react-query";
+import React from "react";
+import { toast } from "sonner";
+import { useTranslations } from "use-intl";
+
+import type { ReportReasonSheetState } from "@/views/admin/views/core/moderation/report-reasons/report-reasons-content";
+
+import {
+ AdminStaffPermissionGate,
+ useAdminStaffPermission,
+} from "@/components/staff-permission/provider";
+import { PageTitle } from "@/components/ui/page-title";
+import {
+ CreateReportReasonButton,
+ ReportReasonsContent,
+} from "@/views/admin/views/core/moderation/report-reasons/report-reasons-content";
+import { ADMIN_REPORT_REASON_PERMISSIONS } from "@/views/admin/views/core/shared/admin-permissions";
+
+import type { AdminReportReasonsRouteData } from "./route";
+
+import { RouteMessages } from "../../i18n/route-messages";
+import { useAdminIdentity } from "../identity";
+import {
+ adminReportReasonsQuery,
+ useAdminReportReasonMutations,
+} from "./query";
+import { ADMIN_REPORT_REASONS_NAMESPACES } from "./route";
+
+const ReportReasonsScreen = ({
+ description,
+ title,
+}: AdminReportReasonsRouteData) => {
+ const t = useTranslations("admin.moderation.report_reasons");
+ const adminUserId = useAdminIdentity();
+ const { data } = useSuspenseQuery(adminReportReasonsQuery(adminUserId));
+ const { onDelete, onReorder, onSave } = useAdminReportReasonMutations();
+ const canEdit = useAdminStaffPermission(ADMIN_REPORT_REASON_PERMISSIONS.edit);
+ const canDelete = useAdminStaffPermission(
+ ADMIN_REPORT_REASON_PERMISSIONS.delete,
+ );
+ const [sheet, setSheet] = React.useState({
+ mode: "create",
+ });
+ const [sheetOpen, setSheetOpen] = React.useState(false);
+ const openSheet = (state: ReportReasonSheetState) => {
+ setSheet(state);
+ setSheetOpen(true);
+ };
+
+ return (
+
+
+
+ {
+ openSheet({ mode: "create" });
+ }}
+ />
+
+
+
+
{
+ await onReorder(ids);
+ toast.success(t("reorder.success"), {
+ description: t("reorder.success_desc"),
+ });
+ }}
+ onSave={onSave}
+ onSheetOpenChange={setSheetOpen}
+ permissions={{ canDelete, canEdit }}
+ reasons={data}
+ sheet={sheet}
+ sheetOpen={sheetOpen}
+ />
+
+ );
+};
+
+export const AdminReportReasonsRouteContent = (
+ props: AdminReportReasonsRouteData,
+) => (
+
+
+
+);
diff --git a/packages/vitnode/src/tanstack/layout/route-error.tsx b/packages/vitnode/src/tanstack/layout/route-error.tsx
index 973700fa4..6338abf5f 100644
--- a/packages/vitnode/src/tanstack/layout/route-error.tsx
+++ b/packages/vitnode/src/tanstack/layout/route-error.tsx
@@ -10,6 +10,7 @@ const DevErrorOverlay = lazy(async () => ({
const DevErrorDetails = ({ error }: { error: unknown }) => (
<>