feat(playlists): reorder tracks
This commit is contained in:
@@ -8,14 +8,14 @@ use walkdir::{DirEntry, WalkDir};
|
||||
use crate::{
|
||||
checksum::generate_hash,
|
||||
database::tracks::{
|
||||
add_track_to_playlist, create_playlist, delete_playlist, get_playlists, get_tracks,
|
||||
insert_tracks, remove_track_from_playlist,
|
||||
add_track_to_playlist, create_playlist, delete_playlist, get_playlist, get_playlists,
|
||||
get_tracks, insert_tracks, remove_track_from_playlist, swap_playlist_tracks,
|
||||
},
|
||||
music::metadata::{extract_track_data, TrackMetadata},
|
||||
proto::library::{
|
||||
library_server::Library, AddTrackToPlaylistRequest, CreatePlaylistRequest,
|
||||
CreatePlaylistResponse, DeletePlaylistRequest, ListPlaylistsResponse,
|
||||
RemoveTrackFromPlaylistRequest, Track, TrackList,
|
||||
RemoveTrackFromPlaylistRequest, SwapTracksRequest, Track, TrackList,
|
||||
},
|
||||
state::GrooveState,
|
||||
};
|
||||
@@ -139,6 +139,33 @@ impl Library for LibraryService {
|
||||
|
||||
Ok(Response::new(()))
|
||||
}
|
||||
|
||||
async fn swap_tracks(
|
||||
&self,
|
||||
request: Request<SwapTracksRequest>,
|
||||
) -> Result<Response<TrackList>, Status> {
|
||||
let input = request.get_ref();
|
||||
|
||||
let Ok(success) =
|
||||
swap_playlist_tracks(&self.pool, input.playlist_id, input.a_rank, input.b_rank).await
|
||||
else {
|
||||
return Err(Status::internal(""));
|
||||
};
|
||||
|
||||
if !success {
|
||||
return Err(Status::internal(""));
|
||||
}
|
||||
|
||||
let Ok(playlist) = get_playlist(&self.pool, input.playlist_id).await else {
|
||||
return Err(Status::internal(""));
|
||||
};
|
||||
|
||||
let response = TrackList {
|
||||
tracks: playlist.tracks,
|
||||
};
|
||||
|
||||
Ok(Response::new(response))
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn index_path(path: PathBuf, db: &Pool, path_id: u64) -> Result<(), rusqlite::Error> {
|
||||
|
||||
Reference in New Issue
Block a user