mirror of https://github.com/synctv-org/synctv
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
341 lines
12 KiB
JSON
341 lines
12 KiB
JSON
{
|
|
"db_name": "PostgreSQL",
|
|
"query": "\n WITH claimed AS (\n SELECT metadata.room_id,\n metadata.media_id,\n metadata.playlist_id,\n metadata.target_hash\n FROM playback_source_metadata metadata\n JOIN room_playback_state state\n ON state.room_id = metadata.room_id\n AND state.playing_media_id IS NOT DISTINCT FROM metadata.media_id\n AND state.playing_playlist_id IS NOT DISTINCT FROM metadata.playlist_id\n JOIN room_playback_progress progress\n ON progress.id = state.current_progress_id\n AND progress.target_hash = metadata.target_hash\n WHERE state.room_id = ANY($5)\n AND (\n metadata.duration_status = ANY($1::smallint[])\n OR (\n metadata.duration_status = $2\n AND metadata.next_retry_at <= NOW()\n )\n )\n AND state.is_playing = TRUE\n AND metadata.playback_kind = $6\n AND metadata.duration_seconds IS NULL\n AND (metadata.next_retry_at IS NULL OR metadata.next_retry_at <= NOW())\n ORDER BY metadata.updated_at ASC\n LIMIT $3\n FOR UPDATE OF metadata SKIP LOCKED\n ),\n updated AS (\n UPDATE playback_source_metadata metadata\n SET duration_status = $4,\n duration_error = NULL,\n next_retry_at = NOW() + INTERVAL '5 minutes',\n version = metadata.version + 1\n FROM claimed\n WHERE metadata.room_id = claimed.room_id\n AND metadata.media_id IS NOT DISTINCT FROM claimed.media_id\n AND metadata.playlist_id IS NOT DISTINCT FROM claimed.playlist_id\n AND metadata.target_hash = claimed.target_hash\n RETURNING metadata.room_id,\n metadata.media_id,\n metadata.playlist_id,\n metadata.target_hash,\n metadata.media_name,\n metadata.playlist_name,\n metadata.playback_kind,\n metadata.duration_seconds,\n metadata.duration_status,\n metadata.duration_source,\n metadata.duration_error,\n metadata.next_retry_at,\n metadata.created_at,\n metadata.updated_at,\n metadata.version\n )\n SELECT updated.room_id AS \"metadata_room_id!: RoomId\",\n updated.media_id AS \"metadata_media_id?: MediaId\",\n updated.playlist_id AS \"metadata_playlist_id?: PlaylistId\",\n updated.target_hash AS \"metadata_target_hash!\",\n updated.media_name AS metadata_media_name,\n updated.playlist_name AS metadata_playlist_name,\n updated.playback_kind AS \"metadata_playback_kind!: PlaybackKind\",\n updated.duration_seconds,\n updated.duration_status AS \"metadata_duration_status!: PlaybackDurationStatus\",\n updated.duration_source AS \"metadata_duration_source?: PlaybackDurationSource\",\n updated.duration_error,\n updated.next_retry_at,\n updated.created_at AS \"metadata_created_at!\",\n updated.updated_at AS \"metadata_updated_at!\",\n updated.version AS \"metadata_version!\",\n state.room_id AS \"state_room_id!: RoomId\",\n state.playing_media_id AS \"state_playing_media_id?: MediaId\",\n state.playing_playlist_id AS \"state_playing_playlist_id?: PlaylistId\",\n state.target AS \"state_target?: ProviderTarget\",\n state.current_progress_id AS state_current_progress_id,\n state.history_cursor_id AS state_history_cursor_id,\n COALESCE(progress.\"position\", 0.0) AS \"state_position!\",\n state.speed AS \"state_speed!\",\n state.is_playing AS \"state_is_playing!\",\n state.playback_generation AS \"state_playback_generation!\",\n state.updated_at AS \"state_updated_at!\",\n state.version AS \"state_version!\"\n FROM updated\n JOIN room_playback_state state\n ON state.room_id = updated.room_id\n AND state.playing_media_id IS NOT DISTINCT FROM updated.media_id\n AND state.playing_playlist_id IS NOT DISTINCT FROM updated.playlist_id\n JOIN room_playback_progress progress\n ON progress.id = state.current_progress_id\n AND progress.target_hash = updated.target_hash\n ",
|
|
"describe": {
|
|
"columns": [
|
|
{
|
|
"ordinal": 0,
|
|
"name": "metadata_room_id!: RoomId",
|
|
"type_info": "Int8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "room_id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 1,
|
|
"name": "metadata_media_id?: MediaId",
|
|
"type_info": "Int8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "media_id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 2,
|
|
"name": "metadata_playlist_id?: PlaylistId",
|
|
"type_info": "Int8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "playlist_id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 3,
|
|
"name": "metadata_target_hash!",
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "target_hash"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 4,
|
|
"name": "metadata_media_name",
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "media_name"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 5,
|
|
"name": "metadata_playlist_name",
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "playlist_name"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 6,
|
|
"name": "metadata_playback_kind!: PlaybackKind",
|
|
"type_info": "Int2",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "playback_kind"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 7,
|
|
"name": "duration_seconds",
|
|
"type_info": "Float8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "duration_seconds"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 8,
|
|
"name": "metadata_duration_status!: PlaybackDurationStatus",
|
|
"type_info": "Int2",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "duration_status"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 9,
|
|
"name": "metadata_duration_source?: PlaybackDurationSource",
|
|
"type_info": "Int2",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "duration_source"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 10,
|
|
"name": "duration_error",
|
|
"type_info": "Text",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "duration_error"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 11,
|
|
"name": "next_retry_at",
|
|
"type_info": "Timestamptz",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "next_retry_at"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 12,
|
|
"name": "metadata_created_at!",
|
|
"type_info": "Timestamptz",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "created_at"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 13,
|
|
"name": "metadata_updated_at!",
|
|
"type_info": "Timestamptz",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "updated_at"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 14,
|
|
"name": "metadata_version!",
|
|
"type_info": "Int8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "playback_source_metadata",
|
|
"name": "version"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 15,
|
|
"name": "state_room_id!: RoomId",
|
|
"type_info": "Int8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "room_playback_state",
|
|
"name": "room_id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 16,
|
|
"name": "state_playing_media_id?: MediaId",
|
|
"type_info": "Int8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "room_playback_state",
|
|
"name": "playing_media_id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 17,
|
|
"name": "state_playing_playlist_id?: PlaylistId",
|
|
"type_info": "Int8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "room_playback_state",
|
|
"name": "playing_playlist_id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 18,
|
|
"name": "state_target?: ProviderTarget",
|
|
"type_info": "Jsonb",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "room_playback_state",
|
|
"name": "target"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 19,
|
|
"name": "state_current_progress_id",
|
|
"type_info": "Int8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "room_playback_state",
|
|
"name": "current_progress_id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 20,
|
|
"name": "state_history_cursor_id",
|
|
"type_info": "Int8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "room_playback_state",
|
|
"name": "history_cursor_id"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 21,
|
|
"name": "state_position!",
|
|
"type_info": "Float8",
|
|
"origin": "Expression"
|
|
},
|
|
{
|
|
"ordinal": 22,
|
|
"name": "state_speed!",
|
|
"type_info": "Float8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "room_playback_state",
|
|
"name": "speed"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 23,
|
|
"name": "state_is_playing!",
|
|
"type_info": "Bool",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "room_playback_state",
|
|
"name": "is_playing"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 24,
|
|
"name": "state_playback_generation!",
|
|
"type_info": "Int8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "room_playback_state",
|
|
"name": "playback_generation"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 25,
|
|
"name": "state_updated_at!",
|
|
"type_info": "Timestamptz",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "room_playback_state",
|
|
"name": "updated_at"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"ordinal": 26,
|
|
"name": "state_version!",
|
|
"type_info": "Int8",
|
|
"origin": {
|
|
"Table": {
|
|
"table": "room_playback_state",
|
|
"name": "version"
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"parameters": {
|
|
"Left": [
|
|
"Int2Array",
|
|
"Int2",
|
|
"Int8",
|
|
"Int2",
|
|
"Int8Array",
|
|
"Int2"
|
|
]
|
|
},
|
|
"nullable": [
|
|
false,
|
|
true,
|
|
true,
|
|
false,
|
|
true,
|
|
true,
|
|
false,
|
|
true,
|
|
false,
|
|
true,
|
|
true,
|
|
true,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
true,
|
|
true,
|
|
true,
|
|
true,
|
|
true,
|
|
null,
|
|
false,
|
|
false,
|
|
false,
|
|
false,
|
|
false
|
|
]
|
|
},
|
|
"hash": "6542f0b2d0a22a0109d2185b29972350bb26101e5f95d73bd8388a5ed64b5d49"
|
|
}
|