#![allow(proc_macro_derive_resolution_fallback)]
#![crate_type = "lib"]
#[macro_use]
extern crate clap;
extern crate config;
extern crate rusqlite;
extern crate time;
extern crate uuid;
pub mod mods;
use mods::util as Util;
use mods::models as Models;
use mods::sql as Sql;
use mods::capabilities as Capabilities;
pub mod cc {
use Capabilities;
use Sql;
use Util;
use rusqlite::{Connection};
fn get_connection() -> Connection {
let settings: Util::Settings = Util::get_settings();
Sql::establish_connection(&settings.sqlite_connection_string)
}
pub fn duplicates() {
println!("Searching for duplicate files...");
Capabilities::find_duplicates(&get_connection());
}
pub fn hash(root_directory: &str) {
println!("Hashing...");
Capabilities::start_hashing(&root_directory, &get_connection());
}
pub fn orphans() {
println!("Removing orphans from database...");
Capabilities::delete_missing_listings(&mut get_connection());
}
pub fn setup() {
println!("Setting up database...");
match Capabilities::setup(&get_connection()) {
Ok(_x) => {
println!("Database setup successfully.");
},
Err(_err) => {
println!("Error when trying to setup database.");
}
};
std::process::exit(0);
}
pub fn tag(listing_id: &str, tags: Vec<&str>) {
for tag in tags {
Capabilities::tag_listing(&get_connection(), &listing_id, tag);
}
println!("Tag(s) applied successfully!");
std::process::exit(0);
}
pub fn delete_tag(tag_id: &str) {
Capabilities::delete_tag(&mut get_connection(), tag_id);
}
pub fn new_tag(tag: &str) {
Capabilities::create_tag(&get_connection(), tag);
}
pub fn delete_tag_listing(listing_tag_id: &str) {
Capabilities::delete_listing_tag(&get_connection(), listing_tag_id);
}
}