Skip to content

Commit

Permalink
bin/enqueue-job: Use clap to parse commands and generate help text (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
Turbo87 authored Dec 31, 2022
1 parent c196552 commit 5ceed51
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 19 deletions.
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ cargo-registry-index = { path = "cargo-registry-index" }
cargo-registry-markdown = { path = "cargo-registry-markdown" }
cargo-registry-s3 = { path = "cargo-registry-s3" }
chrono = { version = "=0.4.23", features = ["serde"] }
clap = { version = "=4.0.32", features = ["derive", "unicode", "wrap_help"] }
clap = { version = "=4.0.32", features = ["derive", "env", "unicode", "wrap_help"] }

conduit = "=0.10.0"
conduit-axum = { path = "conduit-axum" }
Expand Down
46 changes: 28 additions & 18 deletions src/bin/enqueue-job.rs
Original file line number Diff line number Diff line change
@@ -1,19 +1,33 @@
#![warn(clippy::all, rust_2018_idioms)]

use anyhow::{anyhow, Result};
use anyhow::Result;
use cargo_registry::schema::background_jobs::dsl::*;
use cargo_registry::{db, env, worker};
use cargo_registry::{db, worker};
use clap::Parser;
use diesel::prelude::*;

#[derive(clap::Parser, Debug)]
#[command(name = "enqueue-job", rename_all = "snake_case")]
enum Command {
UpdateDownloads,
DumpDb {
#[arg(env = "READ_ONLY_REPLICA_URL")]
database_url: String,
#[arg(default_value = "db-dump.tar.gz")]
target_name: String,
},
DailyDbMaintenance,
SquashIndex,
}

fn main() -> Result<()> {
let conn = db::oneoff_connection()?;
let mut args = std::env::args().skip(1);
let command = Command::parse();

let job = args.next().unwrap_or_default();
println!("Enqueueing background job: {job}");
let conn = db::oneoff_connection()?;
println!("Enqueueing background job: {command:?}");

match &*job {
"update_downloads" => {
match command {
Command::UpdateDownloads => {
let count: i64 = background_jobs
.filter(job_type.eq("update_downloads"))
.count()
Expand All @@ -27,15 +41,11 @@ fn main() -> Result<()> {
Ok(worker::update_downloads().enqueue(&conn)?)
}
}
"dump_db" => {
let database_url = args.next().unwrap_or_else(|| env("READ_ONLY_REPLICA_URL"));
let target_name = args
.next()
.unwrap_or_else(|| String::from("db-dump.tar.gz"));
Ok(worker::dump_db(database_url, target_name).enqueue(&conn)?)
}
"daily_db_maintenance" => Ok(worker::daily_db_maintenance().enqueue(&conn)?),
"squash_index" => Ok(worker::squash_index().enqueue(&conn)?),
other => Err(anyhow!("Unrecognized job type `{}`", other)),
Command::DumpDb {
database_url,
target_name,
} => Ok(worker::dump_db(database_url, target_name).enqueue(&conn)?),
Command::DailyDbMaintenance => Ok(worker::daily_db_maintenance().enqueue(&conn)?),
Command::SquashIndex => Ok(worker::squash_index().enqueue(&conn)?),
}
}

0 comments on commit 5ceed51

Please sign in to comment.