{
  "formatVersion": 1,
  "database": {
    "version": 58,
    "identityHash": "cd42876a63eda2aafefca411ce09024c",
    "entities": [
      {
        "tableName": "providers",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NOT NULL, `type` TEXT NOT NULL, `server_url` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `m3u_url` TEXT NOT NULL, `epg_url` TEXT NOT NULL, `http_user_agent` TEXT NOT NULL, `http_headers` TEXT NOT NULL, `stalker_mac_address` TEXT NOT NULL, `stalker_device_profile` TEXT NOT NULL, `stalker_device_timezone` TEXT NOT NULL, `stalker_device_locale` TEXT NOT NULL, `stalker_serial_number` TEXT NOT NULL, `stalker_device_id` TEXT NOT NULL, `stalker_device_id2` TEXT NOT NULL, `stalker_signature` TEXT NOT NULL, `stalker_auth_mode` TEXT NOT NULL, `stalker_portal_profile` TEXT NOT NULL, `stalker_portal_fingerprint` TEXT NOT NULL, `stalker_mag_preset` TEXT NOT NULL, `stalker_last_bootstrap_recipe` TEXT NOT NULL, `stalker_endpoint_preference` TEXT NOT NULL, `stalker_cookie_mode` TEXT NOT NULL, `stalker_playback_backend_hint` TEXT NOT NULL, `stalker_last_playback_mode` TEXT, `stalker_credentials_required` INTEGER NOT NULL, `stalker_mac_required` INTEGER NOT NULL, `stalker_uses_temp_links` INTEGER NOT NULL, `stalker_module_restricted` INTEGER NOT NULL, `stalker_strict_fingerprint_required` INTEGER NOT NULL, `stalker_recipe_fallback_used` INTEGER NOT NULL, `stalker_recipe_rediscovery_attempts` INTEGER NOT NULL, `is_active` INTEGER NOT NULL, `max_connections` INTEGER NOT NULL, `expiration_date` INTEGER, `api_version` TEXT, `allowed_output_formats_json` TEXT NOT NULL, `epg_sync_mode` TEXT NOT NULL, `xtream_fast_sync_enabled` INTEGER NOT NULL, `xtream_live_sync_mode` TEXT NOT NULL, `m3u_vod_classification_enabled` INTEGER NOT NULL, `status` TEXT NOT NULL, `last_synced_at` INTEGER NOT NULL, `created_at` INTEGER NOT NULL)",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "type",
            "columnName": "type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "serverUrl",
            "columnName": "server_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "username",
            "columnName": "username",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "password",
            "columnName": "password",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "m3uUrl",
            "columnName": "m3u_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "epgUrl",
            "columnName": "epg_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "httpUserAgent",
            "columnName": "http_user_agent",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "httpHeaders",
            "columnName": "http_headers",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerMacAddress",
            "columnName": "stalker_mac_address",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerDeviceProfile",
            "columnName": "stalker_device_profile",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerDeviceTimezone",
            "columnName": "stalker_device_timezone",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerDeviceLocale",
            "columnName": "stalker_device_locale",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerSerialNumber",
            "columnName": "stalker_serial_number",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerDeviceId",
            "columnName": "stalker_device_id",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerDeviceId2",
            "columnName": "stalker_device_id2",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerSignature",
            "columnName": "stalker_signature",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerAuthMode",
            "columnName": "stalker_auth_mode",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerPortalProfile",
            "columnName": "stalker_portal_profile",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerPortalFingerprint",
            "columnName": "stalker_portal_fingerprint",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerMagPreset",
            "columnName": "stalker_mag_preset",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerLastBootstrapRecipe",
            "columnName": "stalker_last_bootstrap_recipe",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerEndpointPreference",
            "columnName": "stalker_endpoint_preference",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerCookieMode",
            "columnName": "stalker_cookie_mode",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerPlaybackBackendHint",
            "columnName": "stalker_playback_backend_hint",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stalkerLastPlaybackMode",
            "columnName": "stalker_last_playback_mode",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "stalkerCredentialsRequired",
            "columnName": "stalker_credentials_required",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "stalkerMacRequired",
            "columnName": "stalker_mac_required",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "stalkerUsesTemporaryLinks",
            "columnName": "stalker_uses_temp_links",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "stalkerModuleRestricted",
            "columnName": "stalker_module_restricted",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "stalkerStrictFingerprintRequired",
            "columnName": "stalker_strict_fingerprint_required",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "stalkerRecipeFallbackUsed",
            "columnName": "stalker_recipe_fallback_used",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "stalkerRecipeRediscoveryAttempts",
            "columnName": "stalker_recipe_rediscovery_attempts",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isActive",
            "columnName": "is_active",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "maxConnections",
            "columnName": "max_connections",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "expirationDate",
            "columnName": "expiration_date",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "apiVersion",
            "columnName": "api_version",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "allowedOutputFormatsJson",
            "columnName": "allowed_output_formats_json",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "epgSyncMode",
            "columnName": "epg_sync_mode",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "xtreamFastSyncEnabled",
            "columnName": "xtream_fast_sync_enabled",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "xtreamLiveSyncMode",
            "columnName": "xtream_live_sync_mode",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "m3uVodClassificationEnabled",
            "columnName": "m3u_vod_classification_enabled",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "status",
            "columnName": "status",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "lastSyncedAt",
            "columnName": "last_synced_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "createdAt",
            "columnName": "created_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_providers_server_url_username_stalker_mac_address",
            "unique": true,
            "columnNames": [
              "server_url",
              "username",
              "stalker_mac_address"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_providers_server_url_username_stalker_mac_address` ON `${TABLE_NAME}` (`server_url`, `username`, `stalker_mac_address`)"
          }
        ]
      },
      {
        "tableName": "channels",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `stream_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `logo_url` TEXT, `group_title` TEXT, `category_id` INTEGER, `category_name` TEXT, `stream_url` TEXT NOT NULL, `epg_channel_id` TEXT, `number` INTEGER NOT NULL, `catch_up_supported` INTEGER NOT NULL, `catch_up_days` INTEGER NOT NULL, `catchUpSource` TEXT, `provider_id` INTEGER NOT NULL, `is_adult` INTEGER NOT NULL, `is_user_protected` INTEGER NOT NULL, `logical_group_id` TEXT NOT NULL, `error_count` INTEGER NOT NULL, `quality_options_json` TEXT, `sync_fingerprint` TEXT NOT NULL, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "streamId",
            "columnName": "stream_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "logoUrl",
            "columnName": "logo_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "groupTitle",
            "columnName": "group_title",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "categoryId",
            "columnName": "category_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "categoryName",
            "columnName": "category_name",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "streamUrl",
            "columnName": "stream_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "epgChannelId",
            "columnName": "epg_channel_id",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "number",
            "columnName": "number",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "catchUpSupported",
            "columnName": "catch_up_supported",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "catchUpDays",
            "columnName": "catch_up_days",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "catchUpSource",
            "columnName": "catchUpSource",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isAdult",
            "columnName": "is_adult",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isUserProtected",
            "columnName": "is_user_protected",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "logicalGroupId",
            "columnName": "logical_group_id",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "errorCount",
            "columnName": "error_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "qualityOptionsJson",
            "columnName": "quality_options_json",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "syncFingerprint",
            "columnName": "sync_fingerprint",
            "affinity": "TEXT",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_channels_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_channels_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_channels_provider_id_category_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "category_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_channels_provider_id_category_id` ON `${TABLE_NAME}` (`provider_id`, `category_id`)"
          },
          {
            "name": "index_channels_provider_id_stream_id",
            "unique": true,
            "columnNames": [
              "provider_id",
              "stream_id"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_channels_provider_id_stream_id` ON `${TABLE_NAME}` (`provider_id`, `stream_id`)"
          },
          {
            "name": "index_channels_logical_group_id",
            "unique": false,
            "columnNames": [
              "logical_group_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_channels_logical_group_id` ON `${TABLE_NAME}` (`logical_group_id`)"
          },
          {
            "name": "index_channels_provider_id_category_id_logical_group_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "category_id",
              "logical_group_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_channels_provider_id_category_id_logical_group_id` ON `${TABLE_NAME}` (`provider_id`, `category_id`, `logical_group_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "channel_preferences",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `channel_id` INTEGER NOT NULL, `aspect_ratio` TEXT, `audio_video_offset_ms` INTEGER, `updated_at` INTEGER NOT NULL, FOREIGN KEY(`channel_id`) REFERENCES `channels`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "channelId",
            "columnName": "channel_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "aspectRatio",
            "columnName": "aspect_ratio",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "audioVideoOffsetMs",
            "columnName": "audio_video_offset_ms",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "updatedAt",
            "columnName": "updated_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_channel_preferences_channel_id",
            "unique": true,
            "columnNames": [
              "channel_id"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_channel_preferences_channel_id` ON `${TABLE_NAME}` (`channel_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "channels",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "channel_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "channels_fts",
        "createSql": "CREATE VIRTUAL TABLE IF NOT EXISTS `${TABLE_NAME}` USING FTS4(`name` TEXT NOT NULL, content=`channels`)",
        "fields": [
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": []
        },
        "ftsVersion": "FTS4",
        "ftsOptions": {
          "tokenizer": "simple",
          "tokenizerArgs": [],
          "contentTable": "channels",
          "languageIdColumnName": "",
          "matchInfo": "FTS4",
          "notIndexedColumns": [],
          "prefixSizes": [],
          "preferredOrder": "ASC"
        },
        "contentSyncTriggers": [
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_channels_fts_BEFORE_UPDATE BEFORE UPDATE ON `channels` BEGIN DELETE FROM `channels_fts` WHERE `docid`=OLD.`rowid`; END",
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_channels_fts_BEFORE_DELETE BEFORE DELETE ON `channels` BEGIN DELETE FROM `channels_fts` WHERE `docid`=OLD.`rowid`; END",
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_channels_fts_AFTER_UPDATE AFTER UPDATE ON `channels` BEGIN INSERT INTO `channels_fts`(`docid`, `name`) VALUES (NEW.`rowid`, NEW.`name`); END",
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_channels_fts_AFTER_INSERT AFTER INSERT ON `channels` BEGIN INSERT INTO `channels_fts`(`docid`, `name`) VALUES (NEW.`rowid`, NEW.`name`); END"
        ]
      },
      {
        "tableName": "movies",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `stream_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `poster_url` TEXT, `backdrop_url` TEXT, `category_id` INTEGER, `category_name` TEXT, `stream_url` TEXT NOT NULL, `container_extension` TEXT, `plot` TEXT, `cast` TEXT, `director` TEXT, `genre` TEXT, `release_date` TEXT, `duration` TEXT, `duration_seconds` INTEGER NOT NULL, `rating` REAL NOT NULL, `year` TEXT, `tmdb_id` INTEGER, `youtube_trailer` TEXT, `provider_id` INTEGER NOT NULL, `watch_progress` INTEGER NOT NULL, `watch_count` INTEGER NOT NULL, `last_watched_at` INTEGER NOT NULL, `is_adult` INTEGER NOT NULL, `is_user_protected` INTEGER NOT NULL, `sync_fingerprint` TEXT NOT NULL, `added_at` INTEGER NOT NULL, `cache_state` TEXT NOT NULL, `detail_hydrated_at` INTEGER NOT NULL, `remote_stale_at` INTEGER NOT NULL, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "streamId",
            "columnName": "stream_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "posterUrl",
            "columnName": "poster_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "backdropUrl",
            "columnName": "backdrop_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "categoryId",
            "columnName": "category_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "categoryName",
            "columnName": "category_name",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "streamUrl",
            "columnName": "stream_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "containerExtension",
            "columnName": "container_extension",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "plot",
            "columnName": "plot",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "cast",
            "columnName": "cast",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "director",
            "columnName": "director",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "genre",
            "columnName": "genre",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "releaseDate",
            "columnName": "release_date",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "duration",
            "columnName": "duration",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "durationSeconds",
            "columnName": "duration_seconds",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "rating",
            "columnName": "rating",
            "affinity": "REAL",
            "notNull": true
          },
          {
            "fieldPath": "year",
            "columnName": "year",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "tmdbId",
            "columnName": "tmdb_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "youtubeTrailer",
            "columnName": "youtube_trailer",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "watchProgress",
            "columnName": "watch_progress",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "watchCount",
            "columnName": "watch_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastWatchedAt",
            "columnName": "last_watched_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isAdult",
            "columnName": "is_adult",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isUserProtected",
            "columnName": "is_user_protected",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "syncFingerprint",
            "columnName": "sync_fingerprint",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "addedAt",
            "columnName": "added_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "cacheState",
            "columnName": "cache_state",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "detailHydratedAt",
            "columnName": "detail_hydrated_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "remoteStaleAt",
            "columnName": "remote_stale_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_movies_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_movies_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_movies_provider_id_category_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "category_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_movies_provider_id_category_id` ON `${TABLE_NAME}` (`provider_id`, `category_id`)"
          },
          {
            "name": "index_movies_provider_id_stream_id",
            "unique": true,
            "columnNames": [
              "provider_id",
              "stream_id"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_movies_provider_id_stream_id` ON `${TABLE_NAME}` (`provider_id`, `stream_id`)"
          },
          {
            "name": "index_movies_provider_id_name_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "name",
              "id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_movies_provider_id_name_id` ON `${TABLE_NAME}` (`provider_id`, `name`, `id`)"
          },
          {
            "name": "index_movies_provider_id_category_id_name_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "category_id",
              "name",
              "id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_movies_provider_id_category_id_name_id` ON `${TABLE_NAME}` (`provider_id`, `category_id`, `name`, `id`)"
          },
          {
            "name": "index_movies_provider_id_rating_name_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "rating",
              "name",
              "id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_movies_provider_id_rating_name_id` ON `${TABLE_NAME}` (`provider_id`, `rating`, `name`, `id`)"
          },
          {
            "name": "index_movies_provider_id_added_at_release_date_name_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "added_at",
              "release_date",
              "name",
              "id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_movies_provider_id_added_at_release_date_name_id` ON `${TABLE_NAME}` (`provider_id`, `added_at`, `release_date`, `name`, `id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "movies_fts",
        "createSql": "CREATE VIRTUAL TABLE IF NOT EXISTS `${TABLE_NAME}` USING FTS4(`name` TEXT NOT NULL, content=`movies`)",
        "fields": [
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": []
        },
        "ftsVersion": "FTS4",
        "ftsOptions": {
          "tokenizer": "simple",
          "tokenizerArgs": [],
          "contentTable": "movies",
          "languageIdColumnName": "",
          "matchInfo": "FTS4",
          "notIndexedColumns": [],
          "prefixSizes": [],
          "preferredOrder": "ASC"
        },
        "contentSyncTriggers": [
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_movies_fts_BEFORE_UPDATE BEFORE UPDATE ON `movies` BEGIN DELETE FROM `movies_fts` WHERE `docid`=OLD.`rowid`; END",
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_movies_fts_BEFORE_DELETE BEFORE DELETE ON `movies` BEGIN DELETE FROM `movies_fts` WHERE `docid`=OLD.`rowid`; END",
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_movies_fts_AFTER_UPDATE AFTER UPDATE ON `movies` BEGIN INSERT INTO `movies_fts`(`docid`, `name`) VALUES (NEW.`rowid`, NEW.`name`); END",
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_movies_fts_AFTER_INSERT AFTER INSERT ON `movies` BEGIN INSERT INTO `movies_fts`(`docid`, `name`) VALUES (NEW.`rowid`, NEW.`name`); END"
        ]
      },
      {
        "tableName": "series",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `series_id` INTEGER NOT NULL, `provider_series_id` TEXT, `name` TEXT NOT NULL, `poster_url` TEXT, `backdrop_url` TEXT, `category_id` INTEGER, `category_name` TEXT, `plot` TEXT, `cast` TEXT, `director` TEXT, `genre` TEXT, `release_date` TEXT, `rating` REAL NOT NULL, `tmdb_id` INTEGER, `youtube_trailer` TEXT, `episode_run_time` TEXT, `last_modified` INTEGER NOT NULL, `provider_id` INTEGER NOT NULL, `is_adult` INTEGER NOT NULL, `is_user_protected` INTEGER NOT NULL, `sync_fingerprint` TEXT NOT NULL, `cache_state` TEXT NOT NULL, `detail_hydrated_at` INTEGER NOT NULL, `remote_stale_at` INTEGER NOT NULL, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "seriesId",
            "columnName": "series_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerSeriesId",
            "columnName": "provider_series_id",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "posterUrl",
            "columnName": "poster_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "backdropUrl",
            "columnName": "backdrop_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "categoryId",
            "columnName": "category_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "categoryName",
            "columnName": "category_name",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "plot",
            "columnName": "plot",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "cast",
            "columnName": "cast",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "director",
            "columnName": "director",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "genre",
            "columnName": "genre",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "releaseDate",
            "columnName": "release_date",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "rating",
            "columnName": "rating",
            "affinity": "REAL",
            "notNull": true
          },
          {
            "fieldPath": "tmdbId",
            "columnName": "tmdb_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "youtubeTrailer",
            "columnName": "youtube_trailer",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "episodeRunTime",
            "columnName": "episode_run_time",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "lastModified",
            "columnName": "last_modified",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isAdult",
            "columnName": "is_adult",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isUserProtected",
            "columnName": "is_user_protected",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "syncFingerprint",
            "columnName": "sync_fingerprint",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "cacheState",
            "columnName": "cache_state",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "detailHydratedAt",
            "columnName": "detail_hydrated_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "remoteStaleAt",
            "columnName": "remote_stale_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_series_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_series_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_series_provider_id_category_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "category_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_series_provider_id_category_id` ON `${TABLE_NAME}` (`provider_id`, `category_id`)"
          },
          {
            "name": "index_series_provider_id_series_id",
            "unique": true,
            "columnNames": [
              "provider_id",
              "series_id"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_series_provider_id_series_id` ON `${TABLE_NAME}` (`provider_id`, `series_id`)"
          },
          {
            "name": "index_series_provider_id_name_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "name",
              "id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_series_provider_id_name_id` ON `${TABLE_NAME}` (`provider_id`, `name`, `id`)"
          },
          {
            "name": "index_series_provider_id_category_id_name_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "category_id",
              "name",
              "id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_series_provider_id_category_id_name_id` ON `${TABLE_NAME}` (`provider_id`, `category_id`, `name`, `id`)"
          },
          {
            "name": "index_series_provider_id_rating_name_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "rating",
              "name",
              "id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_series_provider_id_rating_name_id` ON `${TABLE_NAME}` (`provider_id`, `rating`, `name`, `id`)"
          },
          {
            "name": "index_series_provider_id_last_modified_name_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "last_modified",
              "name",
              "id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_series_provider_id_last_modified_name_id` ON `${TABLE_NAME}` (`provider_id`, `last_modified`, `name`, `id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "series_fts",
        "createSql": "CREATE VIRTUAL TABLE IF NOT EXISTS `${TABLE_NAME}` USING FTS4(`name` TEXT NOT NULL, content=`series`)",
        "fields": [
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": []
        },
        "ftsVersion": "FTS4",
        "ftsOptions": {
          "tokenizer": "simple",
          "tokenizerArgs": [],
          "contentTable": "series",
          "languageIdColumnName": "",
          "matchInfo": "FTS4",
          "notIndexedColumns": [],
          "prefixSizes": [],
          "preferredOrder": "ASC"
        },
        "contentSyncTriggers": [
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_series_fts_BEFORE_UPDATE BEFORE UPDATE ON `series` BEGIN DELETE FROM `series_fts` WHERE `docid`=OLD.`rowid`; END",
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_series_fts_BEFORE_DELETE BEFORE DELETE ON `series` BEGIN DELETE FROM `series_fts` WHERE `docid`=OLD.`rowid`; END",
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_series_fts_AFTER_UPDATE AFTER UPDATE ON `series` BEGIN INSERT INTO `series_fts`(`docid`, `name`) VALUES (NEW.`rowid`, NEW.`name`); END",
          "CREATE TRIGGER IF NOT EXISTS room_fts_content_sync_series_fts_AFTER_INSERT AFTER INSERT ON `series` BEGIN INSERT INTO `series_fts`(`docid`, `name`) VALUES (NEW.`rowid`, NEW.`name`); END"
        ]
      },
      {
        "tableName": "episodes",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `episode_id` INTEGER NOT NULL, `title` TEXT NOT NULL, `episode_number` INTEGER NOT NULL, `season_number` INTEGER NOT NULL, `stream_url` TEXT NOT NULL, `container_extension` TEXT, `cover_url` TEXT, `plot` TEXT, `duration` TEXT, `duration_seconds` INTEGER NOT NULL, `rating` REAL NOT NULL, `release_date` TEXT, `series_id` INTEGER NOT NULL, `provider_id` INTEGER NOT NULL, `watch_progress` INTEGER NOT NULL, `last_watched_at` INTEGER NOT NULL, `is_adult` INTEGER NOT NULL, `is_user_protected` INTEGER NOT NULL, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`series_id`) REFERENCES `series`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "episodeId",
            "columnName": "episode_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "title",
            "columnName": "title",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "episodeNumber",
            "columnName": "episode_number",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "seasonNumber",
            "columnName": "season_number",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "streamUrl",
            "columnName": "stream_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "containerExtension",
            "columnName": "container_extension",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "coverUrl",
            "columnName": "cover_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "plot",
            "columnName": "plot",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "duration",
            "columnName": "duration",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "durationSeconds",
            "columnName": "duration_seconds",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "rating",
            "columnName": "rating",
            "affinity": "REAL",
            "notNull": true
          },
          {
            "fieldPath": "releaseDate",
            "columnName": "release_date",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "seriesId",
            "columnName": "series_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "watchProgress",
            "columnName": "watch_progress",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastWatchedAt",
            "columnName": "last_watched_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isAdult",
            "columnName": "is_adult",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isUserProtected",
            "columnName": "is_user_protected",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_episodes_series_id",
            "unique": false,
            "columnNames": [
              "series_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_episodes_series_id` ON `${TABLE_NAME}` (`series_id`)"
          },
          {
            "name": "index_episodes_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_episodes_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_episodes_provider_id_episode_id",
            "unique": true,
            "columnNames": [
              "provider_id",
              "episode_id"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_episodes_provider_id_episode_id` ON `${TABLE_NAME}` (`provider_id`, `episode_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          },
          {
            "table": "series",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "series_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "categories",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `category_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `parent_id` INTEGER, `type` TEXT NOT NULL, `provider_id` INTEGER NOT NULL, `is_adult` INTEGER NOT NULL, `is_user_protected` INTEGER NOT NULL, `sync_fingerprint` TEXT NOT NULL, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "categoryId",
            "columnName": "category_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "parentId",
            "columnName": "parent_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "type",
            "columnName": "type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isAdult",
            "columnName": "is_adult",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isUserProtected",
            "columnName": "is_user_protected",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "syncFingerprint",
            "columnName": "sync_fingerprint",
            "affinity": "TEXT",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_categories_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_categories_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_categories_provider_id_type",
            "unique": false,
            "columnNames": [
              "provider_id",
              "type"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_categories_provider_id_type` ON `${TABLE_NAME}` (`provider_id`, `type`)"
          },
          {
            "name": "index_categories_provider_id_category_id_type",
            "unique": true,
            "columnNames": [
              "provider_id",
              "category_id",
              "type"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_categories_provider_id_category_id_type` ON `${TABLE_NAME}` (`provider_id`, `category_id`, `type`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "channel_import_stage",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`session_id` INTEGER NOT NULL, `provider_id` INTEGER NOT NULL, `stream_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `logo_url` TEXT, `group_title` TEXT, `category_id` INTEGER, `category_name` TEXT, `stream_url` TEXT NOT NULL, `epg_channel_id` TEXT, `number` INTEGER NOT NULL, `catch_up_supported` INTEGER NOT NULL, `catch_up_days` INTEGER NOT NULL, `catchUpSource` TEXT, `is_adult` INTEGER NOT NULL, `logical_group_id` TEXT NOT NULL, `error_count` INTEGER NOT NULL, `sync_fingerprint` TEXT NOT NULL, PRIMARY KEY(`session_id`, `provider_id`, `stream_id`), FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "sessionId",
            "columnName": "session_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "streamId",
            "columnName": "stream_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "logoUrl",
            "columnName": "logo_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "groupTitle",
            "columnName": "group_title",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "categoryId",
            "columnName": "category_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "categoryName",
            "columnName": "category_name",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "streamUrl",
            "columnName": "stream_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "epgChannelId",
            "columnName": "epg_channel_id",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "number",
            "columnName": "number",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "catchUpSupported",
            "columnName": "catch_up_supported",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "catchUpDays",
            "columnName": "catch_up_days",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "catchUpSource",
            "columnName": "catchUpSource",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "isAdult",
            "columnName": "is_adult",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "logicalGroupId",
            "columnName": "logical_group_id",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "errorCount",
            "columnName": "error_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "syncFingerprint",
            "columnName": "sync_fingerprint",
            "affinity": "TEXT",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "session_id",
            "provider_id",
            "stream_id"
          ]
        },
        "indices": [
          {
            "name": "index_channel_import_stage_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_channel_import_stage_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_channel_import_stage_session_id_provider_id",
            "unique": false,
            "columnNames": [
              "session_id",
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_channel_import_stage_session_id_provider_id` ON `${TABLE_NAME}` (`session_id`, `provider_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "movie_import_stage",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`session_id` INTEGER NOT NULL, `provider_id` INTEGER NOT NULL, `stream_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `poster_url` TEXT, `backdrop_url` TEXT, `category_id` INTEGER, `category_name` TEXT, `stream_url` TEXT NOT NULL, `container_extension` TEXT, `plot` TEXT, `cast` TEXT, `director` TEXT, `genre` TEXT, `release_date` TEXT, `duration` TEXT, `duration_seconds` INTEGER NOT NULL, `rating` REAL NOT NULL, `year` TEXT, `tmdb_id` INTEGER, `youtube_trailer` TEXT, `is_adult` INTEGER NOT NULL, `sync_fingerprint` TEXT NOT NULL, `added_at` INTEGER NOT NULL, PRIMARY KEY(`session_id`, `provider_id`, `stream_id`), FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "sessionId",
            "columnName": "session_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "streamId",
            "columnName": "stream_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "posterUrl",
            "columnName": "poster_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "backdropUrl",
            "columnName": "backdrop_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "categoryId",
            "columnName": "category_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "categoryName",
            "columnName": "category_name",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "streamUrl",
            "columnName": "stream_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "containerExtension",
            "columnName": "container_extension",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "plot",
            "columnName": "plot",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "cast",
            "columnName": "cast",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "director",
            "columnName": "director",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "genre",
            "columnName": "genre",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "releaseDate",
            "columnName": "release_date",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "duration",
            "columnName": "duration",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "durationSeconds",
            "columnName": "duration_seconds",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "rating",
            "columnName": "rating",
            "affinity": "REAL",
            "notNull": true
          },
          {
            "fieldPath": "year",
            "columnName": "year",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "tmdbId",
            "columnName": "tmdb_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "youtubeTrailer",
            "columnName": "youtube_trailer",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "isAdult",
            "columnName": "is_adult",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "syncFingerprint",
            "columnName": "sync_fingerprint",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "addedAt",
            "columnName": "added_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "session_id",
            "provider_id",
            "stream_id"
          ]
        },
        "indices": [
          {
            "name": "index_movie_import_stage_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_movie_import_stage_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_movie_import_stage_session_id_provider_id",
            "unique": false,
            "columnNames": [
              "session_id",
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_movie_import_stage_session_id_provider_id` ON `${TABLE_NAME}` (`session_id`, `provider_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "series_import_stage",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`session_id` INTEGER NOT NULL, `provider_id` INTEGER NOT NULL, `series_id` INTEGER NOT NULL, `provider_series_id` TEXT, `provider_series_key` TEXT NOT NULL, `name` TEXT NOT NULL, `poster_url` TEXT, `backdrop_url` TEXT, `category_id` INTEGER, `category_name` TEXT, `plot` TEXT, `cast` TEXT, `director` TEXT, `genre` TEXT, `release_date` TEXT, `rating` REAL NOT NULL, `tmdb_id` INTEGER, `youtube_trailer` TEXT, `episode_run_time` TEXT, `last_modified` INTEGER NOT NULL, `is_adult` INTEGER NOT NULL, `sync_fingerprint` TEXT NOT NULL, PRIMARY KEY(`session_id`, `provider_id`, `provider_series_key`), FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "sessionId",
            "columnName": "session_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "seriesId",
            "columnName": "series_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerSeriesId",
            "columnName": "provider_series_id",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "providerSeriesKey",
            "columnName": "provider_series_key",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "posterUrl",
            "columnName": "poster_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "backdropUrl",
            "columnName": "backdrop_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "categoryId",
            "columnName": "category_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "categoryName",
            "columnName": "category_name",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "plot",
            "columnName": "plot",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "cast",
            "columnName": "cast",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "director",
            "columnName": "director",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "genre",
            "columnName": "genre",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "releaseDate",
            "columnName": "release_date",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "rating",
            "columnName": "rating",
            "affinity": "REAL",
            "notNull": true
          },
          {
            "fieldPath": "tmdbId",
            "columnName": "tmdb_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "youtubeTrailer",
            "columnName": "youtube_trailer",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "episodeRunTime",
            "columnName": "episode_run_time",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "lastModified",
            "columnName": "last_modified",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isAdult",
            "columnName": "is_adult",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "syncFingerprint",
            "columnName": "sync_fingerprint",
            "affinity": "TEXT",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "session_id",
            "provider_id",
            "provider_series_key"
          ]
        },
        "indices": [
          {
            "name": "index_series_import_stage_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_series_import_stage_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_series_import_stage_session_id_provider_id",
            "unique": false,
            "columnNames": [
              "session_id",
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_series_import_stage_session_id_provider_id` ON `${TABLE_NAME}` (`session_id`, `provider_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "category_import_stage",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`session_id` INTEGER NOT NULL, `provider_id` INTEGER NOT NULL, `category_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `parent_id` INTEGER, `type` TEXT NOT NULL, `is_adult` INTEGER NOT NULL, `sync_fingerprint` TEXT NOT NULL, PRIMARY KEY(`session_id`, `provider_id`, `category_id`, `type`), FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "sessionId",
            "columnName": "session_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "categoryId",
            "columnName": "category_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "parentId",
            "columnName": "parent_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "type",
            "columnName": "type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "isAdult",
            "columnName": "is_adult",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "syncFingerprint",
            "columnName": "sync_fingerprint",
            "affinity": "TEXT",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "session_id",
            "provider_id",
            "category_id",
            "type"
          ]
        },
        "indices": [
          {
            "name": "index_category_import_stage_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_category_import_stage_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_category_import_stage_session_id_provider_id",
            "unique": false,
            "columnNames": [
              "session_id",
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_category_import_stage_session_id_provider_id` ON `${TABLE_NAME}` (`session_id`, `provider_id`)"
          },
          {
            "name": "index_category_import_stage_provider_id_type",
            "unique": false,
            "columnNames": [
              "provider_id",
              "type"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_category_import_stage_provider_id_type` ON `${TABLE_NAME}` (`provider_id`, `type`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "programs",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `provider_id` INTEGER NOT NULL, `channel_id` TEXT NOT NULL, `title` TEXT NOT NULL, `description` TEXT NOT NULL, `start_time` INTEGER NOT NULL, `end_time` INTEGER NOT NULL, `lang` TEXT NOT NULL, `rating` TEXT, `image_url` TEXT, `genre` TEXT, `category` TEXT, `has_archive` INTEGER NOT NULL)",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "channelId",
            "columnName": "channel_id",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "title",
            "columnName": "title",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "description",
            "columnName": "description",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "startTime",
            "columnName": "start_time",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "endTime",
            "columnName": "end_time",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lang",
            "columnName": "lang",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "rating",
            "columnName": "rating",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "imageUrl",
            "columnName": "image_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "genre",
            "columnName": "genre",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "category",
            "columnName": "category",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "hasArchive",
            "columnName": "has_archive",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_programs_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_programs_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_programs_provider_id_channel_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "channel_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_programs_provider_id_channel_id` ON `${TABLE_NAME}` (`provider_id`, `channel_id`)"
          },
          {
            "name": "index_programs_provider_id_end_time_channel_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "end_time",
              "channel_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_programs_provider_id_end_time_channel_id` ON `${TABLE_NAME}` (`provider_id`, `end_time`, `channel_id`)"
          },
          {
            "name": "index_programs_provider_id_start_time_end_time",
            "unique": false,
            "columnNames": [
              "provider_id",
              "start_time",
              "end_time"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_programs_provider_id_start_time_end_time` ON `${TABLE_NAME}` (`provider_id`, `start_time`, `end_time`)"
          },
          {
            "name": "index_programs_start_time",
            "unique": false,
            "columnNames": [
              "start_time"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_programs_start_time` ON `${TABLE_NAME}` (`start_time`)"
          },
          {
            "name": "index_programs_provider_id_channel_id_start_time",
            "unique": false,
            "columnNames": [
              "provider_id",
              "channel_id",
              "start_time"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_programs_provider_id_channel_id_start_time` ON `${TABLE_NAME}` (`provider_id`, `channel_id`, `start_time`)"
          },
          {
            "name": "index_programs_provider_id_channel_id_start_time_end_time",
            "unique": true,
            "columnNames": [
              "provider_id",
              "channel_id",
              "start_time",
              "end_time"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_programs_provider_id_channel_id_start_time_end_time` ON `${TABLE_NAME}` (`provider_id`, `channel_id`, `start_time`, `end_time`)"
          }
        ]
      },
      {
        "tableName": "favorites",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `provider_id` INTEGER NOT NULL, `content_id` INTEGER NOT NULL, `content_type` TEXT NOT NULL, `position` INTEGER NOT NULL, `group_id` INTEGER, `group_key` INTEGER NOT NULL, `added_at` INTEGER NOT NULL, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`group_id`) REFERENCES `virtual_groups`(`id`) ON UPDATE NO ACTION ON DELETE SET NULL )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "contentId",
            "columnName": "content_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "contentType",
            "columnName": "content_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "position",
            "columnName": "position",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "groupId",
            "columnName": "group_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "groupKey",
            "columnName": "group_key",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "addedAt",
            "columnName": "added_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_favorites_provider_id_content_id_content_type_group_key",
            "unique": true,
            "columnNames": [
              "provider_id",
              "content_id",
              "content_type",
              "group_key"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_favorites_provider_id_content_id_content_type_group_key` ON `${TABLE_NAME}` (`provider_id`, `content_id`, `content_type`, `group_key`)"
          },
          {
            "name": "index_favorites_provider_id_content_type_group_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "content_type",
              "group_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_favorites_provider_id_content_type_group_id` ON `${TABLE_NAME}` (`provider_id`, `content_type`, `group_id`)"
          },
          {
            "name": "index_favorites_group_id_position",
            "unique": false,
            "columnNames": [
              "group_id",
              "position"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_favorites_group_id_position` ON `${TABLE_NAME}` (`group_id`, `position`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          },
          {
            "table": "virtual_groups",
            "onDelete": "SET NULL",
            "onUpdate": "NO ACTION",
            "columns": [
              "group_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "virtual_groups",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `provider_id` INTEGER NOT NULL, `name` TEXT NOT NULL, `icon_emoji` TEXT, `position` INTEGER NOT NULL, `created_at` INTEGER NOT NULL, `content_type` TEXT NOT NULL, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "iconEmoji",
            "columnName": "icon_emoji",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "position",
            "columnName": "position",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "createdAt",
            "columnName": "created_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "contentType",
            "columnName": "content_type",
            "affinity": "TEXT",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_virtual_groups_provider_id_content_type",
            "unique": false,
            "columnNames": [
              "provider_id",
              "content_type"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_virtual_groups_provider_id_content_type` ON `${TABLE_NAME}` (`provider_id`, `content_type`)"
          },
          {
            "name": "index_virtual_groups_position",
            "unique": false,
            "columnNames": [
              "position"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_virtual_groups_position` ON `${TABLE_NAME}` (`position`)"
          },
          {
            "name": "index_virtual_groups_content_type",
            "unique": false,
            "columnNames": [
              "content_type"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_virtual_groups_content_type` ON `${TABLE_NAME}` (`content_type`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "playback_history",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `content_id` INTEGER NOT NULL, `content_type` TEXT NOT NULL, `provider_id` INTEGER NOT NULL, `title` TEXT NOT NULL, `poster_url` TEXT, `stream_url` TEXT NOT NULL, `resume_position_ms` INTEGER NOT NULL, `total_duration_ms` INTEGER NOT NULL, `last_watched_at` INTEGER NOT NULL, `watch_count` INTEGER NOT NULL, `watched_status` TEXT NOT NULL, `series_id` INTEGER, `season_number` INTEGER, `episode_number` INTEGER, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "contentId",
            "columnName": "content_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "contentType",
            "columnName": "content_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "title",
            "columnName": "title",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "posterUrl",
            "columnName": "poster_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "streamUrl",
            "columnName": "stream_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "resumePositionMs",
            "columnName": "resume_position_ms",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "totalDurationMs",
            "columnName": "total_duration_ms",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastWatchedAt",
            "columnName": "last_watched_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "watchCount",
            "columnName": "watch_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "watchedStatus",
            "columnName": "watched_status",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "seriesId",
            "columnName": "series_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "seasonNumber",
            "columnName": "season_number",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "episodeNumber",
            "columnName": "episode_number",
            "affinity": "INTEGER"
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_playback_history_content_id_content_type_provider_id",
            "unique": true,
            "columnNames": [
              "content_id",
              "content_type",
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_playback_history_content_id_content_type_provider_id` ON `${TABLE_NAME}` (`content_id`, `content_type`, `provider_id`)"
          },
          {
            "name": "index_playback_history_last_watched_at",
            "unique": false,
            "columnNames": [
              "last_watched_at"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_playback_history_last_watched_at` ON `${TABLE_NAME}` (`last_watched_at`)"
          },
          {
            "name": "index_playback_history_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_playback_history_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_playback_history_provider_id_content_type_content_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "content_type",
              "content_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_playback_history_provider_id_content_type_content_id` ON `${TABLE_NAME}` (`provider_id`, `content_type`, `content_id`)"
          },
          {
            "name": "index_playback_history_provider_id_content_type_last_watched_at",
            "unique": false,
            "columnNames": [
              "provider_id",
              "content_type",
              "last_watched_at"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_playback_history_provider_id_content_type_last_watched_at` ON `${TABLE_NAME}` (`provider_id`, `content_type`, `last_watched_at`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "tmdb_identity",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`tmdb_id` INTEGER NOT NULL, `content_type` TEXT NOT NULL, `canonical_provider_id` INTEGER NOT NULL, `first_seen_at` INTEGER NOT NULL, PRIMARY KEY(`tmdb_id`, `content_type`), FOREIGN KEY(`canonical_provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "tmdbId",
            "columnName": "tmdb_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "contentType",
            "columnName": "content_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "canonicalProviderId",
            "columnName": "canonical_provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "firstSeenAt",
            "columnName": "first_seen_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "tmdb_id",
            "content_type"
          ]
        },
        "indices": [
          {
            "name": "index_tmdb_identity_content_type",
            "unique": false,
            "columnNames": [
              "content_type"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_tmdb_identity_content_type` ON `${TABLE_NAME}` (`content_type`)"
          },
          {
            "name": "index_tmdb_identity_canonical_provider_id",
            "unique": false,
            "columnNames": [
              "canonical_provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_tmdb_identity_canonical_provider_id` ON `${TABLE_NAME}` (`canonical_provider_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "canonical_provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "search_history",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `query` TEXT NOT NULL, `content_scope` TEXT NOT NULL, `provider_id` INTEGER NOT NULL, `used_at` INTEGER NOT NULL, `use_count` INTEGER NOT NULL)",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "query",
            "columnName": "query",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "contentScope",
            "columnName": "content_scope",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "usedAt",
            "columnName": "used_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "useCount",
            "columnName": "use_count",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_search_history_content_scope_provider_id_used_at",
            "unique": false,
            "columnNames": [
              "content_scope",
              "provider_id",
              "used_at"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_search_history_content_scope_provider_id_used_at` ON `${TABLE_NAME}` (`content_scope`, `provider_id`, `used_at`)"
          },
          {
            "name": "index_search_history_used_at",
            "unique": false,
            "columnNames": [
              "used_at"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_search_history_used_at` ON `${TABLE_NAME}` (`used_at`)"
          },
          {
            "name": "index_search_history_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_search_history_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_search_history_query_content_scope_provider_id",
            "unique": true,
            "columnNames": [
              "query",
              "content_scope",
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_search_history_query_content_scope_provider_id` ON `${TABLE_NAME}` (`query`, `content_scope`, `provider_id`)"
          }
        ]
      },
      {
        "tableName": "sync_metadata",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`provider_id` INTEGER NOT NULL, `last_live_sync` INTEGER NOT NULL, `last_live_success` INTEGER NOT NULL, `last_movie_sync` INTEGER NOT NULL, `last_series_sync` INTEGER NOT NULL, `last_series_success` INTEGER NOT NULL, `last_epg_sync` INTEGER NOT NULL, `last_epg_success` INTEGER NOT NULL, `last_movie_attempt` INTEGER NOT NULL, `last_movie_success` INTEGER NOT NULL, `last_movie_partial` INTEGER NOT NULL, `live_count` INTEGER NOT NULL, `movie_count` INTEGER NOT NULL, `series_count` INTEGER NOT NULL, `epg_count` INTEGER NOT NULL, `last_sync_status` TEXT NOT NULL, `movie_sync_mode` TEXT NOT NULL, `movie_warnings_count` INTEGER NOT NULL, `movie_catalog_stale` INTEGER NOT NULL, `live_avoid_full_until` INTEGER NOT NULL, `movie_avoid_full_until` INTEGER NOT NULL, `series_avoid_full_until` INTEGER NOT NULL, `live_sequential_failures_remembered` INTEGER NOT NULL, `live_healthy_sync_streak` INTEGER NOT NULL, `movie_parallel_failures_remembered` INTEGER NOT NULL, `movie_healthy_sync_streak` INTEGER NOT NULL, `series_sequential_failures_remembered` INTEGER NOT NULL, `series_healthy_sync_streak` INTEGER NOT NULL, PRIMARY KEY(`provider_id`), FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastLiveSync",
            "columnName": "last_live_sync",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastLiveSuccess",
            "columnName": "last_live_success",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastMovieSync",
            "columnName": "last_movie_sync",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastSeriesSync",
            "columnName": "last_series_sync",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastSeriesSuccess",
            "columnName": "last_series_success",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastEpgSync",
            "columnName": "last_epg_sync",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastEpgSuccess",
            "columnName": "last_epg_success",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastMovieAttempt",
            "columnName": "last_movie_attempt",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastMovieSuccess",
            "columnName": "last_movie_success",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastMoviePartial",
            "columnName": "last_movie_partial",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "liveCount",
            "columnName": "live_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "movieCount",
            "columnName": "movie_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "seriesCount",
            "columnName": "series_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "epgCount",
            "columnName": "epg_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastSyncStatus",
            "columnName": "last_sync_status",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "movieSyncMode",
            "columnName": "movie_sync_mode",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "movieWarningsCount",
            "columnName": "movie_warnings_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "movieCatalogStale",
            "columnName": "movie_catalog_stale",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "liveAvoidFullUntil",
            "columnName": "live_avoid_full_until",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "movieAvoidFullUntil",
            "columnName": "movie_avoid_full_until",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "seriesAvoidFullUntil",
            "columnName": "series_avoid_full_until",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "liveSequentialFailuresRemembered",
            "columnName": "live_sequential_failures_remembered",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "liveHealthySyncStreak",
            "columnName": "live_healthy_sync_streak",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "movieParallelFailuresRemembered",
            "columnName": "movie_parallel_failures_remembered",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "movieHealthySyncStreak",
            "columnName": "movie_healthy_sync_streak",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "seriesSequentialFailuresRemembered",
            "columnName": "series_sequential_failures_remembered",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "seriesHealthySyncStreak",
            "columnName": "series_healthy_sync_streak",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "provider_id"
          ]
        },
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "movie_category_hydration",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`provider_id` INTEGER NOT NULL, `category_id` INTEGER NOT NULL, `last_hydrated_at` INTEGER NOT NULL, `item_count` INTEGER NOT NULL, `last_status` TEXT NOT NULL, `last_error` TEXT, `last_loaded_page` INTEGER NOT NULL, `last_attempted_page` INTEGER NOT NULL, `last_successful_page` INTEGER NOT NULL, `total_pages` INTEGER NOT NULL, `is_complete` INTEGER NOT NULL, `page_size` INTEGER NOT NULL, `retry_after_ms` INTEGER NOT NULL, `failure_count` INTEGER NOT NULL, `retry_budget_remaining` INTEGER NOT NULL, `last_page_fingerprint` TEXT, PRIMARY KEY(`provider_id`, `category_id`), FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "categoryId",
            "columnName": "category_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastHydratedAt",
            "columnName": "last_hydrated_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "itemCount",
            "columnName": "item_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastStatus",
            "columnName": "last_status",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "lastError",
            "columnName": "last_error",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "lastLoadedPage",
            "columnName": "last_loaded_page",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastAttemptedPage",
            "columnName": "last_attempted_page",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastSuccessfulPage",
            "columnName": "last_successful_page",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "totalPages",
            "columnName": "total_pages",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isComplete",
            "columnName": "is_complete",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "pageSize",
            "columnName": "page_size",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "retryAfterMs",
            "columnName": "retry_after_ms",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "failureCount",
            "columnName": "failure_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "retryBudgetRemaining",
            "columnName": "retry_budget_remaining",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastPageFingerprint",
            "columnName": "last_page_fingerprint",
            "affinity": "TEXT"
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "provider_id",
            "category_id"
          ]
        },
        "indices": [
          {
            "name": "index_movie_category_hydration_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_movie_category_hydration_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "series_category_hydration",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`provider_id` INTEGER NOT NULL, `category_id` INTEGER NOT NULL, `last_hydrated_at` INTEGER NOT NULL, `item_count` INTEGER NOT NULL, `last_status` TEXT NOT NULL, `last_error` TEXT, `last_loaded_page` INTEGER NOT NULL, `last_attempted_page` INTEGER NOT NULL, `last_successful_page` INTEGER NOT NULL, `total_pages` INTEGER NOT NULL, `is_complete` INTEGER NOT NULL, `page_size` INTEGER NOT NULL, `retry_after_ms` INTEGER NOT NULL, `failure_count` INTEGER NOT NULL, `retry_budget_remaining` INTEGER NOT NULL, `last_page_fingerprint` TEXT, PRIMARY KEY(`provider_id`, `category_id`), FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "categoryId",
            "columnName": "category_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastHydratedAt",
            "columnName": "last_hydrated_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "itemCount",
            "columnName": "item_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastStatus",
            "columnName": "last_status",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "lastError",
            "columnName": "last_error",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "lastLoadedPage",
            "columnName": "last_loaded_page",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastAttemptedPage",
            "columnName": "last_attempted_page",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastSuccessfulPage",
            "columnName": "last_successful_page",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "totalPages",
            "columnName": "total_pages",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isComplete",
            "columnName": "is_complete",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "pageSize",
            "columnName": "page_size",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "retryAfterMs",
            "columnName": "retry_after_ms",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "failureCount",
            "columnName": "failure_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "retryBudgetRemaining",
            "columnName": "retry_budget_remaining",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastPageFingerprint",
            "columnName": "last_page_fingerprint",
            "affinity": "TEXT"
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "provider_id",
            "category_id"
          ]
        },
        "indices": [
          {
            "name": "index_series_category_hydration_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_series_category_hydration_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "epg_sources",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NOT NULL, `url` TEXT NOT NULL, `enabled` INTEGER NOT NULL, `last_refresh_at` INTEGER NOT NULL, `last_success_at` INTEGER NOT NULL, `last_error` TEXT, `priority` INTEGER NOT NULL, `created_at` INTEGER NOT NULL, `updated_at` INTEGER NOT NULL, `etag` TEXT, `last_modified_header` TEXT)",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "url",
            "columnName": "url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "enabled",
            "columnName": "enabled",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastRefreshAt",
            "columnName": "last_refresh_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastSuccessAt",
            "columnName": "last_success_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastError",
            "columnName": "last_error",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "priority",
            "columnName": "priority",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "createdAt",
            "columnName": "created_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "updatedAt",
            "columnName": "updated_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "etag",
            "columnName": "etag",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "lastModifiedHeader",
            "columnName": "last_modified_header",
            "affinity": "TEXT"
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_epg_sources_url",
            "unique": true,
            "columnNames": [
              "url"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_epg_sources_url` ON `${TABLE_NAME}` (`url`)"
          }
        ]
      },
      {
        "tableName": "provider_epg_sources",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `provider_id` INTEGER NOT NULL, `epg_source_id` INTEGER NOT NULL, `priority` INTEGER NOT NULL, `enabled` INTEGER NOT NULL, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`epg_source_id`) REFERENCES `epg_sources`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "epgSourceId",
            "columnName": "epg_source_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "priority",
            "columnName": "priority",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "enabled",
            "columnName": "enabled",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_provider_epg_sources_provider_id_epg_source_id",
            "unique": true,
            "columnNames": [
              "provider_id",
              "epg_source_id"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_provider_epg_sources_provider_id_epg_source_id` ON `${TABLE_NAME}` (`provider_id`, `epg_source_id`)"
          },
          {
            "name": "index_provider_epg_sources_epg_source_id",
            "unique": false,
            "columnNames": [
              "epg_source_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_provider_epg_sources_epg_source_id` ON `${TABLE_NAME}` (`epg_source_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          },
          {
            "table": "epg_sources",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "epg_source_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "epg_channels",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `epg_source_id` INTEGER NOT NULL, `xmltv_channel_id` TEXT NOT NULL, `display_name` TEXT NOT NULL, `normalized_name` TEXT NOT NULL, `icon_url` TEXT, FOREIGN KEY(`epg_source_id`) REFERENCES `epg_sources`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "epgSourceId",
            "columnName": "epg_source_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "xmltvChannelId",
            "columnName": "xmltv_channel_id",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "displayName",
            "columnName": "display_name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "normalizedName",
            "columnName": "normalized_name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "iconUrl",
            "columnName": "icon_url",
            "affinity": "TEXT"
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_epg_channels_epg_source_id_xmltv_channel_id",
            "unique": true,
            "columnNames": [
              "epg_source_id",
              "xmltv_channel_id"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_epg_channels_epg_source_id_xmltv_channel_id` ON `${TABLE_NAME}` (`epg_source_id`, `xmltv_channel_id`)"
          },
          {
            "name": "index_epg_channels_epg_source_id",
            "unique": false,
            "columnNames": [
              "epg_source_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_epg_channels_epg_source_id` ON `${TABLE_NAME}` (`epg_source_id`)"
          },
          {
            "name": "index_epg_channels_normalized_name",
            "unique": false,
            "columnNames": [
              "normalized_name"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_epg_channels_normalized_name` ON `${TABLE_NAME}` (`normalized_name`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "epg_sources",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "epg_source_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "epg_programmes",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `epg_source_id` INTEGER NOT NULL, `xmltv_channel_id` TEXT NOT NULL, `start_time` INTEGER NOT NULL, `end_time` INTEGER NOT NULL, `title` TEXT NOT NULL, `subtitle` TEXT, `description` TEXT NOT NULL, `category` TEXT, `lang` TEXT NOT NULL, `rating` TEXT, `image_url` TEXT, `episode_info` TEXT, FOREIGN KEY(`epg_source_id`) REFERENCES `epg_sources`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "epgSourceId",
            "columnName": "epg_source_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "xmltvChannelId",
            "columnName": "xmltv_channel_id",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "startTime",
            "columnName": "start_time",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "endTime",
            "columnName": "end_time",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "title",
            "columnName": "title",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "subtitle",
            "columnName": "subtitle",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "description",
            "columnName": "description",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "category",
            "columnName": "category",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "lang",
            "columnName": "lang",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "rating",
            "columnName": "rating",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "imageUrl",
            "columnName": "image_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "episodeInfo",
            "columnName": "episode_info",
            "affinity": "TEXT"
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_epg_programmes_epg_source_id_xmltv_channel_id_start_time",
            "unique": false,
            "columnNames": [
              "epg_source_id",
              "xmltv_channel_id",
              "start_time"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_epg_programmes_epg_source_id_xmltv_channel_id_start_time` ON `${TABLE_NAME}` (`epg_source_id`, `xmltv_channel_id`, `start_time`)"
          },
          {
            "name": "index_epg_programmes_epg_source_id_xmltv_channel_id_start_time_end_time",
            "unique": true,
            "columnNames": [
              "epg_source_id",
              "xmltv_channel_id",
              "start_time",
              "end_time"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_epg_programmes_epg_source_id_xmltv_channel_id_start_time_end_time` ON `${TABLE_NAME}` (`epg_source_id`, `xmltv_channel_id`, `start_time`, `end_time`)"
          },
          {
            "name": "index_epg_programmes_epg_source_id",
            "unique": false,
            "columnNames": [
              "epg_source_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_epg_programmes_epg_source_id` ON `${TABLE_NAME}` (`epg_source_id`)"
          },
          {
            "name": "index_epg_programmes_start_time",
            "unique": false,
            "columnNames": [
              "start_time"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_epg_programmes_start_time` ON `${TABLE_NAME}` (`start_time`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "epg_sources",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "epg_source_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "channel_epg_mappings",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `provider_channel_id` INTEGER NOT NULL, `provider_id` INTEGER NOT NULL, `source_type` TEXT NOT NULL, `epg_source_id` INTEGER, `xmltv_channel_id` TEXT, `match_type` TEXT, `confidence` REAL NOT NULL, `matched_at` INTEGER NOT NULL, `failed_attempts` INTEGER NOT NULL, `source` TEXT, `is_manual_override` INTEGER NOT NULL, `updated_at` INTEGER NOT NULL, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerChannelId",
            "columnName": "provider_channel_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "sourceType",
            "columnName": "source_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "epgSourceId",
            "columnName": "epg_source_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "xmltvChannelId",
            "columnName": "xmltv_channel_id",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "matchType",
            "columnName": "match_type",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "confidence",
            "columnName": "confidence",
            "affinity": "REAL",
            "notNull": true
          },
          {
            "fieldPath": "matchedAt",
            "columnName": "matched_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "failedAttempts",
            "columnName": "failed_attempts",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "source",
            "columnName": "source",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "isManualOverride",
            "columnName": "is_manual_override",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "updatedAt",
            "columnName": "updated_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_channel_epg_mappings_provider_id_provider_channel_id",
            "unique": true,
            "columnNames": [
              "provider_id",
              "provider_channel_id"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_channel_epg_mappings_provider_id_provider_channel_id` ON `${TABLE_NAME}` (`provider_id`, `provider_channel_id`)"
          },
          {
            "name": "index_channel_epg_mappings_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_channel_epg_mappings_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "combined_m3u_profiles",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NOT NULL, `enabled` INTEGER NOT NULL, `created_at` INTEGER NOT NULL, `updated_at` INTEGER NOT NULL)",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "enabled",
            "columnName": "enabled",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "createdAt",
            "columnName": "created_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "updatedAt",
            "columnName": "updated_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        }
      },
      {
        "tableName": "combined_m3u_profile_members",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `profile_id` INTEGER NOT NULL, `provider_id` INTEGER NOT NULL, `priority` INTEGER NOT NULL, `enabled` INTEGER NOT NULL, FOREIGN KEY(`profile_id`) REFERENCES `combined_m3u_profiles`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "profileId",
            "columnName": "profile_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "priority",
            "columnName": "priority",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "enabled",
            "columnName": "enabled",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_combined_m3u_profile_members_profile_id",
            "unique": false,
            "columnNames": [
              "profile_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_combined_m3u_profile_members_profile_id` ON `${TABLE_NAME}` (`profile_id`)"
          },
          {
            "name": "index_combined_m3u_profile_members_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_combined_m3u_profile_members_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_combined_m3u_profile_members_profile_id_provider_id",
            "unique": true,
            "columnNames": [
              "profile_id",
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_combined_m3u_profile_members_profile_id_provider_id` ON `${TABLE_NAME}` (`profile_id`, `provider_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "combined_m3u_profiles",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "profile_id"
            ],
            "referencedColumns": [
              "id"
            ]
          },
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "recording_schedules",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `provider_id` INTEGER NOT NULL, `channel_id` INTEGER NOT NULL, `channel_name` TEXT NOT NULL, `stream_url` TEXT NOT NULL, `program_title` TEXT, `requested_start_ms` INTEGER NOT NULL, `requested_end_ms` INTEGER NOT NULL, `recurrence` TEXT NOT NULL, `recurring_rule_id` TEXT, `enabled` INTEGER NOT NULL, `is_manual` INTEGER NOT NULL, `priority` INTEGER NOT NULL, `created_at` INTEGER NOT NULL, `updated_at` INTEGER NOT NULL, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "channelId",
            "columnName": "channel_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "channelName",
            "columnName": "channel_name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "streamUrl",
            "columnName": "stream_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "programTitle",
            "columnName": "program_title",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "requestedStartMs",
            "columnName": "requested_start_ms",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "requestedEndMs",
            "columnName": "requested_end_ms",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "recurrence",
            "columnName": "recurrence",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "recurringRuleId",
            "columnName": "recurring_rule_id",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "enabled",
            "columnName": "enabled",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isManual",
            "columnName": "is_manual",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "priority",
            "columnName": "priority",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "createdAt",
            "columnName": "created_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "updatedAt",
            "columnName": "updated_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_recording_schedules_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_recording_schedules_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_recording_schedules_enabled_requested_start_ms",
            "unique": false,
            "columnNames": [
              "enabled",
              "requested_start_ms"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_recording_schedules_enabled_requested_start_ms` ON `${TABLE_NAME}` (`enabled`, `requested_start_ms`)"
          },
          {
            "name": "index_recording_schedules_recurring_rule_id",
            "unique": false,
            "columnNames": [
              "recurring_rule_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_recording_schedules_recurring_rule_id` ON `${TABLE_NAME}` (`recurring_rule_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "recording_runs",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `schedule_id` INTEGER NOT NULL, `provider_id` INTEGER NOT NULL, `channel_id` INTEGER NOT NULL, `channel_name` TEXT NOT NULL, `stream_url` TEXT NOT NULL, `program_title` TEXT, `scheduled_start_ms` INTEGER NOT NULL, `scheduled_end_ms` INTEGER NOT NULL, `recurrence` TEXT NOT NULL, `recurring_rule_id` TEXT, `status` TEXT NOT NULL, `source_type` TEXT NOT NULL, `resolved_url` TEXT, `headers_json` TEXT NOT NULL, `user_agent` TEXT, `expiration_time` INTEGER, `provider_label` TEXT, `output_uri` TEXT, `output_display_path` TEXT, `bytes_written` INTEGER NOT NULL, `average_throughput_bps` INTEGER NOT NULL, `retry_count` INTEGER NOT NULL, `last_progress_at_ms` INTEGER, `failure_category` TEXT NOT NULL, `failure_reason` TEXT, `terminal_at_ms` INTEGER, `started_at_ms` INTEGER, `ended_at_ms` INTEGER, `schedule_enabled` INTEGER NOT NULL, `priority` INTEGER NOT NULL, `alarm_start_at_ms` INTEGER, `alarm_stop_at_ms` INTEGER, `created_at` INTEGER NOT NULL, `updated_at` INTEGER NOT NULL, PRIMARY KEY(`id`), FOREIGN KEY(`schedule_id`) REFERENCES `recording_schedules`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "scheduleId",
            "columnName": "schedule_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "channelId",
            "columnName": "channel_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "channelName",
            "columnName": "channel_name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "streamUrl",
            "columnName": "stream_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "programTitle",
            "columnName": "program_title",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "scheduledStartMs",
            "columnName": "scheduled_start_ms",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "scheduledEndMs",
            "columnName": "scheduled_end_ms",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "recurrence",
            "columnName": "recurrence",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "recurringRuleId",
            "columnName": "recurring_rule_id",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "status",
            "columnName": "status",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "sourceType",
            "columnName": "source_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "resolvedUrl",
            "columnName": "resolved_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "headersJson",
            "columnName": "headers_json",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "userAgent",
            "columnName": "user_agent",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "expirationTime",
            "columnName": "expiration_time",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "providerLabel",
            "columnName": "provider_label",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "outputUri",
            "columnName": "output_uri",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "outputDisplayPath",
            "columnName": "output_display_path",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "bytesWritten",
            "columnName": "bytes_written",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "averageThroughputBytesPerSecond",
            "columnName": "average_throughput_bps",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "retryCount",
            "columnName": "retry_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastProgressAtMs",
            "columnName": "last_progress_at_ms",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "failureCategory",
            "columnName": "failure_category",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "failureReason",
            "columnName": "failure_reason",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "terminalAtMs",
            "columnName": "terminal_at_ms",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "startedAtMs",
            "columnName": "started_at_ms",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "endedAtMs",
            "columnName": "ended_at_ms",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "scheduleEnabled",
            "columnName": "schedule_enabled",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "priority",
            "columnName": "priority",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "alarmStartAtMs",
            "columnName": "alarm_start_at_ms",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "alarmStopAtMs",
            "columnName": "alarm_stop_at_ms",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "createdAt",
            "columnName": "created_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "updatedAt",
            "columnName": "updated_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_recording_runs_schedule_id",
            "unique": false,
            "columnNames": [
              "schedule_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_recording_runs_schedule_id` ON `${TABLE_NAME}` (`schedule_id`)"
          },
          {
            "name": "index_recording_runs_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_recording_runs_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_recording_runs_status_scheduled_start_ms",
            "unique": false,
            "columnNames": [
              "status",
              "scheduled_start_ms"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_recording_runs_status_scheduled_start_ms` ON `${TABLE_NAME}` (`status`, `scheduled_start_ms`)"
          },
          {
            "name": "index_recording_runs_alarm_start_at_ms",
            "unique": false,
            "columnNames": [
              "alarm_start_at_ms"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_recording_runs_alarm_start_at_ms` ON `${TABLE_NAME}` (`alarm_start_at_ms`)"
          },
          {
            "name": "index_recording_runs_alarm_stop_at_ms",
            "unique": false,
            "columnNames": [
              "alarm_stop_at_ms"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_recording_runs_alarm_stop_at_ms` ON `${TABLE_NAME}` (`alarm_stop_at_ms`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "recording_schedules",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "schedule_id"
            ],
            "referencedColumns": [
              "id"
            ]
          },
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "program_reminders",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `provider_id` INTEGER NOT NULL, `channel_id` TEXT NOT NULL, `channel_name` TEXT NOT NULL, `program_title` TEXT NOT NULL, `program_start_time` INTEGER NOT NULL, `remind_at` INTEGER NOT NULL, `lead_time_minutes` INTEGER NOT NULL, `is_dismissed` INTEGER NOT NULL, `notified_at` INTEGER, `created_at` INTEGER NOT NULL, FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "channelId",
            "columnName": "channel_id",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "channelName",
            "columnName": "channel_name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "programTitle",
            "columnName": "program_title",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "programStartTime",
            "columnName": "program_start_time",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "remindAt",
            "columnName": "remind_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "leadTimeMinutes",
            "columnName": "lead_time_minutes",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isDismissed",
            "columnName": "is_dismissed",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "notifiedAt",
            "columnName": "notified_at",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "createdAt",
            "columnName": "created_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_program_reminders_provider_id_remind_at",
            "unique": false,
            "columnNames": [
              "provider_id",
              "remind_at"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_program_reminders_provider_id_remind_at` ON `${TABLE_NAME}` (`provider_id`, `remind_at`)"
          },
          {
            "name": "index_program_reminders_is_dismissed_notified_at_remind_at",
            "unique": false,
            "columnNames": [
              "is_dismissed",
              "notified_at",
              "remind_at"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_program_reminders_is_dismissed_notified_at_remind_at` ON `${TABLE_NAME}` (`is_dismissed`, `notified_at`, `remind_at`)"
          },
          {
            "name": "index_program_reminders_provider_id_channel_id_program_start_time",
            "unique": false,
            "columnNames": [
              "provider_id",
              "channel_id",
              "program_start_time"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_program_reminders_provider_id_channel_id_program_start_time` ON `${TABLE_NAME}` (`provider_id`, `channel_id`, `program_start_time`)"
          },
          {
            "name": "index_program_reminders_provider_id_channel_id_program_title_program_start_time",
            "unique": true,
            "columnNames": [
              "provider_id",
              "channel_id",
              "program_title",
              "program_start_time"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_program_reminders_provider_id_channel_id_program_title_program_start_time` ON `${TABLE_NAME}` (`provider_id`, `channel_id`, `program_title`, `program_start_time`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "recording_storage",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `tree_uri` TEXT, `display_name` TEXT, `output_directory` TEXT, `available_bytes` INTEGER, `is_writable` INTEGER NOT NULL, `file_name_pattern` TEXT NOT NULL, `retention_days` INTEGER, `max_simultaneous_recordings` INTEGER NOT NULL, `updated_at` INTEGER NOT NULL, PRIMARY KEY(`id`))",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "treeUri",
            "columnName": "tree_uri",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "displayName",
            "columnName": "display_name",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "outputDirectory",
            "columnName": "output_directory",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "availableBytes",
            "columnName": "available_bytes",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "isWritable",
            "columnName": "is_writable",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "fileNamePattern",
            "columnName": "file_name_pattern",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "retentionDays",
            "columnName": "retention_days",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "maxSimultaneousRecordings",
            "columnName": "max_simultaneous_recordings",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "updatedAt",
            "columnName": "updated_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "id"
          ]
        }
      },
      {
        "tableName": "playback_compatibility_records",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `device_fingerprint` TEXT NOT NULL, `device_model` TEXT NOT NULL, `android_sdk` INTEGER NOT NULL, `stream_type` TEXT NOT NULL, `video_mime_type` TEXT NOT NULL, `resolution_bucket` TEXT NOT NULL, `decoder_name` TEXT NOT NULL, `surface_type` TEXT NOT NULL, `failure_type` TEXT NOT NULL, `last_failed_at` INTEGER NOT NULL, `last_succeeded_at` INTEGER NOT NULL, `failure_count` INTEGER NOT NULL, `success_count` INTEGER NOT NULL)",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "deviceFingerprint",
            "columnName": "device_fingerprint",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "deviceModel",
            "columnName": "device_model",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "androidSdk",
            "columnName": "android_sdk",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "streamType",
            "columnName": "stream_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "videoMimeType",
            "columnName": "video_mime_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "resolutionBucket",
            "columnName": "resolution_bucket",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "decoderName",
            "columnName": "decoder_name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "surfaceType",
            "columnName": "surface_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "failureType",
            "columnName": "failure_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "lastFailedAt",
            "columnName": "last_failed_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastSucceededAt",
            "columnName": "last_succeeded_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "failureCount",
            "columnName": "failure_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "successCount",
            "columnName": "success_count",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": true,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_playback_compatibility_records_device_fingerprint_stream_type_video_mime_type_resolution_bucket_decoder_name_surface_type",
            "unique": true,
            "columnNames": [
              "device_fingerprint",
              "stream_type",
              "video_mime_type",
              "resolution_bucket",
              "decoder_name",
              "surface_type"
            ],
            "orders": [],
            "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_playback_compatibility_records_device_fingerprint_stream_type_video_mime_type_resolution_bucket_decoder_name_surface_type` ON `${TABLE_NAME}` (`device_fingerprint`, `stream_type`, `video_mime_type`, `resolution_bucket`, `decoder_name`, `surface_type`)"
          },
          {
            "name": "index_playback_compatibility_records_device_fingerprint_stream_type_video_mime_type_resolution_bucket",
            "unique": false,
            "columnNames": [
              "device_fingerprint",
              "stream_type",
              "video_mime_type",
              "resolution_bucket"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_playback_compatibility_records_device_fingerprint_stream_type_video_mime_type_resolution_bucket` ON `${TABLE_NAME}` (`device_fingerprint`, `stream_type`, `video_mime_type`, `resolution_bucket`)"
          },
          {
            "name": "index_playback_compatibility_records_last_failed_at",
            "unique": false,
            "columnNames": [
              "last_failed_at"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_playback_compatibility_records_last_failed_at` ON `${TABLE_NAME}` (`last_failed_at`)"
          },
          {
            "name": "index_playback_compatibility_records_last_succeeded_at",
            "unique": false,
            "columnNames": [
              "last_succeeded_at"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_playback_compatibility_records_last_succeeded_at` ON `${TABLE_NAME}` (`last_succeeded_at`)"
          }
        ]
      },
      {
        "tableName": "xtream_content_index",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`provider_id` INTEGER NOT NULL, `content_type` TEXT NOT NULL, `remote_id` TEXT NOT NULL, `local_content_id` INTEGER, `name` TEXT NOT NULL, `category_id` INTEGER, `category_name` TEXT, `image_url` TEXT, `container_extension` TEXT, `rating` REAL NOT NULL, `added_at` INTEGER NOT NULL, `remote_updated_at` INTEGER NOT NULL, `is_adult` INTEGER NOT NULL, `indexed_at` INTEGER NOT NULL, `detail_hydrated_at` INTEGER NOT NULL, `stale_state` TEXT NOT NULL, `error_state` TEXT, `sync_fingerprint` TEXT NOT NULL, PRIMARY KEY(`provider_id`, `content_type`, `remote_id`), FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "contentType",
            "columnName": "content_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "remoteId",
            "columnName": "remote_id",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "localContentId",
            "columnName": "local_content_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "name",
            "columnName": "name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "categoryId",
            "columnName": "category_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "categoryName",
            "columnName": "category_name",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "imageUrl",
            "columnName": "image_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "containerExtension",
            "columnName": "container_extension",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "rating",
            "columnName": "rating",
            "affinity": "REAL",
            "notNull": true
          },
          {
            "fieldPath": "addedAt",
            "columnName": "added_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "remoteUpdatedAt",
            "columnName": "remote_updated_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "isAdult",
            "columnName": "is_adult",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "indexedAt",
            "columnName": "indexed_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "detailHydratedAt",
            "columnName": "detail_hydrated_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "staleState",
            "columnName": "stale_state",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "errorState",
            "columnName": "error_state",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "syncFingerprint",
            "columnName": "sync_fingerprint",
            "affinity": "TEXT",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "provider_id",
            "content_type",
            "remote_id"
          ]
        },
        "indices": [
          {
            "name": "index_xtream_content_index_provider_id_content_type",
            "unique": false,
            "columnNames": [
              "provider_id",
              "content_type"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_content_index_provider_id_content_type` ON `${TABLE_NAME}` (`provider_id`, `content_type`)"
          },
          {
            "name": "index_xtream_content_index_provider_id_content_type_category_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "content_type",
              "category_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_content_index_provider_id_content_type_category_id` ON `${TABLE_NAME}` (`provider_id`, `content_type`, `category_id`)"
          },
          {
            "name": "index_xtream_content_index_provider_id_content_type_name",
            "unique": false,
            "columnNames": [
              "provider_id",
              "content_type",
              "name"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_content_index_provider_id_content_type_name` ON `${TABLE_NAME}` (`provider_id`, `content_type`, `name`)"
          },
          {
            "name": "index_xtream_content_index_provider_id_content_type_local_content_id",
            "unique": false,
            "columnNames": [
              "provider_id",
              "content_type",
              "local_content_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_content_index_provider_id_content_type_local_content_id` ON `${TABLE_NAME}` (`provider_id`, `content_type`, `local_content_id`)"
          },
          {
            "name": "index_xtream_content_index_provider_id_indexed_at",
            "unique": false,
            "columnNames": [
              "provider_id",
              "indexed_at"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_content_index_provider_id_indexed_at` ON `${TABLE_NAME}` (`provider_id`, `indexed_at`)"
          },
          {
            "name": "index_xtream_content_index_stale_state",
            "unique": false,
            "columnNames": [
              "stale_state"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_content_index_stale_state` ON `${TABLE_NAME}` (`stale_state`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "xtream_index_jobs",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`provider_id` INTEGER NOT NULL, `section` TEXT NOT NULL, `state` TEXT NOT NULL, `total_categories` INTEGER NOT NULL, `completed_categories` INTEGER NOT NULL, `next_category_index` INTEGER NOT NULL, `failed_categories` INTEGER NOT NULL, `indexed_rows` INTEGER NOT NULL, `skipped_malformed_rows` INTEGER NOT NULL, `deleted_pruned_rows` INTEGER NOT NULL, `priority_category_id` INTEGER, `priority_requested_at` INTEGER NOT NULL, `last_error` TEXT, `last_attempt_at` INTEGER NOT NULL, `last_success_at` INTEGER NOT NULL, `updated_at` INTEGER NOT NULL, PRIMARY KEY(`provider_id`, `section`), FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "section",
            "columnName": "section",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "state",
            "columnName": "state",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "totalCategories",
            "columnName": "total_categories",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "completedCategories",
            "columnName": "completed_categories",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "nextCategoryIndex",
            "columnName": "next_category_index",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "failedCategories",
            "columnName": "failed_categories",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "indexedRows",
            "columnName": "indexed_rows",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "skippedMalformedRows",
            "columnName": "skipped_malformed_rows",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "deletedPrunedRows",
            "columnName": "deleted_pruned_rows",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "priorityCategoryId",
            "columnName": "priority_category_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "priorityRequestedAt",
            "columnName": "priority_requested_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastError",
            "columnName": "last_error",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "lastAttemptAt",
            "columnName": "last_attempt_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastSuccessAt",
            "columnName": "last_success_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "updatedAt",
            "columnName": "updated_at",
            "affinity": "INTEGER",
            "notNull": true
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "provider_id",
            "section"
          ]
        },
        "indices": [
          {
            "name": "index_xtream_index_jobs_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_index_jobs_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_xtream_index_jobs_section",
            "unique": false,
            "columnNames": [
              "section"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_index_jobs_section` ON `${TABLE_NAME}` (`section`)"
          },
          {
            "name": "index_xtream_index_jobs_state",
            "unique": false,
            "columnNames": [
              "state"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_index_jobs_state` ON `${TABLE_NAME}` (`state`)"
          },
          {
            "name": "index_xtream_index_jobs_updated_at",
            "unique": false,
            "columnNames": [
              "updated_at"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_index_jobs_updated_at` ON `${TABLE_NAME}` (`updated_at`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "xtream_live_onboarding_state",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`provider_id` INTEGER NOT NULL, `provider_type` TEXT NOT NULL, `content_type` TEXT NOT NULL, `phase` TEXT NOT NULL, `staged_session_id` INTEGER, `import_strategy` TEXT, `next_category_index` INTEGER NOT NULL, `accepted_row_count` INTEGER NOT NULL, `staged_flush_count` INTEGER NOT NULL, `sync_profile_tier` TEXT, `sync_profile_batch_size` INTEGER NOT NULL, `sync_profile_strategy` TEXT, `sync_profile_low_memory` INTEGER NOT NULL, `sync_profile_memory_class_mb` INTEGER NOT NULL, `sync_profile_available_mem_mb` INTEGER NOT NULL, `last_error` TEXT, `created_at` INTEGER NOT NULL, `updated_at` INTEGER NOT NULL, `completed_at` INTEGER, PRIMARY KEY(`provider_id`), FOREIGN KEY(`provider_id`) REFERENCES `providers`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
        "fields": [
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "providerType",
            "columnName": "provider_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "contentType",
            "columnName": "content_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "phase",
            "columnName": "phase",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "stagedSessionId",
            "columnName": "staged_session_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "importStrategy",
            "columnName": "import_strategy",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "nextCategoryIndex",
            "columnName": "next_category_index",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "acceptedRowCount",
            "columnName": "accepted_row_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "stagedFlushCount",
            "columnName": "staged_flush_count",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "syncProfileTier",
            "columnName": "sync_profile_tier",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "syncProfileBatchSize",
            "columnName": "sync_profile_batch_size",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "syncProfileStrategy",
            "columnName": "sync_profile_strategy",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "syncProfileLowMemory",
            "columnName": "sync_profile_low_memory",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "syncProfileMemoryClassMb",
            "columnName": "sync_profile_memory_class_mb",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "syncProfileAvailableMemMb",
            "columnName": "sync_profile_available_mem_mb",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "lastError",
            "columnName": "last_error",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "createdAt",
            "columnName": "created_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "updatedAt",
            "columnName": "updated_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "completedAt",
            "columnName": "completed_at",
            "affinity": "INTEGER"
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "provider_id"
          ]
        },
        "indices": [
          {
            "name": "index_xtream_live_onboarding_state_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_live_onboarding_state_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_xtream_live_onboarding_state_phase",
            "unique": false,
            "columnNames": [
              "phase"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_live_onboarding_state_phase` ON `${TABLE_NAME}` (`phase`)"
          },
          {
            "name": "index_xtream_live_onboarding_state_updated_at",
            "unique": false,
            "columnNames": [
              "updated_at"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_live_onboarding_state_updated_at` ON `${TABLE_NAME}` (`updated_at`)"
          },
          {
            "name": "index_xtream_live_onboarding_state_staged_session_id",
            "unique": false,
            "columnNames": [
              "staged_session_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_xtream_live_onboarding_state_staged_session_id` ON `${TABLE_NAME}` (`staged_session_id`)"
          }
        ],
        "foreignKeys": [
          {
            "table": "providers",
            "onDelete": "CASCADE",
            "onUpdate": "NO ACTION",
            "columns": [
              "provider_id"
            ],
            "referencedColumns": [
              "id"
            ]
          }
        ]
      },
      {
        "tableName": "downloads",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `provider_id` INTEGER NOT NULL, `content_type` TEXT NOT NULL, `content_id` INTEGER NOT NULL, `content_name` TEXT NOT NULL, `stream_url` TEXT NOT NULL, `poster_url` TEXT, `output_uri` TEXT, `output_display_path` TEXT, `status` TEXT NOT NULL, `bytes_written` INTEGER NOT NULL, `total_bytes` INTEGER, `created_at` INTEGER NOT NULL, `completed_at` INTEGER, `failure_reason` TEXT, `series_id` INTEGER, `season_number` INTEGER, `episode_number` INTEGER, PRIMARY KEY(`id`))",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "providerId",
            "columnName": "provider_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "contentType",
            "columnName": "content_type",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "contentId",
            "columnName": "content_id",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "contentName",
            "columnName": "content_name",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "streamUrl",
            "columnName": "stream_url",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "posterUrl",
            "columnName": "poster_url",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "outputUri",
            "columnName": "output_uri",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "outputDisplayPath",
            "columnName": "output_display_path",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "status",
            "columnName": "status",
            "affinity": "TEXT",
            "notNull": true
          },
          {
            "fieldPath": "bytesWritten",
            "columnName": "bytes_written",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "totalBytes",
            "columnName": "total_bytes",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "createdAt",
            "columnName": "created_at",
            "affinity": "INTEGER",
            "notNull": true
          },
          {
            "fieldPath": "completedAt",
            "columnName": "completed_at",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "failureReason",
            "columnName": "failure_reason",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "seriesId",
            "columnName": "series_id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "seasonNumber",
            "columnName": "season_number",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "episodeNumber",
            "columnName": "episode_number",
            "affinity": "INTEGER"
          }
        ],
        "primaryKey": {
          "autoGenerate": false,
          "columnNames": [
            "id"
          ]
        },
        "indices": [
          {
            "name": "index_downloads_status",
            "unique": false,
            "columnNames": [
              "status"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_downloads_status` ON `${TABLE_NAME}` (`status`)"
          },
          {
            "name": "index_downloads_provider_id",
            "unique": false,
            "columnNames": [
              "provider_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_downloads_provider_id` ON `${TABLE_NAME}` (`provider_id`)"
          },
          {
            "name": "index_downloads_content_type_content_id",
            "unique": false,
            "columnNames": [
              "content_type",
              "content_id"
            ],
            "orders": [],
            "createSql": "CREATE INDEX IF NOT EXISTS `index_downloads_content_type_content_id` ON `${TABLE_NAME}` (`content_type`, `content_id`)"
          }
        ]
      }
    ],
    "setupQueries": [
      "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'cd42876a63eda2aafefca411ce09024c')"
    ]
  }
}