diff --git a/.env.sample b/.env.sample index 00353396..0b6466bd 100644 --- a/.env.sample +++ b/.env.sample @@ -32,8 +32,15 @@ REMOTE_REPLIES_SCRAPE_MAX_REQUESTS=200 DRIVE_DISK= STORAGE_URL_BASE= +# Custom emoji uploads storage: +# S3_EMOJI_IMPORT_BUCKET= +EMOJI_IMPORT_MAX_ARCHIVE_BYTES=52428800 +EMOJI_IMPORT_MAX_ENTRY_COUNT=1000 +EMOJI_IMPORT_MAX_EXTRACTED_BYTES=262144000 + # If DRIVE_DISK is "fs": # FS_STORAGE_PATH= +# EMOJI_IMPORT_FS_PATH= # If DRIVE_DISK is "s3": # AWS_ACCESS_KEY_ID= diff --git a/CHANGES.md b/CHANGES.md index 59fb39e1..b37e80b3 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -158,6 +158,14 @@ To be released. explicitly edited. Remote software may simplify the resulting HTML. [[#679], [#680]] + - Added support for importing custom emojis from Misskey packed emoji ZIP + archives in the administration dashboard. Configure either + `EMOJI_IMPORT_FS_PATH` or `S3_EMOJI_IMPORT_BUCKET` to enable temporary + archive storage. The import limits default to 50 MiB + (`EMOJI_IMPORT_MAX_ARCHIVE_BYTES`), 1,000 entries + (`EMOJI_IMPORT_MAX_ENTRY_COUNT`), and 250 MiB extracted + (`EMOJI_IMPORT_MAX_EXTRACTED_BYTES`). [[#686], [#688] by nove-b\] + - Changed the HTTP server to avoid buffering entire uploads and incoming activities before handling them behind a reverse proxy. Shutdown now waits for active HTTP requests alongside background workers within the existing @@ -211,6 +219,8 @@ To be released. [#673]: https://github.com/fedify-dev/hollo/pull/673 [#679]: https://github.com/fedify-dev/hollo/issues/679 [#680]: https://github.com/fedify-dev/hollo/pull/680 +[#686]: https://github.com/fedify-dev/hollo/issues/686 +[#688]: https://github.com/fedify-dev/hollo/pull/688 Version 0.9.25 diff --git a/changes.d/emoji-zip-import.md b/changes.d/emoji-zip-import.md new file mode 100644 index 00000000..2620f849 --- /dev/null +++ b/changes.d/emoji-zip-import.md @@ -0,0 +1,12 @@ +--- +links: + '#686': https://github.com/fedify-dev/hollo/issues/686 + '#688': https://github.com/fedify-dev/hollo/pull/688 +--- + - Added support for importing custom emojis from Misskey packed emoji ZIP + archives in the administration dashboard. Configure either + `EMOJI_IMPORT_FS_PATH` or `S3_EMOJI_IMPORT_BUCKET` to enable temporary + archive storage. The import limits default to 50 MiB + (`EMOJI_IMPORT_MAX_ARCHIVE_BYTES`), 1,000 entries + (`EMOJI_IMPORT_MAX_ENTRY_COUNT`), and 250 MiB extracted + (`EMOJI_IMPORT_MAX_EXTRACTED_BYTES`). [[#686], [#688] by nove-b] diff --git a/docs/src/content/docs/install/env.mdx b/docs/src/content/docs/install/env.mdx index 77cd2f3b..c788b135 100644 --- a/docs/src/content/docs/install/env.mdx +++ b/docs/src/content/docs/install/env.mdx @@ -509,3 +509,35 @@ The access key for S3-compatible object storage. #### `AWS_SECRET_ACCESS_KEY` The secret key for S3-compatible object storage. + +### Custom emoji import archive storage + +#### `EMOJI_IMPORT_FS_PATH` + +The local filesystem directory where custom emoji ZIP archives are stored +temporarily, e.g., `/var/lib/hollo/emoji-imports`. + +This setting cannot be used together with `S3_EMOJI_IMPORT_BUCKET`. + +#### `S3_EMOJI_IMPORT_BUCKET` + +The name of the private S3-compatible object storage bucket where custom emoji +ZIP archives are stored temporarily, e.g., `hollo-emoji-imports`. + +Do not enable a public development URL or custom domain for this bucket. This +setting cannot be used together with `EMOJI_IMPORT_FS_PATH`. + +#### `EMOJI_IMPORT_MAX_ARCHIVE_BYTES` + +The maximum size of an uploaded custom emoji ZIP archive in bytes. Defaults to +50 MiB. + +#### `EMOJI_IMPORT_MAX_ENTRY_COUNT` + +The maximum number of entries in an imported custom emoji ZIP archive. Defaults +to 1,000 entries. + +#### `EMOJI_IMPORT_MAX_EXTRACTED_BYTES` + +The maximum total size of files extracted from an imported custom emoji ZIP +archive in bytes. Defaults to 250 MiB. diff --git a/docs/src/content/docs/ja/install/env.mdx b/docs/src/content/docs/ja/install/env.mdx index 8a056845..8d566424 100644 --- a/docs/src/content/docs/ja/install/env.mdx +++ b/docs/src/content/docs/ja/install/env.mdx @@ -506,3 +506,36 @@ S3互換オブジェクトストレージのアクセスキー。 #### `AWS_SECRET_ACCESS_KEY` S3互換オブジェクトストレージのシークレットキー。 + +### カスタム絵文字インポート用アーカイブストレージ + +#### `EMOJI_IMPORT_FS_PATH` + +カスタム絵文字の ZIP archive を一時的に保存する、ローカルファイルシステム上の +ディレクトリ。例:`/var/lib/hollo/emoji-imports`。 + +`S3_EMOJI_IMPORT_BUCKET` と同時に設定することはできません。 + + +#### `S3_EMOJI_IMPORT_BUCKET` + +カスタム絵文字の ZIP archive を一時的に保存する、非公開の S3 互換 +オブジェクトストレージ bucket の名前。例:`hollo-emoji-imports`。 + +この bucket では public development URL や custom domain を有効にしないでください。 +`EMOJI_IMPORT_FS_PATH` と同時に設定することはできません。 + +#### `EMOJI_IMPORT_MAX_ARCHIVE_BYTES` + +アップロードするカスタム絵文字 ZIP アーカイブの最大サイズ(バイト単位)。 +デフォルトは 50 MiB です。 + +#### `EMOJI_IMPORT_MAX_ENTRY_COUNT` + +インポートするカスタム絵文字 ZIP アーカイブに含められるエントリーの最大数。 +デフォルトは 1,000 エントリーです。 + +#### `EMOJI_IMPORT_MAX_EXTRACTED_BYTES` + +インポートするカスタム絵文字 ZIP アーカイブから展開されるファイルの合計最大サイズ +(バイト単位)。デフォルトは 250 MiB です。 diff --git a/docs/src/content/docs/ko/install/env.mdx b/docs/src/content/docs/ko/install/env.mdx index 8dcd4b2b..bf9562a1 100644 --- a/docs/src/content/docs/ko/install/env.mdx +++ b/docs/src/content/docs/ko/install/env.mdx @@ -497,3 +497,35 @@ S3 호환 오브젝트 스토리지 액세스 키. #### `AWS_SECRET_ACCESS_KEY` S3 호환 오브젝트 스토리지 비밀 키. + +### 커스텀 이모지 가져오기 아카이브 저장소 + +#### `EMOJI_IMPORT_FS_PATH` + +커스텀 이모지 ZIP 아카이브를 임시로 저장할 로컬 파일 시스템 디렉터리입니다. 예: +`/var/lib/hollo/emoji-imports`. + +이 설정은 `S3_EMOJI_IMPORT_BUCKET`과 함께 사용할 수 없습니다. + +#### `S3_EMOJI_IMPORT_BUCKET` + +커스텀 이모지 ZIP 아카이브를 임시로 저장할 비공개 S3 호환 오브젝트 스토리지 +버킷의 이름입니다. 예: `hollo-emoji-imports`. + +이 버킷에서는 공개 개발 URL이나 사용자 지정 도메인을 활성화하지 마세요. 이 설정은 +`EMOJI_IMPORT_FS_PATH`와 함께 사용할 수 없습니다. + +#### `EMOJI_IMPORT_MAX_ARCHIVE_BYTES` + +업로드하는 커스텀 이모지 ZIP 아카이브의 최대 크기(바이트 단위)입니다. 기본값은 +50 MiB입니다. + +#### `EMOJI_IMPORT_MAX_ENTRY_COUNT` + +가져오는 커스텀 이모지 ZIP 아카이브에 포함할 수 있는 최대 항목 수입니다. 기본값은 +1,000개 항목입니다. + +#### `EMOJI_IMPORT_MAX_EXTRACTED_BYTES` + +가져오는 커스텀 이모지 ZIP 아카이브에서 추출되는 파일의 총 최대 크기(바이트 +단위)입니다. 기본값은 250 MiB입니다. diff --git a/docs/src/content/docs/zh-cn/install/env.mdx b/docs/src/content/docs/zh-cn/install/env.mdx index bb5184ef..7c5616e6 100644 --- a/docs/src/content/docs/zh-cn/install/env.mdx +++ b/docs/src/content/docs/zh-cn/install/env.mdx @@ -452,3 +452,33 @@ S3兼容对象存储的访问密钥ID。 #### `AWS_SECRET_ACCESS_KEY` S3兼容对象存储的访问密钥。 + +### 自定义表情符号导入归档存储 + +#### `EMOJI_IMPORT_FS_PATH` + +临时存储自定义表情符号 ZIP 归档的本地文件系统目录。例如: +`/var/lib/hollo/emoji-imports`。 + +此设置不能与 `S3_EMOJI_IMPORT_BUCKET` 同时使用。 + +#### `S3_EMOJI_IMPORT_BUCKET` + +临时存储自定义表情符号 ZIP 归档的私有 S3 兼容对象存储桶名称。例如: +`hollo-emoji-imports`。 + +请勿为此桶启用公开开发 URL 或自定义域名。此设置不能与 +`EMOJI_IMPORT_FS_PATH` 同时使用。 + +#### `EMOJI_IMPORT_MAX_ARCHIVE_BYTES` + +上传的自定义表情符号 ZIP 归档的最大大小,单位为字节。默认值为 50 MiB。 + +#### `EMOJI_IMPORT_MAX_ENTRY_COUNT` + +导入的自定义表情符号 ZIP 归档中允许的最大条目数。默认值为 1,000 个条目。 + +#### `EMOJI_IMPORT_MAX_EXTRACTED_BYTES` + +从导入的自定义表情符号 ZIP 归档中提取的文件总大小上限,单位为字节。 +默认值为 250 MiB。 diff --git a/docs/src/content/docs/zh-tw/install/env.mdx b/docs/src/content/docs/zh-tw/install/env.mdx index bdb72e53..eb95303c 100644 --- a/docs/src/content/docs/zh-tw/install/env.mdx +++ b/docs/src/content/docs/zh-tw/install/env.mdx @@ -452,3 +452,33 @@ S3 相容物件儲存的存取金鑰 ID。 #### `AWS_SECRET_ACCESS_KEY` S3 相容物件儲存的存取金鑰。 + +### 自訂表情符號匯入封存儲存 + +#### `EMOJI_IMPORT_FS_PATH` + +暫時儲存自訂表情符號 ZIP 封存檔的本地檔案系統目錄。例如: +`/var/lib/hollo/emoji-imports`。 + +此設定不能與 `S3_EMOJI_IMPORT_BUCKET` 同時使用。 + +#### `S3_EMOJI_IMPORT_BUCKET` + +暫時儲存自訂表情符號 ZIP 封存檔的私有 S3 相容物件儲存桶名稱。例如: +`hollo-emoji-imports`。 + +請勿為此儲存桶啟用公開開發 URL 或自訂網域。此設定不能與 +`EMOJI_IMPORT_FS_PATH` 同時使用。 + +#### `EMOJI_IMPORT_MAX_ARCHIVE_BYTES` + +上傳的自訂表情符號 ZIP 封存檔最大大小,單位為位元組。預設值為 50 MiB。 + +#### `EMOJI_IMPORT_MAX_ENTRY_COUNT` + +匯入的自訂表情符號 ZIP 封存檔允許的最大項目數。預設值為 1,000 個項目。 + +#### `EMOJI_IMPORT_MAX_EXTRACTED_BYTES` + +從匯入的自訂表情符號 ZIP 封存檔擷取的檔案總大小上限,單位為位元組。 +預設值為 250 MiB。 diff --git a/drizzle/20261028021042_custom-emoji-import-jobs/migration.sql b/drizzle/20261028021042_custom-emoji-import-jobs/migration.sql new file mode 100644 index 00000000..04b2bd45 --- /dev/null +++ b/drizzle/20261028021042_custom-emoji-import-jobs/migration.sql @@ -0,0 +1,12 @@ +CREATE TYPE "import_custom_emoji_status_enum" AS ENUM('pending', 'processing', 'completed', 'failed');--> statement-breakpoint +CREATE TABLE "custom_emoji_import_jobs" ( + "id" uuid PRIMARY KEY, + "archive_key" text NOT NULL, + "status" "import_custom_emoji_status_enum" DEFAULT 'pending'::"import_custom_emoji_status_enum" NOT NULL, + "imported_count" integer DEFAULT 0 NOT NULL, + "skipped_count" integer DEFAULT 0 NOT NULL, + "failed_count" integer DEFAULT 0 NOT NULL, + "error" text, + "created" timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + "completed" timestamp with time zone +); diff --git a/drizzle/20261028021042_custom-emoji-import-jobs/snapshot.json b/drizzle/20261028021042_custom-emoji-import-jobs/snapshot.json new file mode 100644 index 00000000..c012a2bb --- /dev/null +++ b/drizzle/20261028021042_custom-emoji-import-jobs/snapshot.json @@ -0,0 +1,8505 @@ +{ + "version": "8", + "dialect": "postgres", + "id": "af444648-e5cd-4fe1-8170-136ec5abc3f4", + "prevIds": [ + "83309487-5aa7-4aa6-b0a2-895a726ddc88" + ], + "ddl": [ + { + "values": [ + "Application", + "Group", + "Organization", + "Person", + "Service" + ], + "name": "account_type", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "cleanup_thumbnails" + ], + "name": "cleanup_job_category", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "pending", + "processing", + "completed", + "failed", + "cancelled" + ], + "name": "cleanup_job_status", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "authorization_code", + "client_credentials" + ], + "name": "grant_type", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "pending", + "processing", + "completed", + "failed" + ], + "name": "import_custom_emoji_status_enum", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "following_accounts", + "lists", + "muted_accounts", + "blocked_accounts", + "bookmarks" + ], + "name": "import_job_category", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "pending", + "processing", + "completed", + "failed", + "cancelled" + ], + "name": "import_job_status", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "followed", + "list", + "none" + ], + "name": "list_replies_policy", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "notifications", + "home" + ], + "name": "marker_type", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "mention", + "status", + "reblog", + "follow", + "follow_request", + "favourite", + "emoji_reaction", + "poll", + "update", + "admin.sign_up", + "admin.report", + "quote", + "quoted_update" + ], + "name": "notification_type", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "Article", + "Note", + "Question" + ], + "name": "post_type", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "public", + "unlisted", + "private", + "direct" + ], + "name": "post_visibility", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "public", + "followers", + "nobody" + ], + "name": "quote_approval_policy", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "pending", + "accepted", + "rejected", + "revoked", + "unauthorized" + ], + "name": "quote_state", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "pending", + "processing", + "completed", + "failed", + "waiting" + ], + "name": "remote_reply_scrape_job_status", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "replies", + "context" + ], + "name": "remote_reply_scrape_kind", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "read", + "read:accounts", + "read:blocks", + "read:bookmarks", + "read:favourites", + "read:filters", + "read:follows", + "read:lists", + "read:mutes", + "read:notifications", + "read:search", + "read:statuses", + "write", + "write:accounts", + "write:blocks", + "write:bookmarks", + "write:conversations", + "write:favourites", + "write:filters", + "write:follows", + "write:lists", + "write:media", + "write:mutes", + "write:notifications", + "write:reports", + "write:statuses", + "follow", + "push", + "profile" + ], + "name": "scope", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "amber", + "azure", + "blue", + "cyan", + "fuchsia", + "green", + "grey", + "indigo", + "jade", + "lime", + "orange", + "pink", + "pumpkin", + "purple", + "red", + "sand", + "slate", + "violet", + "yellow", + "zinc" + ], + "name": "theme_color", + "entityType": "enums", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "access_grants", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "access_tokens", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "account_owners", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "accounts", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "applications", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "blocks", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "bookmarks", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "cleanup_job_items", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "cleanup_jobs", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "credentials", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "custom_emoji_import_jobs", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "custom_emojis", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "featured_tags", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "follows", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "import_job_effects", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "import_job_items", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "import_jobs", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "instances", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "likes", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "list_members", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "list_posts", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "lists", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "markers", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "media", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "mentions", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "mutes", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "notification_groups", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "notifications", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "passkey_login_challenges", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "passkeys", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "pinned_posts", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "poll_options", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "poll_votes", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "polls", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "posts", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "reactions", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "remote_context_scrape_aliases", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "remote_reply_scrape_jobs", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "remote_reply_scrape_origins", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "reports", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "timeline_posts", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "totps", + "entityType": "tables", + "schema": "public" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "expires_in", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "redirect_uri", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "scope", + "typeSchema": "public", + "notNull": true, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "scopes", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code_challenge", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "varchar(256)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code_challenge_method", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "application_id", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "resource_owner_id", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "revoked", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "gen_random_uuid()", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "application_id", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "grant_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'authorization_code'", + "generated": null, + "identity": null, + "name": "grant_type", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "scope", + "typeSchema": "public", + "notNull": true, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "scopes", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "handle", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rsa_private_key_jwk", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rsa_public_key_jwk", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ed25519_private_key_jwk", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ed25519_public_key_jwk", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "json", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "fields", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bio", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "followed_tags", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "post_visibility", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'public'", + "generated": null, + "identity": null, + "name": "visibility", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'en'", + "generated": null, + "identity": null, + "name": "language", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "discoverable", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "expand_spoilers", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "following_list_public", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "theme_color", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "theme_color", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iri", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "account_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "varchar(100)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "handle", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bio_html", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "protected", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "avatar_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cover_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "inbox_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "followers_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "shared_inbox_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "featured_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "following_count", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "followers_count", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "posts_count", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "json", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "field_htmls", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "emojis", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "sensitive", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "successor_id", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "(ARRAY[]::text[])", + "generated": null, + "identity": null, + "name": "aliases", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "instance_host", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "published", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "fetched", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "varchar(256)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "redirect_uris", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "scope", + "typeSchema": "public", + "notNull": true, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "scopes", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "website", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "client_id", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "client_secret", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "confidential", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "blocks" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "blocked_account_id", + "entityType": "columns", + "schema": "public", + "table": "blocks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "blocks" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "bookmarks" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "bookmarks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "bookmarks" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "job_id", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "cleanup_job_status", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "data", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error_message", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "processed_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "attempts", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_attempt_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_dispatch_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "cleanup_job_category", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "cleanup_job_status", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "total_items", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "processed_items", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "successful_items", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "failed_items", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error_message", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "completed_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_dispatch_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "varchar(254)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "email", + "entityType": "columns", + "schema": "public", + "table": "credentials" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "password_hash", + "entityType": "columns", + "schema": "public", + "table": "credentials" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "credentials" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "archive_key", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "import_custom_emoji_status_enum", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "imported_count", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "skipped_count", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "failed_count", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "completed", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "shortcode", + "entityType": "columns", + "schema": "public", + "table": "custom_emojis" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "public", + "table": "custom_emojis" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "public", + "table": "custom_emojis" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "custom_emojis" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "featured_tags" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "featured_tags" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "public", + "table": "featured_tags" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "featured_tags" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iri", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "following_id", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "follower_id", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "shares", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "notify", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "languages", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "approved", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "public", + "table": "import_job_effects" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'[]'", + "generated": null, + "identity": null, + "name": "deliveries", + "entityType": "columns", + "schema": "public", + "table": "import_job_effects" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "delivered", + "entityType": "columns", + "schema": "public", + "table": "import_job_effects" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "job_id", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "import_job_status", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "data", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error_message", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "processed_at", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "attempts", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_attempt_at", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_dispatch_at", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "import_job_category", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "import_job_status", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "total_items", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "processed_items", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "successful_items", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "failed_items", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error_message", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "completed_at", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_dispatch_at", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "host", + "entityType": "columns", + "schema": "public", + "table": "instances" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "software", + "entityType": "columns", + "schema": "public", + "table": "instances" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "software_version", + "entityType": "columns", + "schema": "public", + "table": "instances" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "instances" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "likes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "likes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "likes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "list_id", + "entityType": "columns", + "schema": "public", + "table": "list_members" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "list_members" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "list_members" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "list_id", + "entityType": "columns", + "schema": "public", + "table": "list_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "list_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "list_replies_policy", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'list'", + "generated": null, + "identity": null, + "name": "replies_policy", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "exclusive", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "markers" + }, + { + "type": "marker_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "markers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_read_id", + "entityType": "columns", + "schema": "public", + "table": "markers" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "version", + "entityType": "columns", + "schema": "public", + "table": "markers" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "markers" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "position", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "width", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "height", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "thumbnail_type", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "thumbnail_url", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "thumbnail_width", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "thumbnail_height", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "thumbnail_cleaned", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "mentions" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "mentions" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "muted_account_id", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "notifications", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "interval", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "duration", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "group_key", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "notification_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_post_id", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "notifications_count", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "most_recent_notification_id", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "sample_account_ids", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "latest_page_notification_at", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "page_min_id", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "page_max_id", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "notification_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "actor_account_id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_post_id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_account_id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_poll_id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "group_key", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "read_at", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "passkey_login_challenges" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "challenge", + "entityType": "columns", + "schema": "public", + "table": "passkey_login_challenges" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "expires_at", + "entityType": "columns", + "schema": "public", + "table": "passkey_login_challenges" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "passkey_login_challenges" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "varchar(254)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "credential_email", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "public_key", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "counter", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "(ARRAY[]::text[])", + "generated": null, + "identity": null, + "name": "transports", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "device_type", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "backed_up", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nickname", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_used", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "bigserial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "index", + "entityType": "columns", + "schema": "public", + "table": "pinned_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "pinned_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "pinned_posts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "pinned_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "poll_id", + "entityType": "columns", + "schema": "public", + "table": "poll_options" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "index", + "entityType": "columns", + "schema": "public", + "table": "poll_options" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "public", + "table": "poll_options" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "votes_count", + "entityType": "columns", + "schema": "public", + "table": "poll_options" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "poll_id", + "entityType": "columns", + "schema": "public", + "table": "poll_votes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "option_index", + "entityType": "columns", + "schema": "public", + "table": "poll_votes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "poll_votes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "poll_votes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "polls" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "multiple", + "entityType": "columns", + "schema": "public", + "table": "polls" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "voters_count", + "entityType": "columns", + "schema": "public", + "table": "polls" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "expires", + "entityType": "columns", + "schema": "public", + "table": "polls" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "polls" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iri", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "post_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "actor_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "application_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "reply_target_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sharing_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "quote_target_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "quote_target_iri", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "quote_state", + "typeSchema": "public", + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "quote_state", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "quote_authorization_iri", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "quote_approval_policy", + "typeSchema": "public", + "notNull": false, + "dimensions": 0, + "default": "'public'", + "generated": null, + "identity": null, + "name": "quote_approval_policy", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "post_visibility", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "visibility", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "summary", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "content_html", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "content", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "poll_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "language", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "tags", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "emojis", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "sensitive", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "preview_card", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "replies_count", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "shares_count", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "likes_count", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "quotes_count", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "idempotence_key", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "published", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "emoji", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "custom_emoji", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "emoji_iri", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iri", + "entityType": "columns", + "schema": "public", + "table": "remote_context_scrape_aliases" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "job_id", + "entityType": "columns", + "schema": "public", + "table": "remote_context_scrape_aliases" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_iri", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "replies_iri", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "remote_reply_scrape_kind", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'replies'", + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "blocked_by_job_id", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "partial", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "yielded_items", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "request_count", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "skipped_items", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "host_requeues", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "base_url", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "origin_host", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "depth", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "remote_reply_scrape_job_status", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "attempts", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "fetched_items", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_attempt_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_dispatch_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error_message", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "completed_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "origin_host", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_request_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_request_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'epoch'", + "generated": null, + "identity": null, + "name": "cooldown_until", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "processing_job_id", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "processing_started_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iri", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_account_id", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "comment", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "posts", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "timeline_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "timeline_posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "issuer", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "algorithm", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "digits", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "period", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "secret", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "resource_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "access_grants_resource_owner_id_index", + "entityType": "indexes", + "schema": "public", + "table": "access_grants" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "application_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "access_grants_application_id_index", + "entityType": "indexes", + "schema": "public", + "table": "access_grants" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "application_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "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": "access_tokens_application_id_created_id_index", + "entityType": "indexes", + "schema": "public", + "table": "access_tokens" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "access_tokens_account_owner_id_index", + "entityType": "indexes", + "schema": "public", + "table": "access_tokens" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "created", + "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": "access_tokens_created_id_index", + "entityType": "indexes", + "schema": "public", + "table": "access_tokens" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "handle", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": { + "name": "gin_trgm_ops", + "default": false + } + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "accounts_handle_trgm_idx", + "entityType": "indexes", + "schema": "public", + "table": "accounts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "name", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": { + "name": "gin_trgm_ops", + "default": false + } + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "accounts_name_trgm_idx", + "entityType": "indexes", + "schema": "public", + "table": "accounts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "blocks_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "blocks" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "blocked_account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "blocks_blocked_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "blocks" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "bookmarks_post_id_account_owner_id_index", + "entityType": "indexes", + "schema": "public", + "table": "bookmarks" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "cleanup_job_items_job_id_status_index", + "entityType": "indexes", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "next_dispatch_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"status\" IN ('pending', 'processing')", + "with": "", + "method": "btree", + "concurrently": false, + "name": "cleanup_job_items_job_id_next_dispatch_at_index", + "entityType": "indexes", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "(\"data\"->>'key')", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"data\"->>'kind' = 'proxy_cache'", + "with": "", + "method": "btree", + "concurrently": false, + "name": "cleanup_job_items_proxy_key_index", + "entityType": "indexes", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "cleanup_jobs_status_created_index", + "entityType": "indexes", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "next_dispatch_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"status\" IN ('pending', 'processing')", + "with": "", + "method": "btree", + "concurrently": false, + "name": "cleanup_jobs_next_dispatch_at_index", + "entityType": "indexes", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "following_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "approved", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"approved\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "follows_following_id_approved_index", + "entityType": "indexes", + "schema": "public", + "table": "follows" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "follower_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "following_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"approved\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "follows_follower_id_following_id_approved_index", + "entityType": "indexes", + "schema": "public", + "table": "follows" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "following_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "follows_following_id_created_index", + "entityType": "indexes", + "schema": "public", + "table": "follows" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "item_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"delivered\" < jsonb_array_length(\"deliveries\")", + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_job_effects_item_id_index", + "entityType": "indexes", + "schema": "public", + "table": "import_job_effects" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_job_items_job_id_status_index", + "entityType": "indexes", + "schema": "public", + "table": "import_job_items" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "next_dispatch_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"status\" IN ('pending', 'processing')", + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_job_items_job_id_next_dispatch_at_index", + "entityType": "indexes", + "schema": "public", + "table": "import_job_items" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_jobs_account_owner_id_status_index", + "entityType": "indexes", + "schema": "public", + "table": "import_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_jobs_status_created_index", + "entityType": "indexes", + "schema": "public", + "table": "import_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "next_dispatch_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"status\" IN ('pending', 'processing')", + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_jobs_next_dispatch_at_index", + "entityType": "indexes", + "schema": "public", + "table": "import_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "likes_account_id_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "likes" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "likes_created_index", + "entityType": "indexes", + "schema": "public", + "table": "likes" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "list_posts_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "list_posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "list_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "list_posts_list_id_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "list_posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "media_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "media" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "mentions_post_id_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "mentions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "mutes_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "mutes" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "target_post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notification_groups_target_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "updated", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notification_groups_account_owner_id_updated_index", + "entityType": "indexes", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "type", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notification_groups_account_owner_id_type_index", + "entityType": "indexes", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "target_post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_target_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_account_owner_id_created_index", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "read_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_account_owner_id_read_at_index", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "group_key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_group_key_index", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_created_index", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "target_poll_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": "\"type\" = 'poll' AND \"target_poll_id\" IS NOT NULL", + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_poll_account_owner_id_target_poll_id_unique", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "expires_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "passkey_login_challenges_expires_at_index", + "entityType": "indexes", + "schema": "public", + "table": "passkey_login_challenges" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pinned_posts_account_id_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "pinned_posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "poll_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "index", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "poll_options_poll_id_index_index", + "entityType": "indexes", + "schema": "public", + "table": "poll_options" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "poll_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "poll_votes_poll_id_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "poll_votes" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "expires", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "polls_expires_index", + "entityType": "indexes", + "schema": "public", + "table": "polls" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "sharing_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_sharing_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "url", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"url\" is not null)", + "with": "", + "method": "hash", + "concurrently": false, + "name": "posts_url_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "sharing_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_sharing_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "reply_target_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_reply_target_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "reply_target_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_reply_target_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "quote_target_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"quote_target_id\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_quote_target_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "quote_authorization_iri", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"quote_authorization_iri\" is not null)", + "with": "", + "method": "hash", + "concurrently": false, + "name": "posts_quote_authorization_iri_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "visibility", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_visibility_actor_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "visibility", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "sharing_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"sharing_id\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_visibility_actor_id_sharing_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "visibility", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "reply_target_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"reply_target_id\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_visibility_actor_id_reply_target_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "content_html", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": { + "name": "gin_trgm_ops", + "default": false + } + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "posts_content_html_trgm_idx", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "updated", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_updated_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "updated", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_updated_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "published", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_published_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "language", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"language\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_language_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "tags", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "posts_tags_gin_idx", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "reactions_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "reactions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "reactions_post_id_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "reactions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "reactions_created_index", + "entityType": "indexes", + "schema": "public", + "table": "reactions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_context_scrape_aliases_job_id_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_context_scrape_aliases" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "kind", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "replies_iri", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_kind_collection_unique", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "blocked_by_job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_blocked_by_job_id_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "next_dispatch_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"status\" IN ('pending', 'processing')", + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_dispatch_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "next_attempt_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_claim_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "origin_host", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "next_attempt_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_origin_claim_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "updated", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_stale_processing_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "next_request_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_origins_next_request_at_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "processing_job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_origins_processing_job_id_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "timeline_posts_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "timeline_posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "timeline_posts_account_id_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "timeline_posts" + }, + { + "nameExplicit": false, + "columns": [ + "application_id" + ], + "schemaTo": "public", + "tableTo": "applications", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "access_grants_application_id_applications_id_fk", + "entityType": "fks", + "schema": "public", + "table": "access_grants" + }, + { + "nameExplicit": false, + "columns": [ + "resource_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "access_grants_resource_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "access_grants" + }, + { + "nameExplicit": false, + "columns": [ + "application_id" + ], + "schemaTo": "public", + "tableTo": "applications", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "access_tokens_application_id_applications_id_fk", + "entityType": "fks", + "schema": "public", + "table": "access_tokens" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "access_tokens_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "access_tokens" + }, + { + "nameExplicit": false, + "columns": [ + "id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "account_owners_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "account_owners" + }, + { + "nameExplicit": false, + "columns": [ + "successor_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "accounts_successor_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "accounts" + }, + { + "nameExplicit": false, + "columns": [ + "instance_host" + ], + "schemaTo": "public", + "tableTo": "instances", + "columnsTo": [ + "host" + ], + "onUpdate": "NO ACTION", + "onDelete": "NO ACTION", + "name": "accounts_instance_host_instances_host_fk", + "entityType": "fks", + "schema": "public", + "table": "accounts" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "blocks_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "blocks" + }, + { + "nameExplicit": false, + "columns": [ + "blocked_account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "blocks_blocked_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "blocks" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "bookmarks_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "bookmarks" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "bookmarks_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "bookmarks" + }, + { + "nameExplicit": false, + "columns": [ + "job_id" + ], + "schemaTo": "public", + "tableTo": "cleanup_jobs", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "cleanup_job_items_job_id_cleanup_jobs_id_fk", + "entityType": "fks", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "featured_tags_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "featured_tags" + }, + { + "nameExplicit": false, + "columns": [ + "following_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "follows_following_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "follows" + }, + { + "nameExplicit": false, + "columns": [ + "follower_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "follows_follower_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "follows" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "public", + "tableTo": "import_job_items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "import_job_effects_item_id_import_job_items_id_fkey", + "entityType": "fks", + "schema": "public", + "table": "import_job_effects" + }, + { + "nameExplicit": false, + "columns": [ + "job_id" + ], + "schemaTo": "public", + "tableTo": "import_jobs", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "import_job_items_job_id_import_jobs_id_fk", + "entityType": "fks", + "schema": "public", + "table": "import_job_items" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "import_jobs_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "import_jobs" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "likes_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "likes" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "likes_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "likes" + }, + { + "nameExplicit": false, + "columns": [ + "list_id" + ], + "schemaTo": "public", + "tableTo": "lists", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "list_members_list_id_lists_id_fk", + "entityType": "fks", + "schema": "public", + "table": "list_members" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "list_members_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "list_members" + }, + { + "nameExplicit": false, + "columns": [ + "list_id" + ], + "schemaTo": "public", + "tableTo": "lists", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "list_posts_list_id_lists_id_fk", + "entityType": "fks", + "schema": "public", + "table": "list_posts" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "list_posts_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "list_posts" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "lists_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "lists" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "markers_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "markers" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "media_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "media" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "mentions_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "mentions" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "mentions_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "mentions" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "mutes_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "mutes" + }, + { + "nameExplicit": false, + "columns": [ + "muted_account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "mutes_muted_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "mutes" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notification_groups_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + "target_post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notification_groups_target_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + "most_recent_notification_id" + ], + "schemaTo": "public", + "tableTo": "notifications", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notification_groups_most_recent_notification_id_notifications_i", + "entityType": "fks", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notifications_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + "actor_account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notifications_actor_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + "target_post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notifications_target_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + "target_account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notifications_target_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + "target_poll_id" + ], + "schemaTo": "public", + "tableTo": "polls", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notifications_target_poll_id_polls_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + "credential_email" + ], + "schemaTo": "public", + "tableTo": "credentials", + "columnsTo": [ + "email" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "passkeys_credential_email_credentials_email_fk", + "entityType": "fks", + "schema": "public", + "table": "passkeys" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pinned_posts_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "pinned_posts" + }, + { + "nameExplicit": false, + "columns": [ + "post_id", + "account_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id", + "actor_id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pinned_posts_post_id_account_id_posts_id_actor_id_fk", + "entityType": "fks", + "schema": "public", + "table": "pinned_posts" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id" + ], + "schemaTo": "public", + "tableTo": "polls", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "poll_options_poll_id_polls_id_fk", + "entityType": "fks", + "schema": "public", + "table": "poll_options" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id" + ], + "schemaTo": "public", + "tableTo": "polls", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "poll_votes_poll_id_polls_id_fk", + "entityType": "fks", + "schema": "public", + "table": "poll_votes" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "poll_votes_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "poll_votes" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id", + "option_index" + ], + "schemaTo": "public", + "tableTo": "poll_options", + "columnsTo": [ + "poll_id", + "index" + ], + "onUpdate": "NO ACTION", + "onDelete": "NO ACTION", + "name": "poll_votes_poll_id_option_index_poll_options_poll_id_index_fk", + "entityType": "fks", + "schema": "public", + "table": "poll_votes" + }, + { + "nameExplicit": false, + "columns": [ + "actor_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "posts_actor_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "application_id" + ], + "schemaTo": "public", + "tableTo": "applications", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "posts_application_id_applications_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "reply_target_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "posts_reply_target_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "sharing_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "posts_sharing_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "quote_target_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "posts_quote_target_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id" + ], + "schemaTo": "public", + "tableTo": "polls", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "posts_poll_id_polls_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "reactions_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "reactions" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "reactions_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "reactions" + }, + { + "nameExplicit": false, + "columns": [ + "job_id" + ], + "schemaTo": "public", + "tableTo": "remote_reply_scrape_jobs", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "remote_context_scrape_aliases_t0fqdOkRvVea_fkey", + "entityType": "fks", + "schema": "public", + "table": "remote_context_scrape_aliases" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "remote_reply_scrape_jobs_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": false, + "columns": [ + "blocked_by_job_id" + ], + "schemaTo": "public", + "tableTo": "remote_reply_scrape_jobs", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "remote_reply_scrape_jobs_FpYh7OnicGJo_fkey", + "entityType": "fks", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "reports_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "reports" + }, + { + "nameExplicit": false, + "columns": [ + "target_account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "reports_target_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "reports" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "timeline_posts_account_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "timeline_posts" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "timeline_posts_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "timeline_posts" + }, + { + "columns": [ + "account_id", + "blocked_account_id" + ], + "nameExplicit": false, + "name": "blocks_account_id_blocked_account_id_pk", + "entityType": "pks", + "schema": "public", + "table": "blocks" + }, + { + "columns": [ + "post_id", + "account_owner_id" + ], + "nameExplicit": false, + "name": "bookmarks_post_id_account_owner_id_pk", + "entityType": "pks", + "schema": "public", + "table": "bookmarks" + }, + { + "columns": [ + "following_id", + "follower_id" + ], + "nameExplicit": false, + "name": "follows_following_id_follower_id_pk", + "entityType": "pks", + "schema": "public", + "table": "follows" + }, + { + "columns": [ + "post_id", + "account_id" + ], + "nameExplicit": false, + "name": "likes_post_id_account_id_pk", + "entityType": "pks", + "schema": "public", + "table": "likes" + }, + { + "columns": [ + "list_id", + "account_id" + ], + "nameExplicit": false, + "name": "list_members_list_id_account_id_pk", + "entityType": "pks", + "schema": "public", + "table": "list_members" + }, + { + "columns": [ + "list_id", + "post_id" + ], + "nameExplicit": false, + "name": "list_posts_list_id_post_id_pk", + "entityType": "pks", + "schema": "public", + "table": "list_posts" + }, + { + "columns": [ + "account_owner_id", + "type" + ], + "nameExplicit": false, + "name": "markers_account_owner_id_type_pk", + "entityType": "pks", + "schema": "public", + "table": "markers" + }, + { + "columns": [ + "post_id", + "account_id" + ], + "nameExplicit": false, + "name": "mentions_post_id_account_id_pk", + "entityType": "pks", + "schema": "public", + "table": "mentions" + }, + { + "columns": [ + "poll_id", + "index" + ], + "nameExplicit": false, + "name": "poll_options_poll_id_index_pk", + "entityType": "pks", + "schema": "public", + "table": "poll_options" + }, + { + "columns": [ + "poll_id", + "option_index", + "account_id" + ], + "nameExplicit": false, + "name": "poll_votes_poll_id_option_index_account_id_pk", + "entityType": "pks", + "schema": "public", + "table": "poll_votes" + }, + { + "columns": [ + "post_id", + "account_id", + "emoji" + ], + "nameExplicit": false, + "name": "reactions_post_id_account_id_emoji_pk", + "entityType": "pks", + "schema": "public", + "table": "reactions" + }, + { + "columns": [ + "account_id", + "post_id" + ], + "nameExplicit": false, + "name": "timeline_posts_account_id_post_id_pk", + "entityType": "pks", + "schema": "public", + "table": "timeline_posts" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "access_grants_pkey", + "schema": "public", + "table": "access_grants", + "entityType": "pks" + }, + { + "columns": [ + "code" + ], + "nameExplicit": false, + "name": "access_tokens_pkey", + "schema": "public", + "table": "access_tokens", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "account_owners_pkey", + "schema": "public", + "table": "account_owners", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "accounts_pkey", + "schema": "public", + "table": "accounts", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "applications_pkey", + "schema": "public", + "table": "applications", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "cleanup_job_items_pkey", + "schema": "public", + "table": "cleanup_job_items", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "cleanup_jobs_pkey", + "schema": "public", + "table": "cleanup_jobs", + "entityType": "pks" + }, + { + "columns": [ + "email" + ], + "nameExplicit": false, + "name": "credentials_pkey", + "schema": "public", + "table": "credentials", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "custom_emoji_import_jobs_pkey", + "schema": "public", + "table": "custom_emoji_import_jobs", + "entityType": "pks" + }, + { + "columns": [ + "shortcode" + ], + "nameExplicit": false, + "name": "custom_emojis_pkey", + "schema": "public", + "table": "custom_emojis", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "featured_tags_pkey", + "schema": "public", + "table": "featured_tags", + "entityType": "pks" + }, + { + "columns": [ + "item_id" + ], + "nameExplicit": false, + "name": "import_job_effects_pkey", + "schema": "public", + "table": "import_job_effects", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "import_job_items_pkey", + "schema": "public", + "table": "import_job_items", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "import_jobs_pkey", + "schema": "public", + "table": "import_jobs", + "entityType": "pks" + }, + { + "columns": [ + "host" + ], + "nameExplicit": false, + "name": "instances_pkey", + "schema": "public", + "table": "instances", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "lists_pkey", + "schema": "public", + "table": "lists", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "media_pkey", + "schema": "public", + "table": "media", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "mutes_pkey", + "schema": "public", + "table": "mutes", + "entityType": "pks" + }, + { + "columns": [ + "group_key" + ], + "nameExplicit": false, + "name": "notification_groups_pkey", + "schema": "public", + "table": "notification_groups", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "notifications_pkey", + "schema": "public", + "table": "notifications", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "passkey_login_challenges_pkey", + "schema": "public", + "table": "passkey_login_challenges", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "passkeys_pkey", + "schema": "public", + "table": "passkeys", + "entityType": "pks" + }, + { + "columns": [ + "index" + ], + "nameExplicit": false, + "name": "pinned_posts_pkey", + "schema": "public", + "table": "pinned_posts", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "polls_pkey", + "schema": "public", + "table": "polls", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "posts_pkey", + "schema": "public", + "table": "posts", + "entityType": "pks" + }, + { + "columns": [ + "iri" + ], + "nameExplicit": false, + "name": "remote_context_scrape_aliases_pkey", + "schema": "public", + "table": "remote_context_scrape_aliases", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "remote_reply_scrape_jobs_pkey", + "schema": "public", + "table": "remote_reply_scrape_jobs", + "entityType": "pks" + }, + { + "columns": [ + "origin_host" + ], + "nameExplicit": false, + "name": "remote_reply_scrape_origins_pkey", + "schema": "public", + "table": "remote_reply_scrape_origins", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "reports_pkey", + "schema": "public", + "table": "reports", + "entityType": "pks" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id", + "name" + ], + "nullsNotDistinct": false, + "name": "featured_tags_account_owner_id_name_unique", + "entityType": "uniques", + "schema": "public", + "table": "featured_tags" + }, + { + "nameExplicit": true, + "columns": [ + "account_id", + "muted_account_id" + ], + "nullsNotDistinct": false, + "name": "mutes_account_id_muted_account_id_unique", + "entityType": "uniques", + "schema": "public", + "table": "mutes" + }, + { + "nameExplicit": false, + "columns": [ + "post_id", + "account_id" + ], + "nullsNotDistinct": false, + "name": "pinned_posts_post_id_account_id_unique", + "entityType": "uniques", + "schema": "public", + "table": "pinned_posts" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id", + "title" + ], + "nullsNotDistinct": false, + "name": "poll_options_poll_id_title_unique", + "entityType": "uniques", + "schema": "public", + "table": "poll_options" + }, + { + "nameExplicit": true, + "columns": [ + "id", + "actor_id" + ], + "nullsNotDistinct": false, + "name": "posts_id_actor_id_unique", + "entityType": "uniques", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id" + ], + "nullsNotDistinct": false, + "name": "posts_poll_id_unique", + "entityType": "uniques", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "actor_id", + "sharing_id" + ], + "nullsNotDistinct": false, + "name": "posts_actor_id_sharing_id_unique", + "entityType": "uniques", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "code" + ], + "nullsNotDistinct": false, + "name": "access_grants_code_unique", + "schema": "public", + "table": "access_grants", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "id" + ], + "nullsNotDistinct": false, + "name": "access_tokens_id_key", + "schema": "public", + "table": "access_tokens", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "handle" + ], + "nullsNotDistinct": false, + "name": "account_owners_handle_unique", + "schema": "public", + "table": "account_owners", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "iri" + ], + "nullsNotDistinct": false, + "name": "accounts_iri_unique", + "schema": "public", + "table": "accounts", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "handle" + ], + "nullsNotDistinct": false, + "name": "accounts_handle_unique", + "schema": "public", + "table": "accounts", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "client_id" + ], + "nullsNotDistinct": false, + "name": "applications_client_id_unique", + "schema": "public", + "table": "applications", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "iri" + ], + "nullsNotDistinct": false, + "name": "follows_iri_unique", + "schema": "public", + "table": "follows", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "iri" + ], + "nullsNotDistinct": false, + "name": "posts_iri_unique", + "schema": "public", + "table": "posts", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "iri" + ], + "nullsNotDistinct": false, + "name": "reports_iri_unique", + "schema": "public", + "table": "reports", + "entityType": "uniques" + }, + { + "value": "jsonb_typeof(\"rsa_private_key_jwk\") = 'object'", + "name": "ck_account_owners_rsa_private_key_jwk_object", + "entityType": "checks", + "schema": "public", + "table": "account_owners" + }, + { + "value": "jsonb_typeof(\"rsa_public_key_jwk\") = 'object'", + "name": "ck_account_owners_rsa_public_key_jwk_object", + "entityType": "checks", + "schema": "public", + "table": "account_owners" + }, + { + "value": "jsonb_typeof(\"ed25519_private_key_jwk\") = 'object'", + "name": "ck_account_owners_ed25519_private_key_jwk_object", + "entityType": "checks", + "schema": "public", + "table": "account_owners" + }, + { + "value": "jsonb_typeof(\"ed25519_public_key_jwk\") = 'object'", + "name": "ck_account_owners_ed25519_public_key_jwk_object", + "entityType": "checks", + "schema": "public", + "table": "account_owners" + }, + { + "value": "json_typeof(\"fields\") = 'object'", + "name": "ck_account_owners_fields_object", + "entityType": "checks", + "schema": "public", + "table": "account_owners" + }, + { + "value": "json_typeof(\"field_htmls\") = 'object'", + "name": "ck_accounts_field_htmls_object", + "entityType": "checks", + "schema": "public", + "table": "accounts" + }, + { + "value": "jsonb_typeof(\"emojis\") = 'object'", + "name": "ck_accounts_emojis_object", + "entityType": "checks", + "schema": "public", + "table": "accounts" + }, + { + "value": "\"following_id\" != \"follower_id\"", + "name": "ck_follows_self", + "entityType": "checks", + "schema": "public", + "table": "follows" + } + ], + "renames": [] +} \ No newline at end of file diff --git a/drizzle/20261029051220_brainy_the_phantom/migration.sql b/drizzle/20261029051220_brainy_the_phantom/migration.sql new file mode 100644 index 00000000..5094cc04 --- /dev/null +++ b/drizzle/20261029051220_brainy_the_phantom/migration.sql @@ -0,0 +1,2 @@ +ALTER TABLE "custom_emoji_import_jobs" ADD COLUMN "processing_started" timestamp with time zone;--> statement-breakpoint +CREATE INDEX "custom_emoji_import_jobs_status_processing_started_idx" ON "custom_emoji_import_jobs" ("status","processing_started"); \ No newline at end of file diff --git a/drizzle/20261029051220_brainy_the_phantom/snapshot.json b/drizzle/20261029051220_brainy_the_phantom/snapshot.json new file mode 100644 index 00000000..0651a87d --- /dev/null +++ b/drizzle/20261029051220_brainy_the_phantom/snapshot.json @@ -0,0 +1,8546 @@ +{ + "version": "8", + "dialect": "postgres", + "id": "782bd32e-903f-4e64-bbe1-d19e530e6781", + "prevIds": [ + "af444648-e5cd-4fe1-8170-136ec5abc3f4" + ], + "ddl": [ + { + "values": [ + "Application", + "Group", + "Organization", + "Person", + "Service" + ], + "name": "account_type", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "cleanup_thumbnails" + ], + "name": "cleanup_job_category", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "pending", + "processing", + "completed", + "failed", + "cancelled" + ], + "name": "cleanup_job_status", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "authorization_code", + "client_credentials" + ], + "name": "grant_type", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "pending", + "processing", + "completed", + "failed" + ], + "name": "import_custom_emoji_status_enum", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "following_accounts", + "lists", + "muted_accounts", + "blocked_accounts", + "bookmarks" + ], + "name": "import_job_category", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "pending", + "processing", + "completed", + "failed", + "cancelled" + ], + "name": "import_job_status", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "followed", + "list", + "none" + ], + "name": "list_replies_policy", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "notifications", + "home" + ], + "name": "marker_type", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "mention", + "status", + "reblog", + "follow", + "follow_request", + "favourite", + "emoji_reaction", + "poll", + "update", + "admin.sign_up", + "admin.report", + "quote", + "quoted_update" + ], + "name": "notification_type", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "Article", + "Note", + "Question" + ], + "name": "post_type", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "public", + "unlisted", + "private", + "direct" + ], + "name": "post_visibility", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "public", + "followers", + "nobody" + ], + "name": "quote_approval_policy", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "pending", + "accepted", + "rejected", + "revoked", + "unauthorized" + ], + "name": "quote_state", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "pending", + "processing", + "completed", + "failed", + "waiting" + ], + "name": "remote_reply_scrape_job_status", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "replies", + "context" + ], + "name": "remote_reply_scrape_kind", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "read", + "read:accounts", + "read:blocks", + "read:bookmarks", + "read:favourites", + "read:filters", + "read:follows", + "read:lists", + "read:mutes", + "read:notifications", + "read:search", + "read:statuses", + "write", + "write:accounts", + "write:blocks", + "write:bookmarks", + "write:conversations", + "write:favourites", + "write:filters", + "write:follows", + "write:lists", + "write:media", + "write:mutes", + "write:notifications", + "write:reports", + "write:statuses", + "follow", + "push", + "profile" + ], + "name": "scope", + "entityType": "enums", + "schema": "public" + }, + { + "values": [ + "amber", + "azure", + "blue", + "cyan", + "fuchsia", + "green", + "grey", + "indigo", + "jade", + "lime", + "orange", + "pink", + "pumpkin", + "purple", + "red", + "sand", + "slate", + "violet", + "yellow", + "zinc" + ], + "name": "theme_color", + "entityType": "enums", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "access_grants", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "access_tokens", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "account_owners", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "accounts", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "applications", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "blocks", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "bookmarks", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "cleanup_job_items", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "cleanup_jobs", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "credentials", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "custom_emoji_import_jobs", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "custom_emojis", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "featured_tags", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "follows", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "import_job_effects", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "import_job_items", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "import_jobs", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "instances", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "likes", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "list_members", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "list_posts", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "lists", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "markers", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "media", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "mentions", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "mutes", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "notification_groups", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "notifications", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "passkey_login_challenges", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "passkeys", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "pinned_posts", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "poll_options", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "poll_votes", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "polls", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "posts", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "reactions", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "remote_context_scrape_aliases", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "remote_reply_scrape_jobs", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "remote_reply_scrape_origins", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "reports", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "timeline_posts", + "entityType": "tables", + "schema": "public" + }, + { + "isRlsEnabled": false, + "name": "totps", + "entityType": "tables", + "schema": "public" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "expires_in", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "redirect_uri", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "scope", + "typeSchema": "public", + "notNull": true, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "scopes", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code_challenge", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "varchar(256)", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code_challenge_method", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "application_id", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "resource_owner_id", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "revoked", + "entityType": "columns", + "schema": "public", + "table": "access_grants" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "gen_random_uuid()", + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "code", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "application_id", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "grant_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'authorization_code'", + "generated": null, + "identity": null, + "name": "grant_type", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "scope", + "typeSchema": "public", + "notNull": true, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "scopes", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "access_tokens" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "handle", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rsa_private_key_jwk", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "rsa_public_key_jwk", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ed25519_private_key_jwk", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "ed25519_public_key_jwk", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "json", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "fields", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bio", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "followed_tags", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "post_visibility", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'public'", + "generated": null, + "identity": null, + "name": "visibility", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'en'", + "generated": null, + "identity": null, + "name": "language", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "discoverable", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "expand_spoilers", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "following_list_public", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "theme_color", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "theme_color", + "entityType": "columns", + "schema": "public", + "table": "account_owners" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iri", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "account_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "varchar(100)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "handle", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "bio_html", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "protected", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "avatar_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "cover_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "inbox_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "followers_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "shared_inbox_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "featured_url", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "following_count", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "followers_count", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "posts_count", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "json", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "field_htmls", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "emojis", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "sensitive", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "successor_id", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "(ARRAY[]::text[])", + "generated": null, + "identity": null, + "name": "aliases", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "instance_host", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "published", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "fetched", + "entityType": "columns", + "schema": "public", + "table": "accounts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "varchar(256)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "redirect_uris", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "scope", + "typeSchema": "public", + "notNull": true, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "scopes", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "website", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "client_id", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "client_secret", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "confidential", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "applications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "blocks" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "blocked_account_id", + "entityType": "columns", + "schema": "public", + "table": "blocks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "blocks" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "bookmarks" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "bookmarks" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "bookmarks" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "job_id", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "cleanup_job_status", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "data", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error_message", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "processed_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "attempts", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_attempt_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_dispatch_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "cleanup_job_category", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "cleanup_job_status", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "total_items", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "processed_items", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "successful_items", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "failed_items", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error_message", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "completed_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_dispatch_at", + "entityType": "columns", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "type": "varchar(254)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "email", + "entityType": "columns", + "schema": "public", + "table": "credentials" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "password_hash", + "entityType": "columns", + "schema": "public", + "table": "credentials" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "credentials" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "archive_key", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "import_custom_emoji_status_enum", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "imported_count", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "skipped_count", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "failed_count", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "completed", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "processing_started", + "entityType": "columns", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "shortcode", + "entityType": "columns", + "schema": "public", + "table": "custom_emojis" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "public", + "table": "custom_emojis" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "public", + "table": "custom_emojis" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "custom_emojis" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "featured_tags" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "featured_tags" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "public", + "table": "featured_tags" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "featured_tags" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iri", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "following_id", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "follower_id", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "shares", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "notify", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 1, + "default": null, + "generated": null, + "identity": null, + "name": "languages", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "approved", + "entityType": "columns", + "schema": "public", + "table": "follows" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "item_id", + "entityType": "columns", + "schema": "public", + "table": "import_job_effects" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'[]'", + "generated": null, + "identity": null, + "name": "deliveries", + "entityType": "columns", + "schema": "public", + "table": "import_job_effects" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "delivered", + "entityType": "columns", + "schema": "public", + "table": "import_job_effects" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "job_id", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "import_job_status", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "data", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error_message", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "processed_at", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "attempts", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_attempt_at", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_dispatch_at", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "import_job_items" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "import_job_category", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "category", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "import_job_status", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "total_items", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "processed_items", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "successful_items", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "failed_items", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error_message", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "completed_at", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_dispatch_at", + "entityType": "columns", + "schema": "public", + "table": "import_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "host", + "entityType": "columns", + "schema": "public", + "table": "instances" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "software", + "entityType": "columns", + "schema": "public", + "table": "instances" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "software_version", + "entityType": "columns", + "schema": "public", + "table": "instances" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "instances" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "likes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "likes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "likes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "list_id", + "entityType": "columns", + "schema": "public", + "table": "list_members" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "list_members" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "list_members" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "list_id", + "entityType": "columns", + "schema": "public", + "table": "list_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "list_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "list_replies_policy", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'list'", + "generated": null, + "identity": null, + "name": "replies_policy", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "exclusive", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "lists" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "markers" + }, + { + "type": "marker_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "markers" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_read_id", + "entityType": "columns", + "schema": "public", + "table": "markers" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "1", + "generated": null, + "identity": null, + "name": "version", + "entityType": "columns", + "schema": "public", + "table": "markers" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "markers" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "position", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "width", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "height", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "description", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "thumbnail_type", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "thumbnail_url", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "thumbnail_width", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "thumbnail_height", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "thumbnail_cleaned", + "entityType": "columns", + "schema": "public", + "table": "media" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "mentions" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "mentions" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "muted_account_id", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "true", + "generated": null, + "identity": null, + "name": "notifications", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "interval", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "duration", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "mutes" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "group_key", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "notification_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_post_id", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "notifications_count", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "most_recent_notification_id", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "sample_account_ids", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "latest_page_notification_at", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "page_min_id", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "page_max_id", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "notification_groups" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_owner_id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "notification_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "actor_account_id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_post_id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_account_id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_poll_id", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "group_key", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "read_at", + "entityType": "columns", + "schema": "public", + "table": "notifications" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "passkey_login_challenges" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "challenge", + "entityType": "columns", + "schema": "public", + "table": "passkey_login_challenges" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "expires_at", + "entityType": "columns", + "schema": "public", + "table": "passkey_login_challenges" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "passkey_login_challenges" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "varchar(254)", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "credential_email", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "public_key", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "counter", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "(ARRAY[]::text[])", + "generated": null, + "identity": null, + "name": "transports", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "device_type", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "backed_up", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "nickname", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_used", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "passkeys" + }, + { + "type": "bigserial", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "index", + "entityType": "columns", + "schema": "public", + "table": "pinned_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "pinned_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "pinned_posts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "pinned_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "poll_id", + "entityType": "columns", + "schema": "public", + "table": "poll_options" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "index", + "entityType": "columns", + "schema": "public", + "table": "poll_options" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "title", + "entityType": "columns", + "schema": "public", + "table": "poll_options" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "votes_count", + "entityType": "columns", + "schema": "public", + "table": "poll_options" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "poll_id", + "entityType": "columns", + "schema": "public", + "table": "poll_votes" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "option_index", + "entityType": "columns", + "schema": "public", + "table": "poll_votes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "poll_votes" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "poll_votes" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "polls" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "multiple", + "entityType": "columns", + "schema": "public", + "table": "polls" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "voters_count", + "entityType": "columns", + "schema": "public", + "table": "polls" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "expires", + "entityType": "columns", + "schema": "public", + "table": "polls" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "polls" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iri", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "post_type", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "type", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "actor_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "application_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "reply_target_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "sharing_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "quote_target_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "quote_target_iri", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "quote_state", + "typeSchema": "public", + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "quote_state", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "quote_authorization_iri", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "quote_approval_policy", + "typeSchema": "public", + "notNull": false, + "dimensions": 0, + "default": "'public'", + "generated": null, + "identity": null, + "name": "quote_approval_policy", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "post_visibility", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "visibility", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "name", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "summary", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "content_html", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "content", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "poll_id", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "language", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "tags", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "emojis", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "sensitive", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "url", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "jsonb", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "preview_card", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "replies_count", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "shares_count", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "likes_count", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "bigint", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "quotes_count", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "idempotence_key", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "published", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "emoji", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "custom_emoji", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "emoji_iri", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "reactions" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iri", + "entityType": "columns", + "schema": "public", + "table": "remote_context_scrape_aliases" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "job_id", + "entityType": "columns", + "schema": "public", + "table": "remote_context_scrape_aliases" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_iri", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "replies_iri", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "remote_reply_scrape_kind", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'replies'", + "generated": null, + "identity": null, + "name": "kind", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "blocked_by_job_id", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "boolean", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "false", + "generated": null, + "identity": null, + "name": "partial", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "yielded_items", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "request_count", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "skipped_items", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "host_requeues", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "base_url", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "origin_host", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "depth", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "remote_reply_scrape_job_status", + "typeSchema": "public", + "notNull": true, + "dimensions": 0, + "default": "'pending'", + "generated": null, + "identity": null, + "name": "status", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "attempts", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "integer", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "0", + "generated": null, + "identity": null, + "name": "fetched_items", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_attempt_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_dispatch_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "error_message", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "started_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "completed_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "origin_host", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "next_request_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "last_request_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "'epoch'", + "generated": null, + "identity": null, + "name": "cooldown_until", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "processing_job_id", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": false, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "processing_started_at", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "updated", + "entityType": "columns", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "id", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "iri", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "target_account_id", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "comment", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 1, + "default": "'{}'", + "generated": null, + "identity": null, + "name": "posts", + "entityType": "columns", + "schema": "public", + "table": "reports" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "account_id", + "entityType": "columns", + "schema": "public", + "table": "timeline_posts" + }, + { + "type": "uuid", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "post_id", + "entityType": "columns", + "schema": "public", + "table": "timeline_posts" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "issuer", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "label", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "algorithm", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "digits", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "smallint", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "period", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "text", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": null, + "generated": null, + "identity": null, + "name": "secret", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "type": "timestamp with time zone", + "typeSchema": null, + "notNull": true, + "dimensions": 0, + "default": "CURRENT_TIMESTAMP", + "generated": null, + "identity": null, + "name": "created", + "entityType": "columns", + "schema": "public", + "table": "totps" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "resource_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "access_grants_resource_owner_id_index", + "entityType": "indexes", + "schema": "public", + "table": "access_grants" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "application_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "access_grants_application_id_index", + "entityType": "indexes", + "schema": "public", + "table": "access_grants" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "application_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "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": "access_tokens_application_id_created_id_index", + "entityType": "indexes", + "schema": "public", + "table": "access_tokens" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "access_tokens_account_owner_id_index", + "entityType": "indexes", + "schema": "public", + "table": "access_tokens" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "created", + "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": "access_tokens_created_id_index", + "entityType": "indexes", + "schema": "public", + "table": "access_tokens" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "handle", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": { + "name": "gin_trgm_ops", + "default": false + } + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "accounts_handle_trgm_idx", + "entityType": "indexes", + "schema": "public", + "table": "accounts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "name", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": { + "name": "gin_trgm_ops", + "default": false + } + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "accounts_name_trgm_idx", + "entityType": "indexes", + "schema": "public", + "table": "accounts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "blocks_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "blocks" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "blocked_account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "blocks_blocked_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "blocks" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "bookmarks_post_id_account_owner_id_index", + "entityType": "indexes", + "schema": "public", + "table": "bookmarks" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "cleanup_job_items_job_id_status_index", + "entityType": "indexes", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "next_dispatch_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"status\" IN ('pending', 'processing')", + "with": "", + "method": "btree", + "concurrently": false, + "name": "cleanup_job_items_job_id_next_dispatch_at_index", + "entityType": "indexes", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "(\"data\"->>'key')", + "isExpression": true, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"data\"->>'kind' = 'proxy_cache'", + "with": "", + "method": "btree", + "concurrently": false, + "name": "cleanup_job_items_proxy_key_index", + "entityType": "indexes", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "cleanup_jobs_status_created_index", + "entityType": "indexes", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "next_dispatch_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"status\" IN ('pending', 'processing')", + "with": "", + "method": "btree", + "concurrently": false, + "name": "cleanup_jobs_next_dispatch_at_index", + "entityType": "indexes", + "schema": "public", + "table": "cleanup_jobs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "processing_started", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "custom_emoji_import_jobs_status_processing_started_idx", + "entityType": "indexes", + "schema": "public", + "table": "custom_emoji_import_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "following_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "approved", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"approved\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "follows_following_id_approved_index", + "entityType": "indexes", + "schema": "public", + "table": "follows" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "follower_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "following_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"approved\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "follows_follower_id_following_id_approved_index", + "entityType": "indexes", + "schema": "public", + "table": "follows" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "following_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "follows_following_id_created_index", + "entityType": "indexes", + "schema": "public", + "table": "follows" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "item_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"delivered\" < jsonb_array_length(\"deliveries\")", + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_job_effects_item_id_index", + "entityType": "indexes", + "schema": "public", + "table": "import_job_effects" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_job_items_job_id_status_index", + "entityType": "indexes", + "schema": "public", + "table": "import_job_items" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "next_dispatch_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"status\" IN ('pending', 'processing')", + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_job_items_job_id_next_dispatch_at_index", + "entityType": "indexes", + "schema": "public", + "table": "import_job_items" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_jobs_account_owner_id_status_index", + "entityType": "indexes", + "schema": "public", + "table": "import_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_jobs_status_created_index", + "entityType": "indexes", + "schema": "public", + "table": "import_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "next_dispatch_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"status\" IN ('pending', 'processing')", + "with": "", + "method": "btree", + "concurrently": false, + "name": "import_jobs_next_dispatch_at_index", + "entityType": "indexes", + "schema": "public", + "table": "import_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "likes_account_id_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "likes" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "likes_created_index", + "entityType": "indexes", + "schema": "public", + "table": "likes" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "list_posts_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "list_posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "list_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "list_posts_list_id_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "list_posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "media_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "media" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "mentions_post_id_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "mentions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "mutes_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "mutes" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "target_post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notification_groups_target_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "updated", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notification_groups_account_owner_id_updated_index", + "entityType": "indexes", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "type", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notification_groups_account_owner_id_type_index", + "entityType": "indexes", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "target_post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_target_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_account_owner_id_created_index", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "read_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_account_owner_id_read_at_index", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "group_key", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_group_key_index", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_created_index", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "account_owner_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "target_poll_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": "\"type\" = 'poll' AND \"target_poll_id\" IS NOT NULL", + "with": "", + "method": "btree", + "concurrently": false, + "name": "notifications_poll_account_owner_id_target_poll_id_unique", + "entityType": "indexes", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "expires_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "passkey_login_challenges_expires_at_index", + "entityType": "indexes", + "schema": "public", + "table": "passkey_login_challenges" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "pinned_posts_account_id_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "pinned_posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "poll_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "index", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "poll_options_poll_id_index_index", + "entityType": "indexes", + "schema": "public", + "table": "poll_options" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "poll_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "poll_votes_poll_id_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "poll_votes" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "expires", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "polls_expires_index", + "entityType": "indexes", + "schema": "public", + "table": "polls" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "sharing_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_sharing_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "url", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"url\" is not null)", + "with": "", + "method": "hash", + "concurrently": false, + "name": "posts_url_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "sharing_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_sharing_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "reply_target_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_reply_target_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "reply_target_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_reply_target_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "quote_target_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"quote_target_id\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_quote_target_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "quote_authorization_iri", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"quote_authorization_iri\" is not null)", + "with": "", + "method": "hash", + "concurrently": false, + "name": "posts_quote_authorization_iri_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "visibility", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_visibility_actor_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "visibility", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "sharing_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"sharing_id\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_visibility_actor_id_sharing_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "visibility", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "reply_target_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"reply_target_id\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_visibility_actor_id_reply_target_id_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "content_html", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": { + "name": "gin_trgm_ops", + "default": false + } + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "posts_content_html_trgm_idx", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "updated", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_updated_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "updated", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_updated_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "published", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_published_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "actor_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "language", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "(\"language\" is not null)", + "with": "", + "method": "btree", + "concurrently": false, + "name": "posts_actor_id_language_index", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "tags", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "gin", + "concurrently": false, + "name": "posts_tags_gin_idx", + "entityType": "indexes", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "reactions_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "reactions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "reactions_post_id_account_id_index", + "entityType": "indexes", + "schema": "public", + "table": "reactions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "reactions_created_index", + "entityType": "indexes", + "schema": "public", + "table": "reactions" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_context_scrape_aliases_job_id_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_context_scrape_aliases" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "kind", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "replies_iri", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": true, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_kind_collection_unique", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "blocked_by_job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_blocked_by_job_id_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "next_dispatch_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": "\"status\" IN ('pending', 'processing')", + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_dispatch_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "next_attempt_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_claim_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "origin_host", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "next_attempt_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "created", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_origin_claim_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": true, + "columns": [ + { + "value": "status", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "updated", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_jobs_stale_processing_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "next_request_at", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_origins_next_request_at_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "processing_job_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "remote_reply_scrape_origins_processing_job_id_index", + "entityType": "indexes", + "schema": "public", + "table": "remote_reply_scrape_origins" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "timeline_posts_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "timeline_posts" + }, + { + "nameExplicit": false, + "columns": [ + { + "value": "account_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + }, + { + "value": "post_id", + "isExpression": false, + "asc": true, + "nullsFirst": false, + "opclass": null + } + ], + "isUnique": false, + "where": null, + "with": "", + "method": "btree", + "concurrently": false, + "name": "timeline_posts_account_id_post_id_index", + "entityType": "indexes", + "schema": "public", + "table": "timeline_posts" + }, + { + "nameExplicit": false, + "columns": [ + "application_id" + ], + "schemaTo": "public", + "tableTo": "applications", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "access_grants_application_id_applications_id_fk", + "entityType": "fks", + "schema": "public", + "table": "access_grants" + }, + { + "nameExplicit": false, + "columns": [ + "resource_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "access_grants_resource_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "access_grants" + }, + { + "nameExplicit": false, + "columns": [ + "application_id" + ], + "schemaTo": "public", + "tableTo": "applications", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "access_tokens_application_id_applications_id_fk", + "entityType": "fks", + "schema": "public", + "table": "access_tokens" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "access_tokens_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "access_tokens" + }, + { + "nameExplicit": false, + "columns": [ + "id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "account_owners_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "account_owners" + }, + { + "nameExplicit": false, + "columns": [ + "successor_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "accounts_successor_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "accounts" + }, + { + "nameExplicit": false, + "columns": [ + "instance_host" + ], + "schemaTo": "public", + "tableTo": "instances", + "columnsTo": [ + "host" + ], + "onUpdate": "NO ACTION", + "onDelete": "NO ACTION", + "name": "accounts_instance_host_instances_host_fk", + "entityType": "fks", + "schema": "public", + "table": "accounts" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "blocks_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "blocks" + }, + { + "nameExplicit": false, + "columns": [ + "blocked_account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "blocks_blocked_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "blocks" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "bookmarks_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "bookmarks" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "bookmarks_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "bookmarks" + }, + { + "nameExplicit": false, + "columns": [ + "job_id" + ], + "schemaTo": "public", + "tableTo": "cleanup_jobs", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "cleanup_job_items_job_id_cleanup_jobs_id_fk", + "entityType": "fks", + "schema": "public", + "table": "cleanup_job_items" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "featured_tags_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "featured_tags" + }, + { + "nameExplicit": false, + "columns": [ + "following_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "follows_following_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "follows" + }, + { + "nameExplicit": false, + "columns": [ + "follower_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "follows_follower_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "follows" + }, + { + "nameExplicit": false, + "columns": [ + "item_id" + ], + "schemaTo": "public", + "tableTo": "import_job_items", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "import_job_effects_item_id_import_job_items_id_fkey", + "entityType": "fks", + "schema": "public", + "table": "import_job_effects" + }, + { + "nameExplicit": false, + "columns": [ + "job_id" + ], + "schemaTo": "public", + "tableTo": "import_jobs", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "import_job_items_job_id_import_jobs_id_fk", + "entityType": "fks", + "schema": "public", + "table": "import_job_items" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "import_jobs_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "import_jobs" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "likes_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "likes" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "likes_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "likes" + }, + { + "nameExplicit": false, + "columns": [ + "list_id" + ], + "schemaTo": "public", + "tableTo": "lists", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "list_members_list_id_lists_id_fk", + "entityType": "fks", + "schema": "public", + "table": "list_members" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "list_members_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "list_members" + }, + { + "nameExplicit": false, + "columns": [ + "list_id" + ], + "schemaTo": "public", + "tableTo": "lists", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "list_posts_list_id_lists_id_fk", + "entityType": "fks", + "schema": "public", + "table": "list_posts" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "list_posts_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "list_posts" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "lists_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "lists" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "markers_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "markers" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "media_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "media" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "mentions_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "mentions" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "mentions_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "mentions" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "mutes_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "mutes" + }, + { + "nameExplicit": false, + "columns": [ + "muted_account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "mutes_muted_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "mutes" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notification_groups_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + "target_post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notification_groups_target_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + "most_recent_notification_id" + ], + "schemaTo": "public", + "tableTo": "notifications", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notification_groups_most_recent_notification_id_notifications_i", + "entityType": "fks", + "schema": "public", + "table": "notification_groups" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notifications_account_owner_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + "actor_account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notifications_actor_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + "target_post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notifications_target_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + "target_account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notifications_target_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + "target_poll_id" + ], + "schemaTo": "public", + "tableTo": "polls", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "notifications_target_poll_id_polls_id_fk", + "entityType": "fks", + "schema": "public", + "table": "notifications" + }, + { + "nameExplicit": false, + "columns": [ + "credential_email" + ], + "schemaTo": "public", + "tableTo": "credentials", + "columnsTo": [ + "email" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "passkeys_credential_email_credentials_email_fk", + "entityType": "fks", + "schema": "public", + "table": "passkeys" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pinned_posts_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "pinned_posts" + }, + { + "nameExplicit": false, + "columns": [ + "post_id", + "account_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id", + "actor_id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "pinned_posts_post_id_account_id_posts_id_actor_id_fk", + "entityType": "fks", + "schema": "public", + "table": "pinned_posts" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id" + ], + "schemaTo": "public", + "tableTo": "polls", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "poll_options_poll_id_polls_id_fk", + "entityType": "fks", + "schema": "public", + "table": "poll_options" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id" + ], + "schemaTo": "public", + "tableTo": "polls", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "poll_votes_poll_id_polls_id_fk", + "entityType": "fks", + "schema": "public", + "table": "poll_votes" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "poll_votes_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "poll_votes" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id", + "option_index" + ], + "schemaTo": "public", + "tableTo": "poll_options", + "columnsTo": [ + "poll_id", + "index" + ], + "onUpdate": "NO ACTION", + "onDelete": "NO ACTION", + "name": "poll_votes_poll_id_option_index_poll_options_poll_id_index_fk", + "entityType": "fks", + "schema": "public", + "table": "poll_votes" + }, + { + "nameExplicit": false, + "columns": [ + "actor_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "posts_actor_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "application_id" + ], + "schemaTo": "public", + "tableTo": "applications", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "posts_application_id_applications_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "reply_target_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "posts_reply_target_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "sharing_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "posts_sharing_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "quote_target_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "posts_quote_target_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id" + ], + "schemaTo": "public", + "tableTo": "polls", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "posts_poll_id_polls_id_fk", + "entityType": "fks", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "reactions_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "reactions" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "reactions_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "reactions" + }, + { + "nameExplicit": false, + "columns": [ + "job_id" + ], + "schemaTo": "public", + "tableTo": "remote_reply_scrape_jobs", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "remote_context_scrape_aliases_t0fqdOkRvVea_fkey", + "entityType": "fks", + "schema": "public", + "table": "remote_context_scrape_aliases" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "remote_reply_scrape_jobs_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": false, + "columns": [ + "blocked_by_job_id" + ], + "schemaTo": "public", + "tableTo": "remote_reply_scrape_jobs", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "SET NULL", + "name": "remote_reply_scrape_jobs_FpYh7OnicGJo_fkey", + "entityType": "fks", + "schema": "public", + "table": "remote_reply_scrape_jobs" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "reports_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "reports" + }, + { + "nameExplicit": false, + "columns": [ + "target_account_id" + ], + "schemaTo": "public", + "tableTo": "accounts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "reports_target_account_id_accounts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "reports" + }, + { + "nameExplicit": false, + "columns": [ + "account_id" + ], + "schemaTo": "public", + "tableTo": "account_owners", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "timeline_posts_account_id_account_owners_id_fk", + "entityType": "fks", + "schema": "public", + "table": "timeline_posts" + }, + { + "nameExplicit": false, + "columns": [ + "post_id" + ], + "schemaTo": "public", + "tableTo": "posts", + "columnsTo": [ + "id" + ], + "onUpdate": "NO ACTION", + "onDelete": "CASCADE", + "name": "timeline_posts_post_id_posts_id_fk", + "entityType": "fks", + "schema": "public", + "table": "timeline_posts" + }, + { + "columns": [ + "account_id", + "blocked_account_id" + ], + "nameExplicit": false, + "name": "blocks_account_id_blocked_account_id_pk", + "entityType": "pks", + "schema": "public", + "table": "blocks" + }, + { + "columns": [ + "post_id", + "account_owner_id" + ], + "nameExplicit": false, + "name": "bookmarks_post_id_account_owner_id_pk", + "entityType": "pks", + "schema": "public", + "table": "bookmarks" + }, + { + "columns": [ + "following_id", + "follower_id" + ], + "nameExplicit": false, + "name": "follows_following_id_follower_id_pk", + "entityType": "pks", + "schema": "public", + "table": "follows" + }, + { + "columns": [ + "post_id", + "account_id" + ], + "nameExplicit": false, + "name": "likes_post_id_account_id_pk", + "entityType": "pks", + "schema": "public", + "table": "likes" + }, + { + "columns": [ + "list_id", + "account_id" + ], + "nameExplicit": false, + "name": "list_members_list_id_account_id_pk", + "entityType": "pks", + "schema": "public", + "table": "list_members" + }, + { + "columns": [ + "list_id", + "post_id" + ], + "nameExplicit": false, + "name": "list_posts_list_id_post_id_pk", + "entityType": "pks", + "schema": "public", + "table": "list_posts" + }, + { + "columns": [ + "account_owner_id", + "type" + ], + "nameExplicit": false, + "name": "markers_account_owner_id_type_pk", + "entityType": "pks", + "schema": "public", + "table": "markers" + }, + { + "columns": [ + "post_id", + "account_id" + ], + "nameExplicit": false, + "name": "mentions_post_id_account_id_pk", + "entityType": "pks", + "schema": "public", + "table": "mentions" + }, + { + "columns": [ + "poll_id", + "index" + ], + "nameExplicit": false, + "name": "poll_options_poll_id_index_pk", + "entityType": "pks", + "schema": "public", + "table": "poll_options" + }, + { + "columns": [ + "poll_id", + "option_index", + "account_id" + ], + "nameExplicit": false, + "name": "poll_votes_poll_id_option_index_account_id_pk", + "entityType": "pks", + "schema": "public", + "table": "poll_votes" + }, + { + "columns": [ + "post_id", + "account_id", + "emoji" + ], + "nameExplicit": false, + "name": "reactions_post_id_account_id_emoji_pk", + "entityType": "pks", + "schema": "public", + "table": "reactions" + }, + { + "columns": [ + "account_id", + "post_id" + ], + "nameExplicit": false, + "name": "timeline_posts_account_id_post_id_pk", + "entityType": "pks", + "schema": "public", + "table": "timeline_posts" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "access_grants_pkey", + "schema": "public", + "table": "access_grants", + "entityType": "pks" + }, + { + "columns": [ + "code" + ], + "nameExplicit": false, + "name": "access_tokens_pkey", + "schema": "public", + "table": "access_tokens", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "account_owners_pkey", + "schema": "public", + "table": "account_owners", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "accounts_pkey", + "schema": "public", + "table": "accounts", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "applications_pkey", + "schema": "public", + "table": "applications", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "cleanup_job_items_pkey", + "schema": "public", + "table": "cleanup_job_items", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "cleanup_jobs_pkey", + "schema": "public", + "table": "cleanup_jobs", + "entityType": "pks" + }, + { + "columns": [ + "email" + ], + "nameExplicit": false, + "name": "credentials_pkey", + "schema": "public", + "table": "credentials", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "custom_emoji_import_jobs_pkey", + "schema": "public", + "table": "custom_emoji_import_jobs", + "entityType": "pks" + }, + { + "columns": [ + "shortcode" + ], + "nameExplicit": false, + "name": "custom_emojis_pkey", + "schema": "public", + "table": "custom_emojis", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "featured_tags_pkey", + "schema": "public", + "table": "featured_tags", + "entityType": "pks" + }, + { + "columns": [ + "item_id" + ], + "nameExplicit": false, + "name": "import_job_effects_pkey", + "schema": "public", + "table": "import_job_effects", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "import_job_items_pkey", + "schema": "public", + "table": "import_job_items", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "import_jobs_pkey", + "schema": "public", + "table": "import_jobs", + "entityType": "pks" + }, + { + "columns": [ + "host" + ], + "nameExplicit": false, + "name": "instances_pkey", + "schema": "public", + "table": "instances", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "lists_pkey", + "schema": "public", + "table": "lists", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "media_pkey", + "schema": "public", + "table": "media", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "mutes_pkey", + "schema": "public", + "table": "mutes", + "entityType": "pks" + }, + { + "columns": [ + "group_key" + ], + "nameExplicit": false, + "name": "notification_groups_pkey", + "schema": "public", + "table": "notification_groups", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "notifications_pkey", + "schema": "public", + "table": "notifications", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "passkey_login_challenges_pkey", + "schema": "public", + "table": "passkey_login_challenges", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "passkeys_pkey", + "schema": "public", + "table": "passkeys", + "entityType": "pks" + }, + { + "columns": [ + "index" + ], + "nameExplicit": false, + "name": "pinned_posts_pkey", + "schema": "public", + "table": "pinned_posts", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "polls_pkey", + "schema": "public", + "table": "polls", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "posts_pkey", + "schema": "public", + "table": "posts", + "entityType": "pks" + }, + { + "columns": [ + "iri" + ], + "nameExplicit": false, + "name": "remote_context_scrape_aliases_pkey", + "schema": "public", + "table": "remote_context_scrape_aliases", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "remote_reply_scrape_jobs_pkey", + "schema": "public", + "table": "remote_reply_scrape_jobs", + "entityType": "pks" + }, + { + "columns": [ + "origin_host" + ], + "nameExplicit": false, + "name": "remote_reply_scrape_origins_pkey", + "schema": "public", + "table": "remote_reply_scrape_origins", + "entityType": "pks" + }, + { + "columns": [ + "id" + ], + "nameExplicit": false, + "name": "reports_pkey", + "schema": "public", + "table": "reports", + "entityType": "pks" + }, + { + "nameExplicit": false, + "columns": [ + "account_owner_id", + "name" + ], + "nullsNotDistinct": false, + "name": "featured_tags_account_owner_id_name_unique", + "entityType": "uniques", + "schema": "public", + "table": "featured_tags" + }, + { + "nameExplicit": true, + "columns": [ + "account_id", + "muted_account_id" + ], + "nullsNotDistinct": false, + "name": "mutes_account_id_muted_account_id_unique", + "entityType": "uniques", + "schema": "public", + "table": "mutes" + }, + { + "nameExplicit": false, + "columns": [ + "post_id", + "account_id" + ], + "nullsNotDistinct": false, + "name": "pinned_posts_post_id_account_id_unique", + "entityType": "uniques", + "schema": "public", + "table": "pinned_posts" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id", + "title" + ], + "nullsNotDistinct": false, + "name": "poll_options_poll_id_title_unique", + "entityType": "uniques", + "schema": "public", + "table": "poll_options" + }, + { + "nameExplicit": true, + "columns": [ + "id", + "actor_id" + ], + "nullsNotDistinct": false, + "name": "posts_id_actor_id_unique", + "entityType": "uniques", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "poll_id" + ], + "nullsNotDistinct": false, + "name": "posts_poll_id_unique", + "entityType": "uniques", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "actor_id", + "sharing_id" + ], + "nullsNotDistinct": false, + "name": "posts_actor_id_sharing_id_unique", + "entityType": "uniques", + "schema": "public", + "table": "posts" + }, + { + "nameExplicit": false, + "columns": [ + "code" + ], + "nullsNotDistinct": false, + "name": "access_grants_code_unique", + "schema": "public", + "table": "access_grants", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "id" + ], + "nullsNotDistinct": false, + "name": "access_tokens_id_key", + "schema": "public", + "table": "access_tokens", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "handle" + ], + "nullsNotDistinct": false, + "name": "account_owners_handle_unique", + "schema": "public", + "table": "account_owners", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "iri" + ], + "nullsNotDistinct": false, + "name": "accounts_iri_unique", + "schema": "public", + "table": "accounts", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "handle" + ], + "nullsNotDistinct": false, + "name": "accounts_handle_unique", + "schema": "public", + "table": "accounts", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "client_id" + ], + "nullsNotDistinct": false, + "name": "applications_client_id_unique", + "schema": "public", + "table": "applications", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "iri" + ], + "nullsNotDistinct": false, + "name": "follows_iri_unique", + "schema": "public", + "table": "follows", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "iri" + ], + "nullsNotDistinct": false, + "name": "posts_iri_unique", + "schema": "public", + "table": "posts", + "entityType": "uniques" + }, + { + "nameExplicit": false, + "columns": [ + "iri" + ], + "nullsNotDistinct": false, + "name": "reports_iri_unique", + "schema": "public", + "table": "reports", + "entityType": "uniques" + }, + { + "value": "jsonb_typeof(\"rsa_private_key_jwk\") = 'object'", + "name": "ck_account_owners_rsa_private_key_jwk_object", + "entityType": "checks", + "schema": "public", + "table": "account_owners" + }, + { + "value": "jsonb_typeof(\"rsa_public_key_jwk\") = 'object'", + "name": "ck_account_owners_rsa_public_key_jwk_object", + "entityType": "checks", + "schema": "public", + "table": "account_owners" + }, + { + "value": "jsonb_typeof(\"ed25519_private_key_jwk\") = 'object'", + "name": "ck_account_owners_ed25519_private_key_jwk_object", + "entityType": "checks", + "schema": "public", + "table": "account_owners" + }, + { + "value": "jsonb_typeof(\"ed25519_public_key_jwk\") = 'object'", + "name": "ck_account_owners_ed25519_public_key_jwk_object", + "entityType": "checks", + "schema": "public", + "table": "account_owners" + }, + { + "value": "json_typeof(\"fields\") = 'object'", + "name": "ck_account_owners_fields_object", + "entityType": "checks", + "schema": "public", + "table": "account_owners" + }, + { + "value": "json_typeof(\"field_htmls\") = 'object'", + "name": "ck_accounts_field_htmls_object", + "entityType": "checks", + "schema": "public", + "table": "accounts" + }, + { + "value": "jsonb_typeof(\"emojis\") = 'object'", + "name": "ck_accounts_emojis_object", + "entityType": "checks", + "schema": "public", + "table": "accounts" + }, + { + "value": "\"following_id\" != \"follower_id\"", + "name": "ck_follows_self", + "entityType": "checks", + "schema": "public", + "table": "follows" + } + ], + "renames": [] +} \ No newline at end of file diff --git a/package.json b/package.json index 7ca6171a..b2d3e8b6 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "drizzle-kit": "1.0.0-rc.5-5935859", "drizzle-orm": "1.0.0-rc.5-169397b", "es-toolkit": "^1.52.0", + "fflate": "^0.8.3", "file-type": "^22.2.0", "flydrive": "^2.1.0", "hono": "^4.13.13", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index edd23804..42e0cb4b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -293,6 +293,9 @@ importers: es-toolkit: specifier: ^1.52.0 version: 1.52.0 + fflate: + specifier: ^0.8.3 + version: 0.8.3 file-type: specifier: ^22.2.0 version: 22.2.0(supports-color@10.2.2) diff --git a/src/custom-emoji-import-config.ts b/src/custom-emoji-import-config.ts new file mode 100644 index 00000000..480ca5a0 --- /dev/null +++ b/src/custom-emoji-import-config.ts @@ -0,0 +1,36 @@ +const MEBIBYTE = 1024 * 1024; + +function readPositiveInteger(name: string, defaultValue: number): number { + const raw = process.env[name]; + + if (raw == null) { + return defaultValue; + } + + if (!/^[1-9]\d*$/.test(raw)) { + throw new Error(`${name} must be a positive integer`); + } + + const value = Number(raw); + + if (!Number.isSafeInteger(value)) { + throw new Error(`${name} must be a safe integer`); + } + + return value; +} + +export const EMOJI_IMPORT_MAX_ARCHIVE_BYTES = readPositiveInteger( + "EMOJI_IMPORT_MAX_ARCHIVE_BYTES", + 50 * MEBIBYTE, +); + +export const EMOJI_IMPORT_MAX_ENTRY_COUNT = readPositiveInteger( + "EMOJI_IMPORT_MAX_ENTRY_COUNT", + 1_000, +); + +export const EMOJI_IMPORT_MAX_EXTRACTED_BYTES = readPositiveInteger( + "EMOJI_IMPORT_MAX_EXTRACTED_BYTES", + 250 * MEBIBYTE, +); diff --git a/src/custom-emoji-import-tasks.test.ts b/src/custom-emoji-import-tasks.test.ts new file mode 100644 index 00000000..8c0f62c8 --- /dev/null +++ b/src/custom-emoji-import-tasks.test.ts @@ -0,0 +1,134 @@ +import { + createFederation, + MemoryKvStore, + type Message, + type MessageQueue, + type MessageQueueEnqueueOptions, +} from "@fedify/fedify"; +import { strToU8, zipSync } from "fflate"; +import { afterEach, beforeEach, describe, expect, it } from "vitest"; + +import { cleanDatabase, getFixtureFile } from "../tests/helpers"; +import { registerCustomEmojiImports } from "./custom-emoji-import-tasks"; +import db from "./db"; +import { customEmojiImportJobs } from "./schema"; +import { drive } from "./storage"; +import { uuidv7 } from "./uuid"; + +class TestQueue implements MessageQueue { + messages: Message[] = []; + + async enqueue( + message: Message, + _options?: MessageQueueEnqueueOptions, + ): Promise { + this.messages.push(message); + } + + async listen(): Promise {} +} + +function fixture() { + const queue = new TestQueue(); + + const federation = createFederation({ + kv: new MemoryKvStore(), + queue: { task: queue }, + taskQueueResolution: "strict", + manuallyStartQueue: true, + }); + + const tasks = registerCustomEmojiImports(federation); + + const ctx = federation.createContext( + new URL("https://hollo.test"), + undefined, + ); + + return { + tasks, + ctx, + run: () => federation.processQueuedTask(undefined, queue.messages.shift()!), + }; +} + +describe("Custom emoji import tasks", () => { + beforeEach(cleanDatabase); + + afterEach(() => { + drive.restore(); + drive.restore("emojiImports"); + }); + + it("imports an emoji from a Misskey packed emoji archive", async () => { + expect.assertions(4); + + const imageDisk = drive.fake(); + const archiveDisk = drive.fake("emojiImports"); + + const image = new Uint8Array( + await (await getFixtureFile("emoji.png", "image/png")).arrayBuffer(), + ); + + const archive = zipSync({ + "emoji-pack/meta.json": strToU8( + JSON.stringify({ + metaVersion: 1, + host: "", + exportedAt: "2026-10-29T00:00:00.000Z", + emojis: [ + { + downloaded: true, + fileName: "cat.png", + emoji: { + name: "cat", + category: "animals", + }, + }, + ], + }), + ), + "emoji-pack/cat.png": image, + }); + + const jobId = uuidv7(); + const archiveKey = `emoji-imports/${jobId}/archive.zip`; + + await archiveDisk.put(archiveKey, archive); + + await db.insert(customEmojiImportJobs).values({ + id: jobId, + archiveKey, + status: "pending", + }); + + const f = fixture(); + await f.tasks.enqueue(f.ctx, jobId); + await f.run(); + + const job = await db.query.customEmojiImportJobs.findFirst({ + where: { id: { eq: jobId } }, + }); + + expect(job).toMatchObject({ + status: "completed", + importedCount: 1, + skippedCount: 0, + failedCount: 0, + }); + + const emoji = await db.query.customEmojis.findFirst({ + where: { shortcode: { eq: "cat" } }, + }); + + expect(emoji).toMatchObject({ + shortcode: "cat", + category: "animals", + url: "http://hollo.test/assets/emojis/cat.png", + }); + + expect(() => imageDisk.assertExists("emojis/cat.png")).not.toThrow(); + + expect(() => archiveDisk.assertMissing(archiveKey)).not.toThrow(); + }); +}); diff --git a/src/custom-emoji-import-tasks.ts b/src/custom-emoji-import-tasks.ts new file mode 100644 index 00000000..81b9d0d7 --- /dev/null +++ b/src/custom-emoji-import-tasks.ts @@ -0,0 +1,422 @@ +import { type Context, type Federation } from "@fedify/fedify"; +import { getLogger } from "@logtape/logtape"; +import { and, eq, lt, sql } from "drizzle-orm"; +import { Unzip, UnzipInflate } from "fflate"; +import { fileTypeFromBuffer } from "file-type"; +import { z } from "zod"; + +import { + EMOJI_IMPORT_MAX_ENTRY_COUNT, + EMOJI_IMPORT_MAX_EXTRACTED_BYTES, +} from "./custom-emoji-import-config"; +import db from "./db"; +import { customEmojiImportJobs, customEmojis } from "./schema"; +import { uuid, type Uuid } from "./uuid"; + +const logger = getLogger(["hollo", "custom-emoji-imports"]); + +const misskeyPackedEmojiMetaSchema = z.object({ + emojis: z.array( + z.object({ + downloaded: z.boolean().optional().default(false), + fileName: z.string().min(1), + emoji: z.object({ + name: z.string().min(1), + category: z.string().nullable().optional(), + }), + }), + ), +}); + +export function registerCustomEmojiImports(federation: Federation) { + const task = federation.defineTask("hollo.custom-emoji-import.v1", { + schema: z.object({ + jobId: uuid, + }), + retryPolicy: () => null, + + handler: async (_ctx, { jobId }) => { + const [job] = await db + .update(customEmojiImportJobs) + .set({ + status: "processing", + processingStarted: new Date(), + }) + .where( + and( + eq(customEmojiImportJobs.id, jobId), + eq(customEmojiImportJobs.status, "pending"), + ), + ) + .returning(); + + if (job == null) { + return; + } + const { drive } = await import("./storage"); + const archiveDisk = drive.use("emojiImports"); + const archive = await archiveDisk.getBytes(job.archiveKey); + + const files = await decompressZip(archive, { + maxEntryCount: EMOJI_IMPORT_MAX_ENTRY_COUNT, + maxExtractedBytes: EMOJI_IMPORT_MAX_EXTRACTED_BYTES, + }); + const metaPaths = Object.keys(files).filter( + (path) => + !path.startsWith("__MACOSX/") && + (path === "meta.json" || path.endsWith("/meta.json")), + ); + + if (metaPaths.length !== 1) { + throw new Error("Expected exactly one meta.json file"); + } + const metaPath = metaPaths[0]; + const archivePrefix = metaPath.slice(0, -"meta.json".length); + const metaContents = files[metaPath]; + if (metaContents == null) { + throw new Error("meta.json not found"); + } + + const rawMeta: unknown = JSON.parse( + new TextDecoder("utf-8", { fatal: true }).decode(metaContents), + ); + + const parsedMeta = misskeyPackedEmojiMetaSchema.safeParse(rawMeta); + + if (!parsedMeta.success) { + logger.warn("Invalid Misskey packed emoji manifest: {error}", { + error: parsedMeta.error.message, + }); + + throw new Error("Invalid Misskey packed emoji manifest"); + } + + const meta = parsedMeta.data; + + const imageDisk = drive.use(); + + let importedCount = 0; + let skippedCount = 0; + let failedCount = 0; + + const allowedTypes = new Set([ + "image/png", + "image/jpeg", + "image/gif", + "image/webp", + ]); + + for (const entry of meta.emojis) { + if (!entry.downloaded) { + skippedCount += 1; + continue; + } + + if (!isSafeArchivePath(entry.fileName)) { + failedCount += 1; + continue; + } + + const content = files[archivePrefix + entry.fileName]; + if (content == null) { + logger.warn("Image is missing from emoji archive: {fileName}", { + fileName: entry.fileName, + }); + failedCount += 1; + continue; + } + + const shortcode = entry.emoji.name; + const category = entry.emoji.category; + + if (!/^[-a-z0-9_]+$/.test(shortcode)) { + logger.warn("Invalid emoji shortcode: {shortcode}", { shortcode }); + skippedCount += 1; + continue; + } + + const fileType = await fileTypeFromBuffer(content); + if (fileType == null || !allowedTypes.has(fileType.mime)) { + logger.warn("Unsupported emoji image: {fileName}", { + fileName: entry.fileName, + }); + skippedCount += 1; + continue; + } + + const imageKey = `emojis/${shortcode}.${fileType.ext}`; + let storedImage = false; + + try { + const result = await db.transaction(async (tx) => { + await tx.execute( + sql`select pg_advisory_xact_lock(hashtext(${shortcode}))`, + ); + + const [existing] = await tx + .select({ shortcode: customEmojis.shortcode }) + .from(customEmojis) + .where(eq(customEmojis.shortcode, shortcode)) + .limit(1); + + if (existing != null) { + return "skipped"; + } + + await imageDisk.put(imageKey, content, { + contentType: fileType.mime, + contentLength: content.byteLength, + visibility: "public", + }); + storedImage = true; + + const url = await imageDisk.getUrl(imageKey); + + await tx.insert(customEmojis).values({ + shortcode, + category: category ?? null, + url, + }); + + return "imported"; + }); + + if (result === "skipped") { + logger.info("Skipped duplicate emoji shortcode: {shortcode}", { + shortcode, + }); + skippedCount += 1; + } else { + importedCount += 1; + } + } catch (error) { + logger.error("Failed to import emoji {shortcode}: {error}", { + shortcode, + error, + }); + + if (storedImage) { + await imageDisk.delete(imageKey); + } + + failedCount += 1; + } + } + await db + .update(customEmojiImportJobs) + .set({ + status: "completed", + importedCount: importedCount, + skippedCount: skippedCount, + failedCount: failedCount, + completed: new Date(), + }) + .where( + and( + eq(customEmojiImportJobs.id, jobId), + eq(customEmojiImportJobs.status, "processing"), + ), + ) + .returning(); + try { + await archiveDisk.delete(job.archiveKey); + } catch (error) { + logger.error( + "Failed to delete custom emoji import archive {archiveKey}: {error}", + { archiveKey: job.archiveKey, error }, + ); + } + }, + + onError: async (_ctx, error, { jobId }) => { + logger.error("Custom emoji import {jobId} failed: {error}", { + jobId, + error, + }); + const [failedJob] = await db + .update(customEmojiImportJobs) + .set({ + status: "failed", + error: + "The custom emoji import failed. Check the server logs for details.", + completed: new Date(), + }) + .where( + and( + eq(customEmojiImportJobs.id, jobId), + eq(customEmojiImportJobs.status, "processing"), + ), + ) + .returning({ + archiveKey: customEmojiImportJobs.archiveKey, + }); + + if (failedJob == null) return; + + const { drive } = await import("./storage"); + await drive.use("emojiImports").delete(failedJob.archiveKey); + }, + }); + + async function enqueue(ctx: Context, jobId: Uuid) { + await ctx.enqueueTask(task, { jobId }); + } + + const STALE_PROCESSING_MS = 60 * 60 * 1000; + async function recover(ctx: Context) { + const staleBefore = new Date(Date.now() - STALE_PROCESSING_MS); + + await db + .update(customEmojiImportJobs) + .set({ + status: "pending", + processingStarted: null, + }) + .where( + and( + eq(customEmojiImportJobs.status, "processing"), + lt(customEmojiImportJobs.processingStarted, staleBefore), + ), + ); + + const jobs = await db.query.customEmojiImportJobs.findMany({ + columns: { id: true }, + where: { status: { eq: "pending" } }, + }); + + for (const job of jobs) { + await enqueue(ctx, job.id); + } + } + + function decompressZip( + archive: Uint8Array, + { + maxEntryCount, + maxExtractedBytes, + }: { + maxEntryCount: number; + maxExtractedBytes: number; + }, + ): Promise> { + return new Promise((resolve, reject) => { + const files: Record = {}; + const unzipper = new Unzip(); + let entryCount = 0; + let extractedBytes = 0; + let failed = false; + + const fail = (error: Error) => { + if (failed) return; + failed = true; + reject(error); + }; + + unzipper.register(UnzipInflate); + + unzipper.onfile = (file) => { + entryCount += 1; + + if (entryCount > maxEntryCount) { + file.terminate(); + fail(new Error("ZIP contains too many entries")); + return; + } + + const entryPath = file.name.endsWith("/") + ? file.name.slice(0, -1) + : file.name; + + if (!isSafeArchivePath(entryPath)) { + file.terminate(); + fail(new Error(`Unsafe ZIP entry path: ${file.name}`)); + return; + } + if (file.name.endsWith("/")) { + return; + } + + const chunks: Uint8Array[] = []; + let fileBytes = 0; + + file.ondata = (error, chunk, final) => { + if (failed) return; + + if (error != null) { + fail(error); + return; + } + + fileBytes += chunk.byteLength; + extractedBytes += chunk.byteLength; + + if (extractedBytes > maxExtractedBytes) { + file.terminate(); + fail(new Error("ZIP expands beyond the allowed size")); + return; + } + + chunks.push(chunk); + + if (final) { + const content = new Uint8Array(fileBytes); + let offset = 0; + + for (const part of chunks) { + content.set(part, offset); + offset += part.byteLength; + } + + files[file.name] = content; + } + }; + + file.start(); + }; + + try { + const SLICE_BYTES = 64 * 1024; + if (archive.byteLength === 0) { + unzipper.push(archive, true); + } + for ( + let offset = 0; + offset < archive.byteLength && !failed; + offset += SLICE_BYTES + ) { + const end = Math.min(offset + SLICE_BYTES, archive.byteLength); + unzipper.push( + archive.subarray(offset, end), + end === archive.byteLength, + ); + } + + if (!failed) { + resolve(files); + } + } catch (error) { + fail(error instanceof Error ? error : new Error("Invalid ZIP archive")); + } + }); + } + + function isSafeArchivePath(path: string): boolean { + if (path.length === 0 || path.includes("\0")) { + return false; + } + + if (path.includes("\\") || /^[A-Za-z]:/.test(path)) { + return false; + } + + if (path.startsWith("/")) { + return false; + } + + return path + .split("/") + .every((part) => part.length > 0 && part !== "." && part !== ".."); + } + + return { task, enqueue, recover }; +} diff --git a/src/federation/federation.ts b/src/federation/federation.ts index 1ae4310b..24af1bcb 100644 --- a/src/federation/federation.ts +++ b/src/federation/federation.ts @@ -19,6 +19,7 @@ import metadata from "../../package.json" with { type: "json" }; import { registerBackgroundJobs } from "../background/jobs"; import { PollMessageQueue } from "../background/poll-queue"; import { TaskMessageQueue } from "../background/queue"; +import { registerCustomEmojiImports } from "../custom-emoji-import-tasks"; import { postgres } from "../db"; import { FEDIFY_ORIGIN } from "../env"; import { registerPollNotifications } from "../poll-notification-tasks"; @@ -96,6 +97,9 @@ export const pollNotifications = registerPollNotifications( ); backgroundJobs.addRecovery(pollNotifications.recover); +export const customEmojiImports = registerCustomEmojiImports(federation); +backgroundJobs.addRecovery(customEmojiImports.recover); + if (fedifyDebug && exporter != null) { federation = createFederationDebugger(federation, { exporter, kv }); } diff --git a/src/pages/emojis.tsx b/src/pages/emojis.tsx index bc4e06e1..86cf2f21 100644 --- a/src/pages/emojis.tsx +++ b/src/pages/emojis.tsx @@ -5,10 +5,14 @@ import { csrf } from "hono/csrf"; import mime from "mime"; import { DashboardLayout } from "../components/DashboardLayout"; +import { EMOJI_IMPORT_MAX_ARCHIVE_BYTES } from "../custom-emoji-import-config"; import db from "../db"; +import federation, { customEmojiImports } from "../federation/federation"; import { loginRequired } from "../login"; import { proxyUrl } from "../media-proxy"; -import { customEmojis } from "../schema"; +import { customEmojiImportJobs, customEmojis } from "../schema"; +import { EMOJI_IMPORT_DISK } from "../storage-config"; +import { isUuid, uuidv7 } from "../uuid"; const logger = getLogger(["hollo", "pages", "emojis"]); @@ -44,6 +48,13 @@ emojis.get("/", async (c) => {