package com.github.libretube.obj import com.github.libretube.db.obj.CustomInstance import com.github.libretube.db.obj.LocalPlaylistWithVideos import com.github.libretube.db.obj.LocalSubscription import com.github.libretube.db.obj.PlaylistBookmark import com.github.libretube.db.obj.SearchHistoryItem import com.github.libretube.db.obj.SubscriptionGroup import com.github.libretube.db.obj.WatchHistoryItem import com.github.libretube.db.obj.WatchPosition import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.Serializable import kotlinx.serialization.json.JsonNames @Serializable @OptIn(ExperimentalSerializationApi::class) data class BackupFile( // // some stuff for compatibility with Piped imports // val format: String = "Piped", val version: Int = 1, // // only compatible with LibreTube itself, database objects // var watchHistory: List? = emptyList(), var watchPositions: List? = emptyList(), var searchHistory: List? = emptyList(), var customInstances: List? = emptyList(), var playlistBookmarks: List? = emptyList(), // // Preferences, stored as a key value map // var preferences: List? = emptyList(), // // Database objects with compatibility for Piped imports/exports // @JsonNames("groups", "channelGroups") var groups: List? = emptyList(), @JsonNames("subscriptions", "localSubscriptions") var subscriptions: List? = emptyList(), // playlists are exported in two different formats because the formats differ too much unfortunately var localPlaylists: List? = emptyList(), var playlists: List? = emptyList() )