66 lines
1.6 KiB
Rust
66 lines
1.6 KiB
Rust
use std::{ffi::OsString, time::Duration};
|
|
|
|
use clap::Parser;
|
|
use sqlx::sqlite::{SqliteConnectOptions, SqlitePoolOptions};
|
|
use what2watch::{get_db_pool, import_utils::add_imdb_movies};
|
|
|
|
#[derive(Debug, Parser)]
|
|
struct Cli {
|
|
#[clap(long, short)]
|
|
pub db_path: OsString,
|
|
#[clap(
|
|
long,
|
|
short,
|
|
help = "Number of movies to add.",
|
|
default_value_t = 10_000
|
|
)]
|
|
pub number: u32,
|
|
}
|
|
|
|
fn main() {
|
|
let cli = Cli::parse();
|
|
let path = cli.db_path;
|
|
let num = cli.number;
|
|
|
|
let opts = SqliteConnectOptions::new().filename(path).read_only(true);
|
|
let movie_db = {
|
|
let rt = tokio::runtime::Builder::new_multi_thread()
|
|
.enable_all()
|
|
.build()
|
|
.unwrap();
|
|
|
|
rt.block_on(
|
|
SqlitePoolOptions::new()
|
|
.idle_timeout(Duration::from_secs(90))
|
|
.connect_with(opts),
|
|
)
|
|
.expect("could not open movies db")
|
|
};
|
|
|
|
let w2w_db = get_db_pool();
|
|
|
|
let (dur, rows) = {
|
|
let rt = tokio::runtime::Builder::new_multi_thread()
|
|
.enable_all()
|
|
.build()
|
|
.unwrap();
|
|
|
|
rt.block_on(async {
|
|
let dur = add_imdb_movies(&w2w_db, &movie_db, num).await.unwrap();
|
|
let rows: i32 = sqlx::query_scalar("select count(*) from watches")
|
|
.fetch_one(&w2w_db)
|
|
.await
|
|
.unwrap();
|
|
|
|
w2w_db.close().await;
|
|
(dur, rows)
|
|
})
|
|
};
|
|
|
|
println!(
|
|
"Added {rows} movies in {} seconds ({}ms, {}us)",
|
|
dur.as_secs_f64(),
|
|
dur.as_millis(),
|
|
dur.as_micros()
|
|
);
|
|
}
|