feat: started rudimentary gpo cli tool to manually sync devices
This commit is contained in:
parent
0e543539cf
commit
f4008e4b9c
3 changed files with 56 additions and 0 deletions
45
src/cli/gpo.rs
Normal file
45
src/cli/gpo.rs
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
use clap::Subcommand;
|
||||
|
||||
use crate::db;
|
||||
|
||||
#[derive(Subcommand)]
|
||||
pub enum Command {
|
||||
/// Add devices of a specific user to the same sync group
|
||||
Sync {
|
||||
username: String,
|
||||
devices: Vec<String>,
|
||||
},
|
||||
/// List the devices for the given user
|
||||
Devices { username: String },
|
||||
}
|
||||
|
||||
impl Command {
|
||||
pub fn run(&self, config: &crate::config::Config) -> u8 {
|
||||
let pool = db::initialize_db(config.data_dir.join(crate::DB_FILENAME), true).unwrap();
|
||||
let repo = db::SqliteRepository::from(pool);
|
||||
let store = crate::gpodder::GpodderRepository::new(repo);
|
||||
|
||||
match self {
|
||||
Self::Sync { username, devices } => {
|
||||
let user = store.get_user(&username).unwrap();
|
||||
store
|
||||
.update_device_sync_status(
|
||||
&user,
|
||||
vec![devices.iter().map(|s| s.as_ref()).collect()],
|
||||
Vec::new(),
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
Self::Devices { username } => {
|
||||
let user = store.get_user(&username).unwrap();
|
||||
let devices = store.devices_for_user(&user).unwrap();
|
||||
|
||||
for device in devices {
|
||||
println!("{} ({} subscriptions)", device.id, device.subscriptions);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
0
|
||||
}
|
||||
}
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
mod db;
|
||||
mod gpo;
|
||||
mod serve;
|
||||
|
||||
use std::path::PathBuf;
|
||||
|
|
@ -49,6 +50,11 @@ pub enum Command {
|
|||
Serve,
|
||||
#[command(subcommand)]
|
||||
Db(db::DbCommand),
|
||||
|
||||
/// Perform operations on the database through the Gpodder abstraction, allowing operations
|
||||
/// identical to the ones performed by the API.
|
||||
#[command(subcommand)]
|
||||
Gpo(gpo::Command),
|
||||
}
|
||||
|
||||
impl Cli {
|
||||
|
|
@ -75,6 +81,7 @@ impl Cli {
|
|||
match &self.cmd {
|
||||
Command::Serve => serve::serve(&config),
|
||||
Command::Db(cmd) => cmd.run(&config),
|
||||
Command::Gpo(cmd) => cmd.run(&config),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue