Update to support latest navidrome version
This commit is contained in:
@@ -3,7 +3,6 @@ use crate::subsonic::Subsonic;
|
||||
use crate::CONFIG;
|
||||
use chrono::Local;
|
||||
use sqlx::postgres::PgPool;
|
||||
use std::str::FromStr;
|
||||
use std::time::Duration;
|
||||
use tokio::time::{interval, MissedTickBehavior};
|
||||
use uuid::Uuid;
|
||||
@@ -67,7 +66,6 @@ async fn create_playlist(
|
||||
// Create playlist
|
||||
let playlist = media_client.as_ref().create_playlist(&new_name).await?;
|
||||
let uuid = Uuid::new_v4();
|
||||
let playlist_uuid = Uuid::from_str(&playlist.id)?;
|
||||
|
||||
sqlx::query!(
|
||||
r#"
|
||||
@@ -75,7 +73,7 @@ async fn create_playlist(
|
||||
VALUES ($1, $2, $3, $4, $5)
|
||||
"#,
|
||||
uuid,
|
||||
playlist_uuid,
|
||||
playlist.id,
|
||||
playlist_rule.playlist_size,
|
||||
playlist_rule.tracking_user,
|
||||
playlist_rule.tracking_type,
|
||||
|
||||
@@ -124,17 +124,10 @@ async fn update_playlist(
|
||||
}
|
||||
}
|
||||
|
||||
let playlist = media_client
|
||||
.as_ref()
|
||||
.get_playlist(playlist_id.to_string())
|
||||
.await?;
|
||||
let playlist = media_client.as_ref().get_playlist(&playlist_id).await?;
|
||||
media_client
|
||||
.as_ref()
|
||||
.update_playlist(
|
||||
playlist_id.to_string(),
|
||||
tracks,
|
||||
(0..playlist.song_count).collect(),
|
||||
)
|
||||
.update_playlist(playlist_id, tracks, (0..playlist.song_count).collect())
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
|
||||
28
src/main.rs
28
src/main.rs
@@ -15,9 +15,7 @@ use rocket::serde::json::{json, Json};
|
||||
use rocket::{get, post, routes, serde::json::Value as JsonValue, State};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::postgres::PgPool;
|
||||
use std::str::FromStr;
|
||||
use std::sync::{Arc, OnceLock};
|
||||
use uuid::Uuid;
|
||||
|
||||
pub static CONFIG: OnceLock<Config> = OnceLock::new();
|
||||
|
||||
@@ -140,23 +138,19 @@ async fn create_tracking_playlist(
|
||||
.create_playlist(create_playlist.playlist_name.clone())
|
||||
.await
|
||||
{
|
||||
Ok(created_playlist) => match Uuid::from_str(&created_playlist.id) {
|
||||
Ok(playlist_id) => {
|
||||
let partial = PartialTrackedPlaylist {
|
||||
playlist_id,
|
||||
playlist_size: create_playlist.playlist_size,
|
||||
tracking_user: create_playlist.tracking_user.clone(),
|
||||
tracking_type: create_playlist.tracking_type.clone(),
|
||||
};
|
||||
Ok(created_playlist) => {
|
||||
let partial = PartialTrackedPlaylist {
|
||||
playlist_id: created_playlist.id,
|
||||
playlist_size: create_playlist.playlist_size,
|
||||
tracking_user: create_playlist.tracking_user.clone(),
|
||||
tracking_type: create_playlist.tracking_type.clone(),
|
||||
};
|
||||
|
||||
match partial.record(pool.inner()).await {
|
||||
Ok(playlist) => Json(Response::Success(playlist)),
|
||||
Err(e) => Json(Response::Error(e.into())),
|
||||
}
|
||||
match partial.record(pool.inner()).await {
|
||||
Ok(playlist) => Json(Response::Success(playlist)),
|
||||
Err(e) => Json(Response::Error(e.into())),
|
||||
}
|
||||
|
||||
Err(e) => Json(Response::Error(e.into())),
|
||||
},
|
||||
}
|
||||
|
||||
Err(_) => Json(Response::Error(JsonError {
|
||||
error: "Couldn't create Subsonic playlist".to_string(),
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sqlx::error::Error;
|
||||
use sqlx::types::Uuid as UuidType;
|
||||
use sqlx::{Executor, Postgres};
|
||||
use uuid::Uuid;
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct PartialTrackedPlaylist {
|
||||
pub playlist_id: Uuid,
|
||||
pub playlist_id: String,
|
||||
pub playlist_size: i32,
|
||||
pub tracking_user: Option<String>,
|
||||
pub tracking_type: Option<String>,
|
||||
@@ -41,7 +40,7 @@ impl PartialTrackedPlaylist {
|
||||
#[derive(Serialize)]
|
||||
pub struct TrackedPlaylist {
|
||||
pub id: Uuid,
|
||||
pub playlist_id: Option<UuidType>,
|
||||
pub playlist_id: Option<String>,
|
||||
pub playlist_size: i32,
|
||||
pub tracking_user: String,
|
||||
pub tracking_type: String,
|
||||
|
||||
@@ -99,7 +99,10 @@ impl Subsonic {
|
||||
.song)
|
||||
}
|
||||
|
||||
pub async fn get_playlist(&self, playlist_id: String) -> Result<Playlist, SubsonicError> {
|
||||
pub async fn get_playlist(
|
||||
&self,
|
||||
playlist_id: impl ToString,
|
||||
) -> Result<Playlist, SubsonicError> {
|
||||
let auth_params = self.auth_params();
|
||||
|
||||
let get_params = [
|
||||
@@ -109,7 +112,7 @@ impl Subsonic {
|
||||
("v", String::from("16")),
|
||||
("c", String::from("playlistd")),
|
||||
("f", String::from("json")),
|
||||
("id", playlist_id),
|
||||
("id", playlist_id.to_string()),
|
||||
];
|
||||
|
||||
Ok(self
|
||||
|
||||
Reference in New Issue
Block a user