card_catalog/
lib.rs

1// suppress warnings for issue #50504 <https://github.com/rust-lang/rust/issues/50504>
2#![allow(proc_macro_derive_resolution_fallback)]
3
4#![crate_type = "lib"]
5
6#[macro_use]
7extern crate clap;
8extern crate config;
9
10extern crate rusqlite;
11extern crate time;
12extern crate uuid;
13
14pub mod mods;
15use mods::util as Util;
16use mods::models as Models;
17use mods::sql as Sql;
18use mods::capabilities as Capabilities;
19
20pub mod cc {
21    use Capabilities;
22    use Sql;
23    use Util;
24    use rusqlite::{Connection};
25
26    fn get_connection() -> Connection {
27        let settings: Util::Settings = Util::get_settings();
28        Sql::establish_connection(&settings.sqlite_connection_string)
29    }
30
31    pub fn duplicates() {
32        println!("Searching for duplicate files...");
33        Capabilities::find_duplicates(&get_connection());
34    }
35
36    pub fn hash(root_directory: &str) {
37        println!("Hashing...");
38        Capabilities::start_hashing(&root_directory, &get_connection());
39    }
40
41    pub fn orphans() {
42        println!("Removing orphans from database...");
43        Capabilities::delete_missing_listings(&mut get_connection());
44    }
45
46    pub fn setup() {
47        println!("Setting up database...");
48        match Capabilities::setup(&get_connection()) {
49            Ok(_x) => {
50                println!("Database setup successfully.");
51            },
52            Err(_err) => {
53                println!("Error when trying to setup database.");
54            }
55        };
56        std::process::exit(0);
57    }
58
59    pub fn tag(listing_id: &str, tags: Vec<&str>) {
60        for tag in tags {
61            Capabilities::tag_listing(&get_connection(), &listing_id, tag);
62        }
63        println!("Tag(s) applied successfully!");
64        std::process::exit(0);
65    }
66
67    pub fn delete_tag(tag_id: &str) {
68        Capabilities::delete_tag(&mut get_connection(), tag_id);
69    }
70
71    pub fn new_tag(tag: &str) {
72        Capabilities::create_tag(&get_connection(), tag);
73    }
74
75    pub fn delete_tag_listing(listing_tag_id: &str) {
76        Capabilities::delete_listing_tag(&get_connection(), listing_tag_id);
77    }
78}