Files
2026-07-31 01:26:36 -04:00

1168 lines
36 KiB
JSON

{
"formatVersion": 1,
"database": {
"version": 4,
"identityHash": "cd0e38fafdedee0a01cb80d23a5c35b2",
"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": "listening_history_meta",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `generation` TEXT NOT NULL, `started_at` INTEGER, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "generation",
"columnName": "generation",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "startedAt",
"columnName": "started_at",
"affinity": "INTEGER"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
}
},
{
"tableName": "listening_sessions",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`session_key` TEXT NOT NULL, `generation` TEXT NOT NULL, `track_path` TEXT NOT NULL, `title` TEXT NOT NULL, `artist` TEXT NOT NULL, `artist_names_json` TEXT, `album` TEXT NOT NULL, `album_artist` TEXT, `album_artist_names_json` TEXT, `album_identity_key` TEXT NOT NULL, `artwork_hash` TEXT, `source_type` TEXT NOT NULL, `source_id` INTEGER, `artwork_source_id` TEXT, `duration_seconds` REAL NOT NULL, `started_at` INTEGER NOT NULL, `ended_at` INTEGER, `listened_seconds` REAL NOT NULL, `qualified_at` INTEGER, PRIMARY KEY(`session_key`))",
"fields": [
{
"fieldPath": "sessionKey",
"columnName": "session_key",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "generation",
"columnName": "generation",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "trackPath",
"columnName": "track_path",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "title",
"columnName": "title",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "artist",
"columnName": "artist",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "artistNamesJson",
"columnName": "artist_names_json",
"affinity": "TEXT"
},
{
"fieldPath": "album",
"columnName": "album",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "albumArtist",
"columnName": "album_artist",
"affinity": "TEXT"
},
{
"fieldPath": "albumArtistNamesJson",
"columnName": "album_artist_names_json",
"affinity": "TEXT"
},
{
"fieldPath": "albumIdentityKey",
"columnName": "album_identity_key",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "artworkHash",
"columnName": "artwork_hash",
"affinity": "TEXT"
},
{
"fieldPath": "sourceType",
"columnName": "source_type",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "sourceId",
"columnName": "source_id",
"affinity": "INTEGER"
},
{
"fieldPath": "artworkSourceId",
"columnName": "artwork_source_id",
"affinity": "TEXT"
},
{
"fieldPath": "durationSeconds",
"columnName": "duration_seconds",
"affinity": "REAL",
"notNull": true
},
{
"fieldPath": "startedAt",
"columnName": "started_at",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "endedAt",
"columnName": "ended_at",
"affinity": "INTEGER"
},
{
"fieldPath": "listenedSeconds",
"columnName": "listened_seconds",
"affinity": "REAL",
"notNull": true
},
{
"fieldPath": "qualifiedAt",
"columnName": "qualified_at",
"affinity": "INTEGER"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"session_key"
]
},
"indices": [
{
"name": "index_listening_sessions_generation_started_at",
"unique": false,
"columnNames": [
"generation",
"started_at"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_listening_sessions_generation_started_at` ON `${TABLE_NAME}` (`generation`, `started_at`)"
},
{
"name": "index_listening_sessions_generation_qualified_at",
"unique": false,
"columnNames": [
"generation",
"qualified_at"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_listening_sessions_generation_qualified_at` ON `${TABLE_NAME}` (`generation`, `qualified_at`)"
},
{
"name": "index_listening_sessions_track_path",
"unique": false,
"columnNames": [
"track_path"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_listening_sessions_track_path` ON `${TABLE_NAME}` (`track_path`)"
}
]
},
{
"tableName": "listening_segments",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`session_key` TEXT NOT NULL, `segment_key` TEXT NOT NULL, `generation` TEXT NOT NULL, `started_at` INTEGER NOT NULL, `last_observed_at` INTEGER NOT NULL, `ended_at` INTEGER, `listened_seconds` REAL NOT NULL, PRIMARY KEY(`session_key`, `segment_key`), FOREIGN KEY(`session_key`) REFERENCES `listening_sessions`(`session_key`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "sessionKey",
"columnName": "session_key",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "segmentKey",
"columnName": "segment_key",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "generation",
"columnName": "generation",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "startedAt",
"columnName": "started_at",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastObservedAt",
"columnName": "last_observed_at",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "endedAt",
"columnName": "ended_at",
"affinity": "INTEGER"
},
{
"fieldPath": "listenedSeconds",
"columnName": "listened_seconds",
"affinity": "REAL",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"session_key",
"segment_key"
]
},
"indices": [
{
"name": "index_listening_segments_generation_started_at_last_observed_at",
"unique": false,
"columnNames": [
"generation",
"started_at",
"last_observed_at"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_listening_segments_generation_started_at_last_observed_at` ON `${TABLE_NAME}` (`generation`, `started_at`, `last_observed_at`)"
},
{
"name": "index_listening_segments_session_key",
"unique": false,
"columnNames": [
"session_key"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_listening_segments_session_key` ON `${TABLE_NAME}` (`session_key`)"
}
],
"foreignKeys": [
{
"table": "listening_sessions",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"session_key"
],
"referencedColumns": [
"session_key"
]
}
]
},
{
"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, `queue_revision` INTEGER NOT NULL, `catalog_revision` INTEGER, `is_dirty` INTEGER NOT NULL, `next_entry_id` 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
},
{
"fieldPath": "queueRevision",
"columnName": "queue_revision",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "catalogRevision",
"columnName": "catalog_revision",
"affinity": "INTEGER"
},
{
"fieldPath": "isDirty",
"columnName": "is_dirty",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "nextEntryId",
"columnName": "next_entry_id",
"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, `entry_id` INTEGER NOT NULL, PRIMARY KEY(`session_id`, `entry_id`), 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
},
{
"fieldPath": "entryId",
"columnName": "entry_id",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"session_id",
"entry_id"
]
},
"indices": [
{
"name": "index_playback_queue_entries_session_id_position",
"unique": true,
"columnNames": [
"session_id",
"position"
],
"orders": [],
"createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_playback_queue_entries_session_id_position` ON `${TABLE_NAME}` (`session_id`, `position`)"
},
{
"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, `entry_id` INTEGER NOT NULL, PRIMARY KEY(`session_id`, `entry_id`), 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
},
{
"fieldPath": "entryId",
"columnName": "entry_id",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"session_id",
"entry_id"
]
},
"indices": [
{
"name": "index_playback_original_queue_entries_session_id_position",
"unique": true,
"columnNames": [
"session_id",
"position"
],
"orders": [],
"createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_playback_original_queue_entries_session_id_position` ON `${TABLE_NAME}` (`session_id`, `position`)"
},
{
"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"
]
}
},
{
"tableName": "artist_images",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`grouping_mode` TEXT NOT NULL, `artist_key` TEXT NOT NULL, `artist_name` TEXT NOT NULL, `manual_image_hash` TEXT, `automatic_image_hash` TEXT, `automatic_provider` TEXT, `automatic_source_id` TEXT, `lookup_status` TEXT NOT NULL, `retry_count` INTEGER NOT NULL, `last_attempt_at` INTEGER, `next_retry_at` INTEGER, `updated_at` INTEGER NOT NULL, PRIMARY KEY(`grouping_mode`, `artist_key`))",
"fields": [
{
"fieldPath": "groupingMode",
"columnName": "grouping_mode",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "artistKey",
"columnName": "artist_key",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "artistName",
"columnName": "artist_name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "manualImageHash",
"columnName": "manual_image_hash",
"affinity": "TEXT"
},
{
"fieldPath": "automaticImageHash",
"columnName": "automatic_image_hash",
"affinity": "TEXT"
},
{
"fieldPath": "automaticProvider",
"columnName": "automatic_provider",
"affinity": "TEXT"
},
{
"fieldPath": "automaticSourceId",
"columnName": "automatic_source_id",
"affinity": "TEXT"
},
{
"fieldPath": "lookupStatus",
"columnName": "lookup_status",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "retryCount",
"columnName": "retry_count",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "lastAttemptAt",
"columnName": "last_attempt_at",
"affinity": "INTEGER"
},
{
"fieldPath": "nextRetryAt",
"columnName": "next_retry_at",
"affinity": "INTEGER"
},
{
"fieldPath": "updatedAt",
"columnName": "updated_at",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"grouping_mode",
"artist_key"
]
},
"indices": [
{
"name": "index_artist_images_lookup_status_next_retry_at",
"unique": false,
"columnNames": [
"lookup_status",
"next_retry_at"
],
"orders": [],
"createSql": "CREATE INDEX IF NOT EXISTS `index_artist_images_lookup_status_next_retry_at` ON `${TABLE_NAME}` (`lookup_status`, `next_retry_at`)"
}
]
}
],
"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, 'cd0e38fafdedee0a01cb80d23a5c35b2')"
]
}
}