fjall_cli/command/
keyspace_command.rs1use errgonomic::map_err;
2use fjall::Database;
3use std::process::ExitCode;
4use thiserror::Error;
5
6use KeyspaceSubcommand::*;
7
8#[derive(clap::Parser, Clone, Debug)]
9pub struct KeyspaceCommand {
10 #[arg(value_name = "KEYSPACE")]
11 keyspace: String,
12
13 #[command(subcommand)]
14 subcommand: KeyspaceSubcommand,
15}
16
17#[derive(clap::Subcommand, Clone, Debug)]
18pub enum KeyspaceSubcommand {
19 Iter(IterCommand),
20 Get(GetCommand),
21 Insert(InsertCommand),
22 Contains(ContainsCommand),
23 Len(LenCommand),
24 Clear(ClearCommand),
25 Delete(DeleteCommand),
26}
27
28impl KeyspaceCommand {
29 pub async fn run(self, db: &Database) -> Result<ExitCode, KeyspaceCommandRunError> {
30 use KeyspaceCommandRunError::*;
31 let Self {
32 keyspace,
33 subcommand,
34 } = self;
35 match subcommand {
36 Iter(command) => map_err!(command.run(db, keyspace).await, RunIterCommandFailed),
37 Get(command) => map_err!(command.run(db, keyspace).await, RunGetCommandFailed),
38 Insert(command) => map_err!(command.run(db, keyspace).await, RunInsertCommandFailed),
39 Contains(command) => map_err!(command.run(db, keyspace).await, RunContainsCommandFailed),
40 Len(command) => map_err!(command.run(db, keyspace).await, RunLenCommandFailed),
41 Clear(command) => map_err!(command.run(db, keyspace).await, RunClearCommandFailed),
42 Delete(command) => map_err!(command.run(db, keyspace).await, RunDeleteCommandFailed),
43 }
44 }
45}
46
47#[derive(Error, Debug)]
48pub enum KeyspaceCommandRunError {
49 #[error("failed to run iter command")]
50 RunIterCommandFailed { source: IterCommandRunError },
51
52 #[error("failed to run get command")]
53 RunGetCommandFailed { source: GetCommandRunError },
54
55 #[error("failed to run insert command")]
56 RunInsertCommandFailed { source: InsertCommandRunError },
57
58 #[error("failed to run contains command")]
59 RunContainsCommandFailed { source: ContainsCommandRunError },
60
61 #[error("failed to run len command")]
62 RunLenCommandFailed { source: LenCommandRunError },
63
64 #[error("failed to run clear command")]
65 RunClearCommandFailed { source: ClearCommandRunError },
66
67 #[error("failed to run delete command")]
68 RunDeleteCommandFailed { source: DeleteCommandRunError },
69}
70
71mod iter_command;
72pub use iter_command::*;
73
74mod get_command;
75pub use get_command::*;
76
77mod insert_command;
78pub use insert_command::*;
79
80mod contains_command;
81pub use contains_command::*;
82
83mod len_command;
84pub use len_command::*;
85
86mod clear_command;
87pub use clear_command::*;
88
89mod delete_command;
90pub use delete_command::*;