import SQLiteData struct Endpoint: Codable { let url: URL let status: Status enum Status: String, Codable { case loading, valid, error, unknown } } enum StoreKey: Int, CaseIterable, QueryBindable { // MARK: - Int case _version = 0 static let version = Typed(rawValue: ._version) case _deviceIdHash = 3 static let deviceIdHash = Typed(rawValue: ._deviceIdHash) case _backupTriggerDelay = 8 static let backupTriggerDelay = Typed(rawValue: ._backupTriggerDelay) case _tilesPerRow = 103 static let tilesPerRow = Typed(rawValue: ._tilesPerRow) case _groupAssetsBy = 105 static let groupAssetsBy = Typed(rawValue: ._groupAssetsBy) case _uploadErrorNotificationGracePeriod = 106 static let uploadErrorNotificationGracePeriod = Typed(rawValue: ._uploadErrorNotificationGracePeriod) case _thumbnailCacheSize = 110 static let thumbnailCacheSize = Typed(rawValue: ._thumbnailCacheSize) case _imageCacheSize = 111 static let imageCacheSize = Typed(rawValue: ._imageCacheSize) case _albumThumbnailCacheSize = 112 static let albumThumbnailCacheSize = Typed(rawValue: ._albumThumbnailCacheSize) case _selectedAlbumSortOrder = 113 static let selectedAlbumSortOrder = Typed(rawValue: ._selectedAlbumSortOrder) case _logLevel = 115 static let logLevel = Typed(rawValue: ._logLevel) case _mapRelativeDate = 119 static let mapRelativeDate = Typed(rawValue: ._mapRelativeDate) case _mapThemeMode = 124 static let mapThemeMode = Typed(rawValue: ._mapThemeMode) // MARK: - String case _assetETag = 1 static let assetETag = Typed(rawValue: ._assetETag) case _currentUser = 2 static let currentUser = Typed(rawValue: ._currentUser) case _deviceId = 4 static let deviceId = Typed(rawValue: ._deviceId) case _accessToken = 11 static let accessToken = Typed(rawValue: ._accessToken) case _serverEndpoint = 12 static let serverEndpoint = Typed(rawValue: ._serverEndpoint) case _sslClientCertData = 15 static let sslClientCertData = Typed(rawValue: ._sslClientCertData) case _sslClientPasswd = 16 static let sslClientPasswd = Typed(rawValue: ._sslClientPasswd) case _themeMode = 102 static let themeMode = Typed(rawValue: ._themeMode) case _customHeaders = 127 static let customHeaders = Typed<[String: String]>(rawValue: ._customHeaders) case _primaryColor = 128 static let primaryColor = Typed(rawValue: ._primaryColor) case _preferredWifiName = 133 static let preferredWifiName = Typed(rawValue: ._preferredWifiName) // MARK: - Endpoint case _externalEndpointList = 135 static let externalEndpointList = Typed<[Endpoint]>(rawValue: ._externalEndpointList) // MARK: - URL case _localEndpoint = 134 static let localEndpoint = Typed(rawValue: ._localEndpoint) case _serverUrl = 10 static let serverUrl = Typed(rawValue: ._serverUrl) // MARK: - Date case _backupFailedSince = 5 static let backupFailedSince = Typed(rawValue: ._backupFailedSince) // MARK: - Bool case _backupRequireWifi = 6 static let backupRequireWifi = Typed(rawValue: ._backupRequireWifi) case _backupRequireCharging = 7 static let backupRequireCharging = Typed(rawValue: ._backupRequireCharging) case _autoBackup = 13 static let autoBackup = Typed(rawValue: ._autoBackup) case _backgroundBackup = 14 static let backgroundBackup = Typed(rawValue: ._backgroundBackup) case _loadPreview = 100 static let loadPreview = Typed(rawValue: ._loadPreview) case _loadOriginal = 101 static let loadOriginal = Typed(rawValue: ._loadOriginal) case _dynamicLayout = 104 static let dynamicLayout = Typed(rawValue: ._dynamicLayout) case _backgroundBackupTotalProgress = 107 static let backgroundBackupTotalProgress = Typed(rawValue: ._backgroundBackupTotalProgress) case _backgroundBackupSingleProgress = 108 static let backgroundBackupSingleProgress = Typed(rawValue: ._backgroundBackupSingleProgress) case _storageIndicator = 109 static let storageIndicator = Typed(rawValue: ._storageIndicator) case _advancedTroubleshooting = 114 static let advancedTroubleshooting = Typed(rawValue: ._advancedTroubleshooting) case _preferRemoteImage = 116 static let preferRemoteImage = Typed(rawValue: ._preferRemoteImage) case _loopVideo = 117 static let loopVideo = Typed(rawValue: ._loopVideo) case _mapShowFavoriteOnly = 118 static let mapShowFavoriteOnly = Typed(rawValue: ._mapShowFavoriteOnly) case _selfSignedCert = 120 static let selfSignedCert = Typed(rawValue: ._selfSignedCert) case _mapIncludeArchived = 121 static let mapIncludeArchived = Typed(rawValue: ._mapIncludeArchived) case _ignoreIcloudAssets = 122 static let ignoreIcloudAssets = Typed(rawValue: ._ignoreIcloudAssets) case _selectedAlbumSortReverse = 123 static let selectedAlbumSortReverse = Typed(rawValue: ._selectedAlbumSortReverse) case _mapwithPartners = 125 static let mapwithPartners = Typed(rawValue: ._mapwithPartners) case _enableHapticFeedback = 126 static let enableHapticFeedback = Typed(rawValue: ._enableHapticFeedback) case _dynamicTheme = 129 static let dynamicTheme = Typed(rawValue: ._dynamicTheme) case _colorfulInterface = 130 static let colorfulInterface = Typed(rawValue: ._colorfulInterface) case _syncAlbums = 131 static let syncAlbums = Typed(rawValue: ._syncAlbums) case _autoEndpointSwitching = 132 static let autoEndpointSwitching = Typed(rawValue: ._autoEndpointSwitching) case _loadOriginalVideo = 136 static let loadOriginalVideo = Typed(rawValue: ._loadOriginalVideo) case _manageLocalMediaAndroid = 137 static let manageLocalMediaAndroid = Typed(rawValue: ._manageLocalMediaAndroid) case _readonlyModeEnabled = 138 static let readonlyModeEnabled = Typed(rawValue: ._readonlyModeEnabled) case _autoPlayVideo = 139 static let autoPlayVideo = Typed(rawValue: ._autoPlayVideo) case _photoManagerCustomFilter = 1000 static let photoManagerCustomFilter = Typed(rawValue: ._photoManagerCustomFilter) case _betaPromptShown = 1001 static let betaPromptShown = Typed(rawValue: ._betaPromptShown) case _betaTimeline = 1002 static let betaTimeline = Typed(rawValue: ._betaTimeline) case _enableBackup = 1003 static let enableBackup = Typed(rawValue: ._enableBackup) case _useWifiForUploadVideos = 1004 static let useWifiForUploadVideos = Typed(rawValue: ._useWifiForUploadVideos) case _useWifiForUploadPhotos = 1005 static let useWifiForUploadPhotos = Typed(rawValue: ._useWifiForUploadPhotos) case _needBetaMigration = 1006 static let needBetaMigration = Typed(rawValue: ._needBetaMigration) case _shouldResetSync = 1007 static let shouldResetSync = Typed(rawValue: ._shouldResetSync) struct Typed: RawRepresentable { let rawValue: StoreKey @_transparent init(rawValue value: StoreKey) { self.rawValue = value } } } enum BackupSelection: Int, QueryBindable { case selected, none, excluded } enum AvatarColor: Int, QueryBindable { case primary, pink, red, yellow, blue, green, purple, orange, gray, amber } enum AlbumUserRole: Int, QueryBindable { case editor, viewer } enum MemoryType: Int, QueryBindable { case onThisDay }