diff --git a/Cargo.lock b/Cargo.lock index 68714e4..a6d9457 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2202,9 +2202,9 @@ checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" [[package]] name = "proc-macro2" -version = "1.0.26" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" +checksum = "ba508cc11742c0dc5c1659771673afbab7a0efab23aa17e854cbab0837ed0b43" dependencies = [ "unicode-xid", ] @@ -2965,9 +2965,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.69" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48fe99c6bd8b1cc636890bcc071842de909d902c81ac7dab53ba33c421ab8ffb" +checksum = "f2afee18b8beb5a596ecb4a2dce128c719b4ba399d34126b9e4396e3f9860966" dependencies = [ "proc-macro2", "quote", @@ -3368,9 +3368,9 @@ checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" [[package]] name = "unicode-width" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" diff --git a/README.md b/README.md index f77ae98..b1efe57 100644 --- a/README.md +++ b/README.md @@ -110,18 +110,6 @@ GET /api/v1/statuses/{status_id}/signature ## CLI commands -Delete profile: - -``` -mitractl delete-profile -i 55a3005f-f293-4168-ab70-6ab09a879679 -``` - -Delete post: - -``` -mitractl delete-post -i 55a3005f-f293-4168-ab70-6ab09a879679 -``` - Generate invite code: ``` @@ -134,6 +122,18 @@ List generated invites: mitractl list-invite-codes ``` +Delete profile: + +``` +mitractl delete-profile -i 55a3005f-f293-4168-ab70-6ab09a879679 +``` + +Delete post: + +``` +mitractl delete-post -i 55a3005f-f293-4168-ab70-6ab09a879679 +``` + Generate ethereum address: ``` diff --git a/src/bin/mitractl.rs b/src/bin/mitractl.rs index 431d4a2..5116a76 100644 --- a/src/bin/mitractl.rs +++ b/src/bin/mitractl.rs @@ -22,13 +22,26 @@ struct Opts { #[derive(Clap)] enum SubCommand { - DeleteProfile(DeleteProfile), - DeletePost(DeletePost), + GenerateEthereumAddress(GenerateEthereumAddress), + GenerateInviteCode(GenerateInviteCode), ListInviteCodes(ListInviteCodes), - GenerateEthereumAddress(GenerateEthereumAddress), + DeleteProfile(DeleteProfile), + DeletePost(DeletePost), } +/// Generate ethereum address +#[derive(Clap)] +struct GenerateEthereumAddress; + +/// Generate invite code +#[derive(Clap)] +struct GenerateInviteCode; + +/// List invite codes +#[derive(Clap)] +struct ListInviteCodes; + /// Delete profile #[derive(Clap)] struct DeleteProfile { @@ -43,52 +56,11 @@ struct DeletePost { id: Uuid, } -/// Generate invite code -#[derive(Clap)] -struct GenerateInviteCode { } - -/// List invite codes -#[derive(Clap)] -struct ListInviteCodes { } - -/// Generate ethereum address -#[derive(Clap)] -struct GenerateEthereumAddress { } - #[tokio::main] async fn main() { - let config = config::parse_config(); - configure_logger(); - let db_pool = create_pool(&config.database_url); - apply_migrations(&db_pool).await; - let db_client = &mut **get_database_client(&db_pool).await.unwrap(); let opts: Opts = Opts::parse(); match opts.subcmd { - SubCommand::DeleteProfile(subopts) => { - let deletion_queue = delete_profile(db_client, &subopts.id).await.unwrap(); - deletion_queue.process(&config).await; - println!("profile deleted"); - }, - SubCommand::DeletePost(subopts) => { - let deletion_queue = delete_post(db_client, &subopts.id).await.unwrap(); - deletion_queue.process(&config).await; - println!("post deleted"); - }, - SubCommand::GenerateInviteCode(_) => { - let invite_code = create_invite_code(db_client).await.unwrap(); - println!("generated invite code: {}", invite_code); - }, - SubCommand::ListInviteCodes(_) => { - let invite_codes = get_invite_codes(db_client).await.unwrap(); - if invite_codes.is_empty() { - println!("no invite codes found"); - return; - } - for code in invite_codes { - println!("{}", code); - } - }, SubCommand::GenerateEthereumAddress(_) => { let (private_key, address) = generate_ethereum_address(); println!( @@ -96,5 +68,41 @@ async fn main() { address, private_key, ); }, + subcmd => { + // Other commands require initialized app + let config = config::parse_config(); + configure_logger(); + let db_pool = create_pool(&config.database_url); + apply_migrations(&db_pool).await; + let db_client = &mut **get_database_client(&db_pool).await.unwrap(); + + match subcmd { + SubCommand::GenerateInviteCode(_) => { + let invite_code = create_invite_code(db_client).await.unwrap(); + println!("generated invite code: {}", invite_code); + }, + SubCommand::ListInviteCodes(_) => { + let invite_codes = get_invite_codes(db_client).await.unwrap(); + if invite_codes.is_empty() { + println!("no invite codes found"); + return; + } + for code in invite_codes { + println!("{}", code); + } + }, + SubCommand::DeleteProfile(subopts) => { + let deletion_queue = delete_profile(db_client, &subopts.id).await.unwrap(); + deletion_queue.process(&config).await; + println!("profile deleted"); + }, + SubCommand::DeletePost(subopts) => { + let deletion_queue = delete_post(db_client, &subopts.id).await.unwrap(); + deletion_queue.process(&config).await; + println!("post deleted"); + }, + _ => panic!(), + }; + }, }; }