feat(readarr): delete Readarr authors and expose the command on the CLI

This commit is contained in:
Dark-Alex-17 committed 2026-08-27 09:54:38 -06:00
1 parent fcfc29894e
commit ac8a11233f
7 files changed
+249 -6

No files matched your search

+26
View File
@@ -8,6 +8,7 @@ use super::ReadarrCommand;
use crate::{
app::App,
cli::{CliCommandHandler, Command},
models::readarr_models::DeleteParams,
network::{NetworkTrait, readarr_network::ReadarrEvent},
};
@@ -17,6 +18,15 @@ mod delete_command_handler_tests;
#[derive(Debug, Clone, PartialEq, Eq, Subcommand)]
pub enum ReadarrDeleteCommand {
#[command(about = "Delete an author from your Readarr library")]
Author {
#[arg(long, help = "The ID of the author to delete", required = true)]
author_id: i64,
#[arg(long, help = "Delete the author files from disk as well")]
delete_files_from_disk: bool,
#[arg(long, help = "Add a list exclusion for this author")]
add_list_exclusion: bool,
},
#[command(about = "Delete the root folder with the given ID")]
RootFolder {
#[arg(long, help = "The ID of the root folder to delete", required = true)]
@@ -58,6 +68,22 @@ impl<'a, 'b> CliCommandHandler<'a, 'b, ReadarrDeleteCommand>
async fn handle(self) -> Result<String> {
let result = match self.command {
ReadarrDeleteCommand::Author {
author_id,
delete_files_from_disk,
add_list_exclusion,
} => {
let delete_author_params = DeleteParams {
id: author_id,
delete_files: delete_files_from_disk,
add_import_list_exclusion: add_list_exclusion,
};
let resp = self
.network
.handle_network_event(ReadarrEvent::DeleteAuthor(delete_author_params).into())
.await?;
serde_json::to_string_pretty(&resp)?
}
ReadarrDeleteCommand::RootFolder { root_folder_id } => {
let resp = self
.network