{ "formatVersion": 1, "database": { "version": 1, "identityHash": "5d8a5f2a676148b233470aedd5d05cee", "entities": [ { "tableName": "settings", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`key` TEXT NOT NULL, `value` TEXT NOT NULL, PRIMARY KEY(`key`))", "fields": [ { "fieldPath": "key", "columnName": "key", "affinity": "TEXT", "notNull": true }, { "fieldPath": "value", "columnName": "value", "affinity": "TEXT", "notNull": true } ], "primaryKey": { "autoGenerate": false, "columnNames": [ "key" ] } }, { "tableName": "folders", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `tree_uri` TEXT NOT NULL, `display_name` TEXT NOT NULL, `added_at` INTEGER NOT NULL, `last_scanned_at` INTEGER, `last_scan_status` TEXT NOT NULL, `last_scan_error` TEXT)", "fields": [ { "fieldPath": "id", "columnName": "id", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "treeUri", "columnName": "tree_uri", "affinity": "TEXT", "notNull": true }, { "fieldPath": "displayName", "columnName": "display_name", "affinity": "TEXT", "notNull": true }, { "fieldPath": "addedAt", "columnName": "added_at", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "lastScannedAt", "columnName": "last_scanned_at", "affinity": "INTEGER" }, { "fieldPath": "lastScanStatus", "columnName": "last_scan_status", "affinity": "TEXT", "notNull": true }, { "fieldPath": "lastScanError", "columnName": "last_scan_error", "affinity": "TEXT" } ], "primaryKey": { "autoGenerate": true, "columnNames": [ "id" ] }, "indices": [ { "name": "index_folders_tree_uri", "unique": true, "columnNames": [ "tree_uri" ], "orders": [], "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_folders_tree_uri` ON `${TABLE_NAME}` (`tree_uri`)" } ] }, { "tableName": "playlists", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `name` TEXT NOT NULL, `created_at` INTEGER NOT NULL, `updated_at` INTEGER NOT NULL, `last_played_at` INTEGER, `kind` TEXT NOT NULL, `dynamic_rules_json` TEXT, `remote_source_id` INTEGER, `remote_playlist_id` TEXT, `sync_uid` TEXT)", "fields": [ { "fieldPath": "id", "columnName": "id", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "name", "columnName": "name", "affinity": "TEXT", "notNull": true }, { "fieldPath": "createdAt", "columnName": "created_at", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "updatedAt", "columnName": "updated_at", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "lastPlayedAt", "columnName": "last_played_at", "affinity": "INTEGER" }, { "fieldPath": "kind", "columnName": "kind", "affinity": "TEXT", "notNull": true }, { "fieldPath": "dynamicRulesJson", "columnName": "dynamic_rules_json", "affinity": "TEXT" }, { "fieldPath": "remoteSourceId", "columnName": "remote_source_id", "affinity": "INTEGER" }, { "fieldPath": "remotePlaylistId", "columnName": "remote_playlist_id", "affinity": "TEXT" }, { "fieldPath": "syncUid", "columnName": "sync_uid", "affinity": "TEXT" } ], "primaryKey": { "autoGenerate": true, "columnNames": [ "id" ] }, "indices": [ { "name": "index_playlists_sync_uid", "unique": true, "columnNames": [ "sync_uid" ], "orders": [], "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_playlists_sync_uid` ON `${TABLE_NAME}` (`sync_uid`)" }, { "name": "index_playlists_remote_source_id_remote_playlist_id", "unique": true, "columnNames": [ "remote_source_id", "remote_playlist_id" ], "orders": [], "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_playlists_remote_source_id_remote_playlist_id` ON `${TABLE_NAME}` (`remote_source_id`, `remote_playlist_id`)" }, { "name": "index_playlists_kind", "unique": false, "columnNames": [ "kind" ], "orders": [], "createSql": "CREATE INDEX IF NOT EXISTS `index_playlists_kind` ON `${TABLE_NAME}` (`kind`)" } ] }, { "tableName": "playlist_tracks", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `playlist_id` INTEGER NOT NULL, `track_path` TEXT NOT NULL, `position` INTEGER NOT NULL, `added_at` INTEGER NOT NULL, `fallback_title` TEXT, `fallback_artist` TEXT, `fallback_album` TEXT, FOREIGN KEY(`playlist_id`) REFERENCES `playlists`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )", "fields": [ { "fieldPath": "id", "columnName": "id", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "playlistId", "columnName": "playlist_id", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "trackPath", "columnName": "track_path", "affinity": "TEXT", "notNull": true }, { "fieldPath": "position", "columnName": "position", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "addedAt", "columnName": "added_at", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "fallbackTitle", "columnName": "fallback_title", "affinity": "TEXT" }, { "fieldPath": "fallbackArtist", "columnName": "fallback_artist", "affinity": "TEXT" }, { "fieldPath": "fallbackAlbum", "columnName": "fallback_album", "affinity": "TEXT" } ], "primaryKey": { "autoGenerate": true, "columnNames": [ "id" ] }, "indices": [ { "name": "index_playlist_tracks_playlist_id_position", "unique": false, "columnNames": [ "playlist_id", "position" ], "orders": [], "createSql": "CREATE INDEX IF NOT EXISTS `index_playlist_tracks_playlist_id_position` ON `${TABLE_NAME}` (`playlist_id`, `position`)" }, { "name": "index_playlist_tracks_playlist_id_track_path", "unique": true, "columnNames": [ "playlist_id", "track_path" ], "orders": [], "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_playlist_tracks_playlist_id_track_path` ON `${TABLE_NAME}` (`playlist_id`, `track_path`)" } ], "foreignKeys": [ { "table": "playlists", "onDelete": "CASCADE", "onUpdate": "NO ACTION", "columns": [ "playlist_id" ], "referencedColumns": [ "id" ] } ] }, { "tableName": "favorites", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`track_path` TEXT NOT NULL, `added_at` INTEGER NOT NULL, PRIMARY KEY(`track_path`))", "fields": [ { "fieldPath": "trackPath", "columnName": "track_path", "affinity": "TEXT", "notNull": true }, { "fieldPath": "addedAt", "columnName": "added_at", "affinity": "INTEGER", "notNull": true } ], "primaryKey": { "autoGenerate": false, "columnNames": [ "track_path" ] } }, { "tableName": "playback_history", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`track_path` TEXT NOT NULL, `last_played_at` INTEGER NOT NULL, `play_count` INTEGER NOT NULL, PRIMARY KEY(`track_path`))", "fields": [ { "fieldPath": "trackPath", "columnName": "track_path", "affinity": "TEXT", "notNull": true }, { "fieldPath": "lastPlayedAt", "columnName": "last_played_at", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "playCount", "columnName": "play_count", "affinity": "INTEGER", "notNull": true } ], "primaryKey": { "autoGenerate": false, "columnNames": [ "track_path" ] }, "indices": [ { "name": "index_playback_history_last_played_at", "unique": false, "columnNames": [ "last_played_at" ], "orders": [], "createSql": "CREATE INDEX IF NOT EXISTS `index_playback_history_last_played_at` ON `${TABLE_NAME}` (`last_played_at`)" } ] }, { "tableName": "remote_sources", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `type` TEXT NOT NULL, `name` TEXT NOT NULL, `base_url` TEXT NOT NULL, `username` TEXT NOT NULL, `enabled` INTEGER NOT NULL, `last_status` TEXT NOT NULL, `last_error` TEXT, `last_sync_at` INTEGER, `last_checked_at` INTEGER, `created_at` INTEGER NOT NULL, `updated_at` INTEGER NOT NULL)", "fields": [ { "fieldPath": "id", "columnName": "id", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "type", "columnName": "type", "affinity": "TEXT", "notNull": true }, { "fieldPath": "name", "columnName": "name", "affinity": "TEXT", "notNull": true }, { "fieldPath": "baseUrl", "columnName": "base_url", "affinity": "TEXT", "notNull": true }, { "fieldPath": "username", "columnName": "username", "affinity": "TEXT", "notNull": true }, { "fieldPath": "enabled", "columnName": "enabled", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "lastStatus", "columnName": "last_status", "affinity": "TEXT", "notNull": true }, { "fieldPath": "lastError", "columnName": "last_error", "affinity": "TEXT" }, { "fieldPath": "lastSyncAt", "columnName": "last_sync_at", "affinity": "INTEGER" }, { "fieldPath": "lastCheckedAt", "columnName": "last_checked_at", "affinity": "INTEGER" }, { "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_remote_sources_type_name", "unique": false, "columnNames": [ "type", "name" ], "orders": [], "createSql": "CREATE INDEX IF NOT EXISTS `index_remote_sources_type_name` ON `${TABLE_NAME}` (`type`, `name`)" } ] }, { "tableName": "favorite_tombstones", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`sync_key` TEXT NOT NULL, `deleted_at` INTEGER NOT NULL, PRIMARY KEY(`sync_key`))", "fields": [ { "fieldPath": "syncKey", "columnName": "sync_key", "affinity": "TEXT", "notNull": true }, { "fieldPath": "deletedAt", "columnName": "deleted_at", "affinity": "INTEGER", "notNull": true } ], "primaryKey": { "autoGenerate": false, "columnNames": [ "sync_key" ] } }, { "tableName": "favorite_sync_pending", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`sync_key` TEXT NOT NULL, `title` TEXT NOT NULL, `artist` TEXT NOT NULL, `album` TEXT NOT NULL, `added_at` INTEGER NOT NULL, PRIMARY KEY(`sync_key`))", "fields": [ { "fieldPath": "syncKey", "columnName": "sync_key", "affinity": "TEXT", "notNull": true }, { "fieldPath": "title", "columnName": "title", "affinity": "TEXT", "notNull": true }, { "fieldPath": "artist", "columnName": "artist", "affinity": "TEXT", "notNull": true }, { "fieldPath": "album", "columnName": "album", "affinity": "TEXT", "notNull": true }, { "fieldPath": "addedAt", "columnName": "added_at", "affinity": "INTEGER", "notNull": true } ], "primaryKey": { "autoGenerate": false, "columnNames": [ "sync_key" ] } }, { "tableName": "playlist_tombstones", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`sync_uid` TEXT NOT NULL, `deleted_at` INTEGER NOT NULL, PRIMARY KEY(`sync_uid`))", "fields": [ { "fieldPath": "syncUid", "columnName": "sync_uid", "affinity": "TEXT", "notNull": true }, { "fieldPath": "deletedAt", "columnName": "deleted_at", "affinity": "INTEGER", "notNull": true } ], "primaryKey": { "autoGenerate": false, "columnNames": [ "sync_uid" ] } }, { "tableName": "playlist_sync_state", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`sync_uid` TEXT NOT NULL, `local_updated_at` INTEGER NOT NULL, `remote_updated_at` INTEGER NOT NULL, PRIMARY KEY(`sync_uid`))", "fields": [ { "fieldPath": "syncUid", "columnName": "sync_uid", "affinity": "TEXT", "notNull": true }, { "fieldPath": "localUpdatedAt", "columnName": "local_updated_at", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "remoteUpdatedAt", "columnName": "remote_updated_at", "affinity": "INTEGER", "notNull": true } ], "primaryKey": { "autoGenerate": false, "columnNames": [ "sync_uid" ] } }, { "tableName": "playback_sessions", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `context_json` TEXT NOT NULL, `anchor_path` TEXT, `shuffle_seed` INTEGER, `active_position` INTEGER NOT NULL, `created_at` INTEGER NOT NULL, `updated_at` INTEGER NOT NULL, PRIMARY KEY(`id`))", "fields": [ { "fieldPath": "id", "columnName": "id", "affinity": "TEXT", "notNull": true }, { "fieldPath": "contextJson", "columnName": "context_json", "affinity": "TEXT", "notNull": true }, { "fieldPath": "anchorPath", "columnName": "anchor_path", "affinity": "TEXT" }, { "fieldPath": "shuffleSeed", "columnName": "shuffle_seed", "affinity": "INTEGER" }, { "fieldPath": "activePosition", "columnName": "active_position", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "createdAt", "columnName": "created_at", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "updatedAt", "columnName": "updated_at", "affinity": "INTEGER", "notNull": true } ], "primaryKey": { "autoGenerate": false, "columnNames": [ "id" ] } }, { "tableName": "playback_queue_entries", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`session_id` TEXT NOT NULL, `position` INTEGER NOT NULL, `track_path` TEXT NOT NULL, PRIMARY KEY(`session_id`, `position`), FOREIGN KEY(`session_id`) REFERENCES `playback_sessions`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )", "fields": [ { "fieldPath": "sessionId", "columnName": "session_id", "affinity": "TEXT", "notNull": true }, { "fieldPath": "position", "columnName": "position", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "trackPath", "columnName": "track_path", "affinity": "TEXT", "notNull": true } ], "primaryKey": { "autoGenerate": false, "columnNames": [ "session_id", "position" ] }, "indices": [ { "name": "index_playback_queue_entries_session_id_track_path", "unique": false, "columnNames": [ "session_id", "track_path" ], "orders": [], "createSql": "CREATE INDEX IF NOT EXISTS `index_playback_queue_entries_session_id_track_path` ON `${TABLE_NAME}` (`session_id`, `track_path`)" } ], "foreignKeys": [ { "table": "playback_sessions", "onDelete": "CASCADE", "onUpdate": "NO ACTION", "columns": [ "session_id" ], "referencedColumns": [ "id" ] } ] }, { "tableName": "playback_original_queue_entries", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`session_id` TEXT NOT NULL, `position` INTEGER NOT NULL, `track_path` TEXT NOT NULL, PRIMARY KEY(`session_id`, `position`), FOREIGN KEY(`session_id`) REFERENCES `playback_sessions`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )", "fields": [ { "fieldPath": "sessionId", "columnName": "session_id", "affinity": "TEXT", "notNull": true }, { "fieldPath": "position", "columnName": "position", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "trackPath", "columnName": "track_path", "affinity": "TEXT", "notNull": true } ], "primaryKey": { "autoGenerate": false, "columnNames": [ "session_id", "position" ] }, "indices": [ { "name": "index_playback_original_queue_entries_session_id_track_path", "unique": false, "columnNames": [ "session_id", "track_path" ], "orders": [], "createSql": "CREATE INDEX IF NOT EXISTS `index_playback_original_queue_entries_session_id_track_path` ON `${TABLE_NAME}` (`session_id`, `track_path`)" } ], "foreignKeys": [ { "table": "playback_sessions", "onDelete": "CASCADE", "onUpdate": "NO ACTION", "columns": [ "session_id" ], "referencedColumns": [ "id" ] } ] }, { "tableName": "snapshot_metadata", "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `last_snapshot_at` INTEGER NOT NULL, PRIMARY KEY(`id`))", "fields": [ { "fieldPath": "id", "columnName": "id", "affinity": "INTEGER", "notNull": true }, { "fieldPath": "lastSnapshotAt", "columnName": "last_snapshot_at", "affinity": "INTEGER", "notNull": true } ], "primaryKey": { "autoGenerate": false, "columnNames": [ "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, '5d8a5f2a676148b233470aedd5d05cee')" ] } }