{
  "_meta": {
    "description": "This file contains a serialized version of schema entities for drift.",
    "version": "1.3.0"
  },
  "options": {
    "store_date_time_values_as_text": false
  },
  "entities": [
    {
      "id": 0,
      "references": [],
      "type": "table",
      "data": {
        "name": "contacts",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "user_id",
            "getter_name": "userId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "username",
            "getter_name": "username",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "display_name",
            "getter_name": "displayName",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "nick_name",
            "getter_name": "nickName",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "avatar_svg_compressed",
            "getter_name": "avatarSvgCompressed",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "sender_profile_counter",
            "getter_name": "senderProfileCounter",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "accepted",
            "getter_name": "accepted",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"accepted\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"accepted\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "deleted_by_user",
            "getter_name": "deletedByUser",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"deleted_by_user\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"deleted_by_user\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "requested",
            "getter_name": "requested",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"requested\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"requested\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "blocked",
            "getter_name": "blocked",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"blocked\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"blocked\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "verified",
            "getter_name": "verified",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"verified\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"verified\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "account_deleted",
            "getter_name": "accountDeleted",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"account_deleted\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"account_deleted\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "user_discovery_version",
            "getter_name": "userDiscoveryVersion",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "user_discovery_excluded",
            "getter_name": "userDiscoveryExcluded",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"user_discovery_excluded\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"user_discovery_excluded\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "user_discovery_manual_approved",
            "getter_name": "userDiscoveryManualApproved",
            "moor_type": "bool",
            "nullable": true,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"user_discovery_manual_approved\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"user_discovery_manual_approved\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "recovery_is_trusted_friend",
            "getter_name": "recoveryIsTrustedFriend",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"recovery_is_trusted_friend\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"recovery_is_trusted_friend\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "recovery_last_heartbeat",
            "getter_name": "recoveryLastHeartbeat",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "recovery_secret_share",
            "getter_name": "recoverySecretShare",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "recovery_contacts_secret_share",
            "getter_name": "recoveryContactsSecretShare",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "recovery_contacts_last_heartbeat",
            "getter_name": "recoveryContactsLastHeartbeat",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "recovery_contacts_threshold",
            "getter_name": "recoveryContactsThreshold",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "ask_for_friend_promotions",
            "getter_name": "askForFriendPromotions",
            "moor_type": "bool",
            "nullable": true,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"ask_for_friend_promotions\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"ask_for_friend_promotions\" IN (0, 1))"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "media_send_counter",
            "getter_name": "mediaSendCounter",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "media_received_counter",
            "getter_name": "mediaReceivedCounter",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "user_id"
        ]
      }
    },
    {
      "id": 1,
      "references": [],
      "type": "table",
      "data": {
        "name": "groups",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "group_id",
            "getter_name": "groupId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "is_group_admin",
            "getter_name": "isGroupAdmin",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"is_group_admin\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"is_group_admin\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "is_direct_chat",
            "getter_name": "isDirectChat",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"is_direct_chat\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"is_direct_chat\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "pinned",
            "getter_name": "pinned",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"pinned\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"pinned\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "archived",
            "getter_name": "archived",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"archived\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"archived\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "joined_group",
            "getter_name": "joinedGroup",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"joined_group\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"joined_group\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "left_group",
            "getter_name": "leftGroup",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"left_group\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"left_group\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "deleted_content",
            "getter_name": "deletedContent",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"deleted_content\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"deleted_content\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "state_version_id",
            "getter_name": "stateVersionId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "state_encryption_key",
            "getter_name": "stateEncryptionKey",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "my_group_private_key",
            "getter_name": "myGroupPrivateKey",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "group_name",
            "getter_name": "groupName",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "draft_message",
            "getter_name": "draftMessage",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "total_media_counter",
            "getter_name": "totalMediaCounter",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "also_best_friend",
            "getter_name": "alsoBestFriend",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"also_best_friend\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"also_best_friend\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "delete_messages_after_milliseconds",
            "getter_name": "deleteMessagesAfterMilliseconds",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('86400000')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "last_message_send",
            "getter_name": "lastMessageSend",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "last_message_received",
            "getter_name": "lastMessageReceived",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "last_flame_counter_change",
            "getter_name": "lastFlameCounterChange",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "last_flame_sync",
            "getter_name": "lastFlameSync",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "flame_counter",
            "getter_name": "flameCounter",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "max_flame_counter",
            "getter_name": "maxFlameCounter",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "max_flame_counter_from",
            "getter_name": "maxFlameCounterFrom",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "last_message_exchange",
            "getter_name": "lastMessageExchange",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "group_id"
        ]
      }
    },
    {
      "id": 2,
      "references": [],
      "type": "table",
      "data": {
        "name": "media_files",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "media_id",
            "getter_name": "mediaId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "type",
            "getter_name": "type",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [],
            "type_converter": {
              "dart_expr": "const EnumNameConverter<MediaType>(MediaType.values)",
              "dart_type_name": "MediaType"
            }
          },
          {
            "name": "upload_state",
            "getter_name": "uploadState",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [],
            "type_converter": {
              "dart_expr": "const EnumNameConverter<UploadState>(UploadState.values)",
              "dart_type_name": "UploadState"
            }
          },
          {
            "name": "cloud_state",
            "getter_name": "cloudState",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('\\'none\\'')",
            "default_client_dart": null,
            "dsl_features": [],
            "type_converter": {
              "dart_expr": "const EnumNameConverter<CloudState>(CloudState.values)",
              "dart_type_name": "CloudState"
            }
          },
          {
            "name": "blurhash",
            "getter_name": "blurhash",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "download_state",
            "getter_name": "downloadState",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [],
            "type_converter": {
              "dart_expr": "const EnumNameConverter<DownloadState>(DownloadState.values)",
              "dart_type_name": "DownloadState"
            }
          },
          {
            "name": "requires_authentication",
            "getter_name": "requiresAuthentication",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"requires_authentication\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"requires_authentication\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "stored",
            "getter_name": "stored",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"stored\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"stored\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "is_draft_media",
            "getter_name": "isDraftMedia",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"is_draft_media\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"is_draft_media\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "is_favorite",
            "getter_name": "isFavorite",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"is_favorite\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"is_favorite\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "has_crop_analyzed",
            "getter_name": "hasCropAnalyzed",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"has_crop_analyzed\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"has_crop_analyzed\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "pre_progressing_process",
            "getter_name": "preProgressingProcess",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "reupload_requested_by",
            "getter_name": "reuploadRequestedBy",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [],
            "type_converter": {
              "dart_expr": "IntListTypeConverter()",
              "dart_type_name": "List<int>"
            }
          },
          {
            "name": "display_limit_in_milliseconds",
            "getter_name": "displayLimitInMilliseconds",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "remove_audio",
            "getter_name": "removeAudio",
            "moor_type": "bool",
            "nullable": true,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"remove_audio\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"remove_audio\" IN (0, 1))"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "download_token",
            "getter_name": "downloadToken",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "encryption_key",
            "getter_name": "encryptionKey",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "encryption_mac",
            "getter_name": "encryptionMac",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "encryption_nonce",
            "getter_name": "encryptionNonce",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "stored_file_hash",
            "getter_name": "storedFileHash",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "has_thumbnail",
            "getter_name": "hasThumbnail",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"has_thumbnail\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"has_thumbnail\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "size_in_bytes",
            "getter_name": "sizeInBytes",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at_month",
            "getter_name": "createdAtMonth",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "media_id"
        ]
      }
    },
    {
      "id": 3,
      "references": [
        1,
        0,
        2
      ],
      "type": "table",
      "data": {
        "name": "messages",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "group_id",
            "getter_name": "groupId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES \"groups\" (group_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES \"groups\" (group_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "groups",
                    "column": "group_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "message_id",
            "getter_name": "messageId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "sender_id",
            "getter_name": "senderId",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id)",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id)"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": null
                }
              }
            ]
          },
          {
            "name": "type",
            "getter_name": "type",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "content",
            "getter_name": "content",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "media_id",
            "getter_name": "mediaId",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES media_files (media_id) ON DELETE SET NULL",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES media_files (media_id) ON DELETE SET NULL"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "media_files",
                    "column": "media_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "setNull"
                }
              }
            ]
          },
          {
            "name": "additional_message_data",
            "getter_name": "additionalMessageData",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "media_stored",
            "getter_name": "mediaStored",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"media_stored\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"media_stored\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "media_reopened",
            "getter_name": "mediaReopened",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"media_reopened\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"media_reopened\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "download_token",
            "getter_name": "downloadToken",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "quotes_message_id",
            "getter_name": "quotesMessageId",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "is_deleted_from_sender",
            "getter_name": "isDeletedFromSender",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"is_deleted_from_sender\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"is_deleted_from_sender\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "opened_at",
            "getter_name": "openedAt",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "opened_by_all",
            "getter_name": "openedByAll",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "modified_at",
            "getter_name": "modifiedAt",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "ack_by_user",
            "getter_name": "ackByUser",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "ack_by_server",
            "getter_name": "ackByServer",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "message_id"
        ]
      }
    },
    {
      "id": 4,
      "references": [
        3,
        0
      ],
      "type": "table",
      "data": {
        "name": "message_histories",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "id",
            "getter_name": "id",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "PRIMARY KEY AUTOINCREMENT",
            "dialectAwareDefaultConstraints": {
              "sqlite": "PRIMARY KEY AUTOINCREMENT"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              "auto-increment"
            ]
          },
          {
            "name": "message_id",
            "getter_name": "messageId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES messages (message_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES messages (message_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "messages",
                    "column": "message_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "contact_id",
            "getter_name": "contactId",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "content",
            "getter_name": "content",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": []
      }
    },
    {
      "id": 5,
      "references": [
        3,
        0
      ],
      "type": "table",
      "data": {
        "name": "reactions",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "message_id",
            "getter_name": "messageId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES messages (message_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES messages (message_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "messages",
                    "column": "message_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "emoji",
            "getter_name": "emoji",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "sender_id",
            "getter_name": "senderId",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "message_id",
          "sender_id",
          "emoji"
        ]
      }
    },
    {
      "id": 6,
      "references": [
        1,
        0
      ],
      "type": "table",
      "data": {
        "name": "group_members",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "group_id",
            "getter_name": "groupId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES \"groups\" (group_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES \"groups\" (group_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "groups",
                    "column": "group_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "contact_id",
            "getter_name": "contactId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id)",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id)"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": null
                }
              }
            ]
          },
          {
            "name": "member_state",
            "getter_name": "memberState",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [],
            "type_converter": {
              "dart_expr": "const EnumNameConverter<MemberState>(MemberState.values)",
              "dart_type_name": "MemberState"
            }
          },
          {
            "name": "group_public_key",
            "getter_name": "groupPublicKey",
            "moor_type": "blob",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "last_chat_opened",
            "getter_name": "lastChatOpened",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "last_type_indicator",
            "getter_name": "lastTypeIndicator",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "last_message",
            "getter_name": "lastMessage",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "group_id",
          "contact_id"
        ]
      }
    },
    {
      "id": 7,
      "references": [
        0,
        3
      ],
      "type": "table",
      "data": {
        "name": "receipts",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "receipt_id",
            "getter_name": "receiptId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "contact_id",
            "getter_name": "contactId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "message_id",
            "getter_name": "messageId",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES messages (message_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES messages (message_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "messages",
                    "column": "message_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "message",
            "getter_name": "message",
            "moor_type": "blob",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "contact_will_sends_receipt",
            "getter_name": "contactWillSendsReceipt",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"contact_will_sends_receipt\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"contact_will_sends_receipt\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('1')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "will_be_retried_by_media_upload",
            "getter_name": "willBeRetriedByMediaUpload",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"will_be_retried_by_media_upload\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"will_be_retried_by_media_upload\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "mark_for_retry",
            "getter_name": "markForRetry",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "mark_for_retry_after_accepted",
            "getter_name": "markForRetryAfterAccepted",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "ack_by_server_at",
            "getter_name": "ackByServerAt",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "retry_count",
            "getter_name": "retryCount",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "last_retry",
            "getter_name": "lastRetry",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "receipt_id"
        ]
      }
    },
    {
      "id": 8,
      "references": [],
      "type": "table",
      "data": {
        "name": "received_receipts",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "receipt_id",
            "getter_name": "receiptId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "receipt_id"
        ]
      }
    },
    {
      "id": 9,
      "references": [],
      "type": "table",
      "data": {
        "name": "signal_identity_key_stores",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "device_id",
            "getter_name": "deviceId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "name",
            "getter_name": "name",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "identity_key",
            "getter_name": "identityKey",
            "moor_type": "blob",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "device_id",
          "name"
        ]
      }
    },
    {
      "id": 10,
      "references": [],
      "type": "table",
      "data": {
        "name": "signal_pre_key_stores",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "pre_key_id",
            "getter_name": "preKeyId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "pre_key",
            "getter_name": "preKey",
            "moor_type": "blob",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "pre_key_id"
        ]
      }
    },
    {
      "id": 11,
      "references": [],
      "type": "table",
      "data": {
        "name": "signal_sender_key_stores",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "sender_key_name",
            "getter_name": "senderKeyName",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "sender_key",
            "getter_name": "senderKey",
            "moor_type": "blob",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "sender_key_name"
        ]
      }
    },
    {
      "id": 12,
      "references": [],
      "type": "table",
      "data": {
        "name": "signal_session_stores",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "device_id",
            "getter_name": "deviceId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "name",
            "getter_name": "name",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "session_record",
            "getter_name": "sessionRecord",
            "moor_type": "blob",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "device_id",
          "name"
        ]
      }
    },
    {
      "id": 13,
      "references": [],
      "type": "table",
      "data": {
        "name": "signal_signed_pre_key_stores",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "signed_pre_key_id",
            "getter_name": "signedPreKeyId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "signed_pre_key",
            "getter_name": "signedPreKey",
            "moor_type": "blob",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "signed_pre_key_id"
        ]
      }
    },
    {
      "id": 14,
      "references": [
        3,
        0
      ],
      "type": "table",
      "data": {
        "name": "message_actions",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "message_id",
            "getter_name": "messageId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES messages (message_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES messages (message_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "messages",
                    "column": "message_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "contact_id",
            "getter_name": "contactId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "type",
            "getter_name": "type",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [],
            "type_converter": {
              "dart_expr": "const EnumNameConverter<MessageActionType>(MessageActionType.values)",
              "dart_type_name": "MessageActionType"
            }
          },
          {
            "name": "action_at",
            "getter_name": "actionAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "message_id",
          "contact_id",
          "type"
        ]
      }
    },
    {
      "id": 15,
      "references": [
        1,
        0
      ],
      "type": "table",
      "data": {
        "name": "group_histories",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "group_history_id",
            "getter_name": "groupHistoryId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "group_id",
            "getter_name": "groupId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES \"groups\" (group_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES \"groups\" (group_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "groups",
                    "column": "group_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "contact_id",
            "getter_name": "contactId",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id)",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id)"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": null
                }
              }
            ]
          },
          {
            "name": "affected_contact_id",
            "getter_name": "affectedContactId",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "old_group_name",
            "getter_name": "oldGroupName",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "new_group_name",
            "getter_name": "newGroupName",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "new_delete_messages_after_milliseconds",
            "getter_name": "newDeleteMessagesAfterMilliseconds",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "type",
            "getter_name": "type",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [],
            "type_converter": {
              "dart_expr": "const EnumNameConverter<GroupActionType>(GroupActionType.values)",
              "dart_type_name": "GroupActionType"
            }
          },
          {
            "name": "action_at",
            "getter_name": "actionAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "group_history_id"
        ]
      }
    },
    {
      "id": 16,
      "references": [
        0
      ],
      "type": "table",
      "data": {
        "name": "key_verifications",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "verification_id",
            "getter_name": "verificationId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "PRIMARY KEY AUTOINCREMENT",
            "dialectAwareDefaultConstraints": {
              "sqlite": "PRIMARY KEY AUTOINCREMENT"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              "auto-increment"
            ]
          },
          {
            "name": "contact_id",
            "getter_name": "contactId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "type",
            "getter_name": "type",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [],
            "type_converter": {
              "dart_expr": "const EnumNameConverter<VerificationType>(VerificationType.values)",
              "dart_type_name": "VerificationType"
            }
          },
          {
            "name": "verified_by",
            "getter_name": "verifiedBy",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": []
      }
    },
    {
      "id": 17,
      "references": [],
      "type": "table",
      "data": {
        "name": "verification_tokens",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "token_id",
            "getter_name": "tokenId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "PRIMARY KEY AUTOINCREMENT",
            "dialectAwareDefaultConstraints": {
              "sqlite": "PRIMARY KEY AUTOINCREMENT"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              "auto-increment"
            ]
          },
          {
            "name": "token",
            "getter_name": "token",
            "moor_type": "blob",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "created_at",
            "getter_name": "createdAt",
            "moor_type": "dateTime",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('CAST(strftime(\\'%s\\', CURRENT_TIMESTAMP) AS INTEGER)')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": []
      }
    },
    {
      "id": 18,
      "references": [],
      "type": "table",
      "data": {
        "name": "user_discovery_announced_users",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "announced_user_id",
            "getter_name": "announcedUserId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "announced_public_key",
            "getter_name": "announcedPublicKey",
            "moor_type": "blob",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "public_id",
            "getter_name": "publicId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "UNIQUE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "UNIQUE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              "unique"
            ]
          },
          {
            "name": "username",
            "getter_name": "username",
            "moor_type": "string",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "was_shown_to_the_user",
            "getter_name": "wasShownToTheUser",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"was_shown_to_the_user\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"was_shown_to_the_user\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "is_hidden",
            "getter_name": "isHidden",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"is_hidden\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"is_hidden\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "was_asked_friends",
            "getter_name": "wasAskedFriends",
            "moor_type": "bool",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "CHECK (\"was_asked_friends\" IN (0, 1))",
            "dialectAwareDefaultConstraints": {
              "sqlite": "CHECK (\"was_asked_friends\" IN (0, 1))"
            },
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "announced_user_id"
        ]
      }
    },
    {
      "id": 19,
      "references": [
        18,
        0
      ],
      "type": "table",
      "data": {
        "name": "user_discovery_user_relations",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "announced_user_id",
            "getter_name": "announcedUserId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES user_discovery_announced_users (announced_user_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES user_discovery_announced_users (announced_user_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "user_discovery_announced_users",
                    "column": "announced_user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "from_contact_id",
            "getter_name": "fromContactId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "public_key_verified_timestamp",
            "getter_name": "publicKeyVerifiedTimestamp",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "announced_user_id",
          "from_contact_id"
        ]
      }
    },
    {
      "id": 20,
      "references": [
        0
      ],
      "type": "table",
      "data": {
        "name": "user_discovery_other_promotions",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "from_contact_id",
            "getter_name": "fromContactId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "promotion_id",
            "getter_name": "promotionId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "public_id",
            "getter_name": "publicId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "threshold",
            "getter_name": "threshold",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "announcement_share",
            "getter_name": "announcementShare",
            "moor_type": "blob",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "public_key_verified_timestamp",
            "getter_name": "publicKeyVerifiedTimestamp",
            "moor_type": "dateTime",
            "nullable": true,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "from_contact_id",
          "public_id"
        ]
      }
    },
    {
      "id": 21,
      "references": [
        0
      ],
      "type": "table",
      "data": {
        "name": "user_discovery_own_promotions",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "version_id",
            "getter_name": "versionId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "PRIMARY KEY AUTOINCREMENT",
            "dialectAwareDefaultConstraints": {
              "sqlite": "PRIMARY KEY AUTOINCREMENT"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              "auto-increment"
            ]
          },
          {
            "name": "contact_id",
            "getter_name": "contactId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "promotion",
            "getter_name": "promotion",
            "moor_type": "blob",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": []
      }
    },
    {
      "id": 22,
      "references": [
        0
      ],
      "type": "table",
      "data": {
        "name": "user_discovery_shares",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "share_id",
            "getter_name": "shareId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "PRIMARY KEY AUTOINCREMENT",
            "dialectAwareDefaultConstraints": {
              "sqlite": "PRIMARY KEY AUTOINCREMENT"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              "auto-increment"
            ]
          },
          {
            "name": "share",
            "getter_name": "share",
            "moor_type": "blob",
            "nullable": false,
            "customConstraints": null,
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": []
          },
          {
            "name": "contact_id",
            "getter_name": "contactId",
            "moor_type": "int",
            "nullable": true,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES contacts (user_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES contacts (user_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "contacts",
                    "column": "user_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": []
      }
    },
    {
      "id": 23,
      "references": [],
      "type": "table",
      "data": {
        "name": "shortcuts",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "id",
            "getter_name": "id",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "PRIMARY KEY AUTOINCREMENT",
            "dialectAwareDefaultConstraints": {
              "sqlite": "PRIMARY KEY AUTOINCREMENT"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              "auto-increment"
            ]
          },
          {
            "name": "emoji",
            "getter_name": "emoji",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "UNIQUE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "UNIQUE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              "unique"
            ]
          },
          {
            "name": "usage_counter",
            "getter_name": "usageCounter",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "default_dart": "const CustomExpression('0')",
            "default_client_dart": null,
            "dsl_features": []
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": []
      }
    },
    {
      "id": 24,
      "references": [
        23,
        1
      ],
      "type": "table",
      "data": {
        "name": "shortcut_members",
        "was_declared_in_moor": false,
        "columns": [
          {
            "name": "shortcut_id",
            "getter_name": "shortcutId",
            "moor_type": "int",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES shortcuts (id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES shortcuts (id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "shortcuts",
                    "column": "id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          },
          {
            "name": "group_id",
            "getter_name": "groupId",
            "moor_type": "string",
            "nullable": false,
            "customConstraints": null,
            "defaultConstraints": "REFERENCES \"groups\" (group_id) ON DELETE CASCADE",
            "dialectAwareDefaultConstraints": {
              "sqlite": "REFERENCES \"groups\" (group_id) ON DELETE CASCADE"
            },
            "default_dart": null,
            "default_client_dart": null,
            "dsl_features": [
              {
                "foreign_key": {
                  "to": {
                    "table": "groups",
                    "column": "group_id"
                  },
                  "initially_deferred": false,
                  "on_update": null,
                  "on_delete": "cascade"
                }
              }
            ]
          }
        ],
        "is_virtual": false,
        "without_rowid": false,
        "constraints": [],
        "explicit_pk": [
          "shortcut_id",
          "group_id"
        ]
      }
    }
  ],
  "fixed_sql": [
    {
      "name": "contacts",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"contacts\" (\"user_id\" INTEGER NOT NULL, \"username\" TEXT NOT NULL, \"display_name\" TEXT NULL, \"nick_name\" TEXT NULL, \"avatar_svg_compressed\" BLOB NULL, \"sender_profile_counter\" INTEGER NOT NULL DEFAULT 0, \"accepted\" INTEGER NOT NULL DEFAULT 0 CHECK (\"accepted\" IN (0, 1)), \"deleted_by_user\" INTEGER NOT NULL DEFAULT 0 CHECK (\"deleted_by_user\" IN (0, 1)), \"requested\" INTEGER NOT NULL DEFAULT 0 CHECK (\"requested\" IN (0, 1)), \"blocked\" INTEGER NOT NULL DEFAULT 0 CHECK (\"blocked\" IN (0, 1)), \"verified\" INTEGER NOT NULL DEFAULT 0 CHECK (\"verified\" IN (0, 1)), \"account_deleted\" INTEGER NOT NULL DEFAULT 0 CHECK (\"account_deleted\" IN (0, 1)), \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), \"user_discovery_version\" BLOB NULL, \"user_discovery_excluded\" INTEGER NOT NULL DEFAULT 0 CHECK (\"user_discovery_excluded\" IN (0, 1)), \"user_discovery_manual_approved\" INTEGER NULL DEFAULT 0 CHECK (\"user_discovery_manual_approved\" IN (0, 1)), \"recovery_is_trusted_friend\" INTEGER NOT NULL DEFAULT 0 CHECK (\"recovery_is_trusted_friend\" IN (0, 1)), \"recovery_last_heartbeat\" INTEGER NULL, \"recovery_secret_share\" BLOB NULL, \"recovery_contacts_secret_share\" BLOB NULL, \"recovery_contacts_last_heartbeat\" INTEGER NULL, \"recovery_contacts_threshold\" INTEGER NULL, \"ask_for_friend_promotions\" INTEGER NULL CHECK (\"ask_for_friend_promotions\" IN (0, 1)), \"media_send_counter\" INTEGER NOT NULL DEFAULT 0, \"media_received_counter\" INTEGER NOT NULL DEFAULT 0, PRIMARY KEY (\"user_id\"));"
        }
      ]
    },
    {
      "name": "groups",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"groups\" (\"group_id\" TEXT NOT NULL, \"is_group_admin\" INTEGER NOT NULL DEFAULT 0 CHECK (\"is_group_admin\" IN (0, 1)), \"is_direct_chat\" INTEGER NOT NULL DEFAULT 0 CHECK (\"is_direct_chat\" IN (0, 1)), \"pinned\" INTEGER NOT NULL DEFAULT 0 CHECK (\"pinned\" IN (0, 1)), \"archived\" INTEGER NOT NULL DEFAULT 0 CHECK (\"archived\" IN (0, 1)), \"joined_group\" INTEGER NOT NULL DEFAULT 0 CHECK (\"joined_group\" IN (0, 1)), \"left_group\" INTEGER NOT NULL DEFAULT 0 CHECK (\"left_group\" IN (0, 1)), \"deleted_content\" INTEGER NOT NULL DEFAULT 0 CHECK (\"deleted_content\" IN (0, 1)), \"state_version_id\" INTEGER NOT NULL DEFAULT 0, \"state_encryption_key\" BLOB NULL, \"my_group_private_key\" BLOB NULL, \"group_name\" TEXT NOT NULL, \"draft_message\" TEXT NULL, \"total_media_counter\" INTEGER NOT NULL DEFAULT 0, \"also_best_friend\" INTEGER NOT NULL DEFAULT 0 CHECK (\"also_best_friend\" IN (0, 1)), \"delete_messages_after_milliseconds\" INTEGER NOT NULL DEFAULT 86400000, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), \"last_message_send\" INTEGER NULL, \"last_message_received\" INTEGER NULL, \"last_flame_counter_change\" INTEGER NULL, \"last_flame_sync\" INTEGER NULL, \"flame_counter\" INTEGER NOT NULL DEFAULT 0, \"max_flame_counter\" INTEGER NOT NULL DEFAULT 0, \"max_flame_counter_from\" INTEGER NULL, \"last_message_exchange\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), PRIMARY KEY (\"group_id\"));"
        }
      ]
    },
    {
      "name": "media_files",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"media_files\" (\"media_id\" TEXT NOT NULL, \"type\" TEXT NOT NULL, \"upload_state\" TEXT NULL, \"cloud_state\" TEXT NOT NULL DEFAULT 'none', \"blurhash\" TEXT NULL, \"download_state\" TEXT NULL, \"requires_authentication\" INTEGER NOT NULL DEFAULT 0 CHECK (\"requires_authentication\" IN (0, 1)), \"stored\" INTEGER NOT NULL DEFAULT 0 CHECK (\"stored\" IN (0, 1)), \"is_draft_media\" INTEGER NOT NULL DEFAULT 0 CHECK (\"is_draft_media\" IN (0, 1)), \"is_favorite\" INTEGER NOT NULL DEFAULT 0 CHECK (\"is_favorite\" IN (0, 1)), \"has_crop_analyzed\" INTEGER NOT NULL DEFAULT 0 CHECK (\"has_crop_analyzed\" IN (0, 1)), \"pre_progressing_process\" INTEGER NULL, \"reupload_requested_by\" TEXT NULL, \"display_limit_in_milliseconds\" INTEGER NULL, \"remove_audio\" INTEGER NULL CHECK (\"remove_audio\" IN (0, 1)), \"download_token\" BLOB NULL, \"encryption_key\" BLOB NULL, \"encryption_mac\" BLOB NULL, \"encryption_nonce\" BLOB NULL, \"stored_file_hash\" BLOB NULL, \"has_thumbnail\" INTEGER NOT NULL DEFAULT 0 CHECK (\"has_thumbnail\" IN (0, 1)), \"size_in_bytes\" INTEGER NULL, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), \"created_at_month\" TEXT NULL, PRIMARY KEY (\"media_id\"));"
        }
      ]
    },
    {
      "name": "messages",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"messages\" (\"group_id\" TEXT NOT NULL REFERENCES \"groups\" (group_id) ON DELETE CASCADE, \"message_id\" TEXT NOT NULL, \"sender_id\" INTEGER NULL REFERENCES contacts (user_id), \"type\" TEXT NOT NULL, \"content\" TEXT NULL, \"media_id\" TEXT NULL REFERENCES media_files (media_id) ON DELETE SET NULL, \"additional_message_data\" BLOB NULL, \"media_stored\" INTEGER NOT NULL DEFAULT 0 CHECK (\"media_stored\" IN (0, 1)), \"media_reopened\" INTEGER NOT NULL DEFAULT 0 CHECK (\"media_reopened\" IN (0, 1)), \"download_token\" BLOB NULL, \"quotes_message_id\" TEXT NULL, \"is_deleted_from_sender\" INTEGER NOT NULL DEFAULT 0 CHECK (\"is_deleted_from_sender\" IN (0, 1)), \"opened_at\" INTEGER NULL, \"opened_by_all\" INTEGER NULL, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), \"modified_at\" INTEGER NULL, \"ack_by_user\" INTEGER NULL, \"ack_by_server\" INTEGER NULL, PRIMARY KEY (\"message_id\"));"
        }
      ]
    },
    {
      "name": "message_histories",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"message_histories\" (\"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \"message_id\" TEXT NOT NULL REFERENCES messages (message_id) ON DELETE CASCADE, \"contact_id\" INTEGER NULL REFERENCES contacts (user_id) ON DELETE CASCADE, \"content\" TEXT NULL, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)));"
        }
      ]
    },
    {
      "name": "reactions",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"reactions\" (\"message_id\" TEXT NOT NULL REFERENCES messages (message_id) ON DELETE CASCADE, \"emoji\" TEXT NOT NULL, \"sender_id\" INTEGER NULL REFERENCES contacts (user_id) ON DELETE CASCADE, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), PRIMARY KEY (\"message_id\", \"sender_id\", \"emoji\"));"
        }
      ]
    },
    {
      "name": "group_members",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"group_members\" (\"group_id\" TEXT NOT NULL REFERENCES \"groups\" (group_id) ON DELETE CASCADE, \"contact_id\" INTEGER NOT NULL REFERENCES contacts (user_id), \"member_state\" TEXT NULL, \"group_public_key\" BLOB NULL, \"last_chat_opened\" INTEGER NULL, \"last_type_indicator\" INTEGER NULL, \"last_message\" INTEGER NULL, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), PRIMARY KEY (\"group_id\", \"contact_id\"));"
        }
      ]
    },
    {
      "name": "receipts",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"receipts\" (\"receipt_id\" TEXT NOT NULL, \"contact_id\" INTEGER NOT NULL REFERENCES contacts (user_id) ON DELETE CASCADE, \"message_id\" TEXT NULL REFERENCES messages (message_id) ON DELETE CASCADE, \"message\" BLOB NOT NULL, \"contact_will_sends_receipt\" INTEGER NOT NULL DEFAULT 1 CHECK (\"contact_will_sends_receipt\" IN (0, 1)), \"will_be_retried_by_media_upload\" INTEGER NOT NULL DEFAULT 0 CHECK (\"will_be_retried_by_media_upload\" IN (0, 1)), \"mark_for_retry\" INTEGER NULL, \"mark_for_retry_after_accepted\" INTEGER NULL, \"ack_by_server_at\" INTEGER NULL, \"retry_count\" INTEGER NOT NULL DEFAULT 0, \"last_retry\" INTEGER NULL, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), PRIMARY KEY (\"receipt_id\"));"
        }
      ]
    },
    {
      "name": "received_receipts",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"received_receipts\" (\"receipt_id\" TEXT NOT NULL, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), PRIMARY KEY (\"receipt_id\"));"
        }
      ]
    },
    {
      "name": "signal_identity_key_stores",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"signal_identity_key_stores\" (\"device_id\" INTEGER NOT NULL, \"name\" TEXT NOT NULL, \"identity_key\" BLOB NOT NULL, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), PRIMARY KEY (\"device_id\", \"name\"));"
        }
      ]
    },
    {
      "name": "signal_pre_key_stores",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"signal_pre_key_stores\" (\"pre_key_id\" INTEGER NOT NULL, \"pre_key\" BLOB NOT NULL, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), PRIMARY KEY (\"pre_key_id\"));"
        }
      ]
    },
    {
      "name": "signal_sender_key_stores",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"signal_sender_key_stores\" (\"sender_key_name\" TEXT NOT NULL, \"sender_key\" BLOB NOT NULL, PRIMARY KEY (\"sender_key_name\"));"
        }
      ]
    },
    {
      "name": "signal_session_stores",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"signal_session_stores\" (\"device_id\" INTEGER NOT NULL, \"name\" TEXT NOT NULL, \"session_record\" BLOB NOT NULL, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), PRIMARY KEY (\"device_id\", \"name\"));"
        }
      ]
    },
    {
      "name": "signal_signed_pre_key_stores",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"signal_signed_pre_key_stores\" (\"signed_pre_key_id\" INTEGER NOT NULL, \"signed_pre_key\" BLOB NOT NULL, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), PRIMARY KEY (\"signed_pre_key_id\"));"
        }
      ]
    },
    {
      "name": "message_actions",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"message_actions\" (\"message_id\" TEXT NOT NULL REFERENCES messages (message_id) ON DELETE CASCADE, \"contact_id\" INTEGER NOT NULL REFERENCES contacts (user_id) ON DELETE CASCADE, \"type\" TEXT NOT NULL, \"action_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), PRIMARY KEY (\"message_id\", \"contact_id\", \"type\"));"
        }
      ]
    },
    {
      "name": "group_histories",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"group_histories\" (\"group_history_id\" TEXT NOT NULL, \"group_id\" TEXT NOT NULL REFERENCES \"groups\" (group_id) ON DELETE CASCADE, \"contact_id\" INTEGER NULL REFERENCES contacts (user_id), \"affected_contact_id\" INTEGER NULL, \"old_group_name\" TEXT NULL, \"new_group_name\" TEXT NULL, \"new_delete_messages_after_milliseconds\" INTEGER NULL, \"type\" TEXT NOT NULL, \"action_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)), PRIMARY KEY (\"group_history_id\"));"
        }
      ]
    },
    {
      "name": "key_verifications",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"key_verifications\" (\"verification_id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \"contact_id\" INTEGER NOT NULL REFERENCES contacts (user_id) ON DELETE CASCADE, \"type\" TEXT NOT NULL, \"verified_by\" INTEGER NULL REFERENCES contacts (user_id) ON DELETE CASCADE, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)));"
        }
      ]
    },
    {
      "name": "verification_tokens",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"verification_tokens\" (\"token_id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \"token\" BLOB NOT NULL, \"created_at\" INTEGER NOT NULL DEFAULT (CAST(strftime('%s', CURRENT_TIMESTAMP) AS INTEGER)));"
        }
      ]
    },
    {
      "name": "user_discovery_announced_users",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"user_discovery_announced_users\" (\"announced_user_id\" INTEGER NOT NULL, \"announced_public_key\" BLOB NOT NULL, \"public_id\" INTEGER NOT NULL UNIQUE, \"username\" TEXT NULL, \"was_shown_to_the_user\" INTEGER NOT NULL DEFAULT 0 CHECK (\"was_shown_to_the_user\" IN (0, 1)), \"is_hidden\" INTEGER NOT NULL DEFAULT 0 CHECK (\"is_hidden\" IN (0, 1)), \"was_asked_friends\" INTEGER NOT NULL DEFAULT 0 CHECK (\"was_asked_friends\" IN (0, 1)), PRIMARY KEY (\"announced_user_id\"));"
        }
      ]
    },
    {
      "name": "user_discovery_user_relations",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"user_discovery_user_relations\" (\"announced_user_id\" INTEGER NOT NULL REFERENCES user_discovery_announced_users (announced_user_id) ON DELETE CASCADE, \"from_contact_id\" INTEGER NOT NULL REFERENCES contacts (user_id) ON DELETE CASCADE, \"public_key_verified_timestamp\" INTEGER NULL, PRIMARY KEY (\"announced_user_id\", \"from_contact_id\"));"
        }
      ]
    },
    {
      "name": "user_discovery_other_promotions",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"user_discovery_other_promotions\" (\"from_contact_id\" INTEGER NOT NULL REFERENCES contacts (user_id) ON DELETE CASCADE, \"promotion_id\" INTEGER NOT NULL, \"public_id\" INTEGER NOT NULL, \"threshold\" INTEGER NOT NULL, \"announcement_share\" BLOB NOT NULL, \"public_key_verified_timestamp\" INTEGER NULL, PRIMARY KEY (\"from_contact_id\", \"public_id\"));"
        }
      ]
    },
    {
      "name": "user_discovery_own_promotions",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"user_discovery_own_promotions\" (\"version_id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \"contact_id\" INTEGER NOT NULL REFERENCES contacts (user_id) ON DELETE CASCADE, \"promotion\" BLOB NOT NULL);"
        }
      ]
    },
    {
      "name": "user_discovery_shares",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"user_discovery_shares\" (\"share_id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \"share\" BLOB NOT NULL, \"contact_id\" INTEGER NULL REFERENCES contacts (user_id) ON DELETE CASCADE);"
        }
      ]
    },
    {
      "name": "shortcuts",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"shortcuts\" (\"id\" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \"emoji\" TEXT NOT NULL UNIQUE, \"usage_counter\" INTEGER NOT NULL DEFAULT 0);"
        }
      ]
    },
    {
      "name": "shortcut_members",
      "sql": [
        {
          "dialect": "sqlite",
          "sql": "CREATE TABLE IF NOT EXISTS \"shortcut_members\" (\"shortcut_id\" INTEGER NOT NULL REFERENCES shortcuts (id) ON DELETE CASCADE, \"group_id\" TEXT NOT NULL REFERENCES \"groups\" (group_id) ON DELETE CASCADE, PRIMARY KEY (\"shortcut_id\", \"group_id\"));"
        }
      ]
    }
  ]
}