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.
156 lines
6.3 KiB
JSON
156 lines
6.3 KiB
JSON
|
1 month ago
|
{
|
||
|
|
"db_name": "PostgreSQL",
|
||
|
|
"query": "\n WITH RECURSIVE playback_playlist_ancestors AS (\n SELECT DISTINCT\n rps.room_id AS playback_room_id,\n p.id,\n p.parent_id,\n p.creator_id,\n p.source_provider,\n 0 AS depth\n FROM room_playback_state rps\n LEFT JOIN media m\n ON m.id = rps.playing_media_id\n AND m.room_id = rps.room_id\n AND m.deleted_at IS NULL\n CROSS JOIN LATERAL (\n VALUES (rps.playing_playlist_id), (m.playlist_id)\n ) source(playlist_id)\n JOIN playlists p\n ON p.id = source.playlist_id\n AND p.room_id = rps.room_id\n AND p.deleted_at IS NULL\n UNION ALL\n SELECT ancestors.playback_room_id,\n parent.id,\n parent.parent_id,\n parent.creator_id,\n parent.source_provider,\n ancestors.depth + 1\n FROM playback_playlist_ancestors ancestors\n JOIN playlists parent\n ON parent.id = ancestors.parent_id\n AND parent.room_id = ancestors.playback_room_id\n WHERE parent.deleted_at IS NULL\n AND ancestors.depth < 50\n ),\n impacted_rooms AS (\n SELECT DISTINCT rps.room_id\n FROM room_playback_state rps\n LEFT JOIN media m\n ON m.id = rps.playing_media_id\n AND m.room_id = rps.room_id\n WHERE m.creator_id = $1\n OR EXISTS (\n SELECT 1\n FROM playback_playlist_ancestors ancestor\n WHERE ancestor.playback_room_id = rps.room_id\n AND ancestor.creator_id = $1\n AND ancestor.source_provider IS NOT NULL\n )\n )\n SELECT rps.room_id AS \"room_id!: RoomId\",\n rps.playing_media_id AS \"playing_media_id?: MediaId\",\n rps.playing_playlist_id AS \"playing_playlist_id?: PlaylistId\",\n rps.target AS \"target?: crate::models::ProviderTarget\",\n rps.current_progress_id,\n rps.history_cursor_id,\n COALESCE(progress.\"position\", 0.0) AS \"position!\",\n rps.speed AS \"speed!\",\n rps.is_playing AS \"is_playing!\",\n rps.playback_generation AS \"playback_generation!\",\n rps.updated_at AS \"updated_at!\",\n rps.version AS \"version!\"\n FROM room_playback_state rps\n JOIN impacted_rooms impacted ON impacted.room_id = rps.room_id\n LEFT JOIN room_playback_progress progress ON progress.id = rps.current_progress_id\n FOR UPDATE OF rps\n ",
|
||
|
|
"describe": {
|
||
|
|
"columns": [
|
||
|
|
{
|
||
|
|
"ordinal": 0,
|
||
|
|
"name": "room_id!: RoomId",
|
||
|
|
"type_info": "Int8",
|
||
|
|
"origin": {
|
||
|
|
"Table": {
|
||
|
|
"table": "room_playback_state",
|
||
|
|
"name": "room_id"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"ordinal": 1,
|
||
|
|
"name": "playing_media_id?: MediaId",
|
||
|
|
"type_info": "Int8",
|
||
|
|
"origin": {
|
||
|
|
"Table": {
|
||
|
|
"table": "room_playback_state",
|
||
|
|
"name": "playing_media_id"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"ordinal": 2,
|
||
|
|
"name": "playing_playlist_id?: PlaylistId",
|
||
|
|
"type_info": "Int8",
|
||
|
|
"origin": {
|
||
|
|
"Table": {
|
||
|
|
"table": "room_playback_state",
|
||
|
|
"name": "playing_playlist_id"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"ordinal": 3,
|
||
|
|
"name": "target?: crate::models::ProviderTarget",
|
||
|
|
"type_info": "Jsonb",
|
||
|
|
"origin": {
|
||
|
|
"Table": {
|
||
|
|
"table": "room_playback_state",
|
||
|
|
"name": "target"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"ordinal": 4,
|
||
|
|
"name": "current_progress_id",
|
||
|
|
"type_info": "Int8",
|
||
|
|
"origin": {
|
||
|
|
"Table": {
|
||
|
|
"table": "room_playback_state",
|
||
|
|
"name": "current_progress_id"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"ordinal": 5,
|
||
|
|
"name": "history_cursor_id",
|
||
|
|
"type_info": "Int8",
|
||
|
|
"origin": {
|
||
|
|
"Table": {
|
||
|
|
"table": "room_playback_state",
|
||
|
|
"name": "history_cursor_id"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"ordinal": 6,
|
||
|
|
"name": "position!",
|
||
|
|
"type_info": "Float8",
|
||
|
|
"origin": "Expression"
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"ordinal": 7,
|
||
|
|
"name": "speed!",
|
||
|
|
"type_info": "Float8",
|
||
|
|
"origin": {
|
||
|
|
"Table": {
|
||
|
|
"table": "room_playback_state",
|
||
|
|
"name": "speed"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"ordinal": 8,
|
||
|
|
"name": "is_playing!",
|
||
|
|
"type_info": "Bool",
|
||
|
|
"origin": {
|
||
|
|
"Table": {
|
||
|
|
"table": "room_playback_state",
|
||
|
|
"name": "is_playing"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"ordinal": 9,
|
||
|
|
"name": "playback_generation!",
|
||
|
|
"type_info": "Int8",
|
||
|
|
"origin": {
|
||
|
|
"Table": {
|
||
|
|
"table": "room_playback_state",
|
||
|
|
"name": "playback_generation"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"ordinal": 10,
|
||
|
|
"name": "updated_at!",
|
||
|
|
"type_info": "Timestamptz",
|
||
|
|
"origin": {
|
||
|
|
"Table": {
|
||
|
|
"table": "room_playback_state",
|
||
|
|
"name": "updated_at"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"ordinal": 11,
|
||
|
|
"name": "version!",
|
||
|
|
"type_info": "Int8",
|
||
|
|
"origin": {
|
||
|
|
"Table": {
|
||
|
|
"table": "room_playback_state",
|
||
|
|
"name": "version"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"parameters": {
|
||
|
|
"Left": [
|
||
|
|
"Int8"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"nullable": [
|
||
|
|
false,
|
||
|
|
true,
|
||
|
|
true,
|
||
|
|
true,
|
||
|
|
true,
|
||
|
|
true,
|
||
|
|
null,
|
||
|
|
false,
|
||
|
|
false,
|
||
|
|
false,
|
||
|
|
false,
|
||
|
|
false
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"hash": "4f0baeafae8341916fdcf39cc13636e69b614091d54f3165c52f84aa4f37d3f2"
|
||
|
|
}
|