diff options
author | Ben Morrison <ben@gbmor.dev> | 2019-08-27 19:57:56 -0400 |
---|---|---|
committer | Ben Morrison <ben@gbmor.dev> | 2019-08-27 19:57:56 -0400 |
commit | 99273b69b161ae472f5ee37707d0a50ef5608be9 (patch) | |
tree | af2d76194846f2ad289d40147accac60365ca5df /src | |
parent | 5b59ba3aee3e874b2e67cf529680d19910a3ec7d (diff) | |
download | clinte-99273b69b161ae472f5ee37707d0a50ef5608be9.tar.gz |
added subtype to db::Cmd. Fleshed out cli args.
Diffstat (limited to 'src')
-rw-r--r-- | src/db.rs | 16 | ||||
-rw-r--r-- | src/main.rs | 23 |
2 files changed, 31 insertions, 8 deletions
diff --git a/src/db.rs b/src/db.rs index 6c1214b..93d73a8 100644 --- a/src/db.rs +++ b/src/db.rs @@ -4,6 +4,8 @@ use rusqlite; use std::sync::mpsc; use std::time; +const DB_PATH: &str = "/tmp/clinte.db"; + #[derive(Debug)] pub struct Post { id: u32, @@ -20,8 +22,8 @@ pub struct Conn { #[derive(Debug)] pub enum Cmd { - Create, - Update, + Create(Post), + Update(Post), Disconnect, NOOP, } @@ -31,7 +33,7 @@ impl Conn { let start = time::Instant::now(); info!("Connecting to database"); let conn = rusqlite::Connection::open_with_flags( - "/tmp/db.sql", + DB_PATH, rusqlite::OpenFlags::SQLITE_OPEN_FULL_MUTEX | rusqlite::OpenFlags::SQLITE_OPEN_CREATE | rusqlite::OpenFlags::SQLITE_OPEN_READ_WRITE, @@ -40,7 +42,7 @@ impl Conn { conn.execute( "CREATE TABLE IF NOT EXISTS posts ( - id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, + id INTEGER PRIMARY KEY NOT NULL, title TEXT NOT NULL, author TEXT NOT NULL, body TEXT NOT NULL @@ -66,10 +68,10 @@ impl Conn { } impl Cmd { - pub fn new(txt: &str) -> Self { + pub fn new(txt: &str, post: Post) -> Self { match txt { - "create" => Cmd::Create, - "update" => Cmd::Update, + "create" => Cmd::Create(post), + "update" => Cmd::Update(post), "disconnect" => Cmd::Disconnect, _ => Cmd::NOOP, } diff --git a/src/main.rs b/src/main.rs index 6c0d957..3f93d92 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,10 +1,31 @@ +use clap; use log::info; use std::sync::mpsc; +use std::time; mod db; mod logging; fn main() { + let arg_matches = clap::App::new("clinte") + .version(clap::crate_version!()) + .author("Ben Morrison (gbmor)") + .about("Command-line community notices system") + .subcommand(clap::SubCommand::with_name("list").about("Display notices")) + .subcommand(clap::SubCommand::with_name("post").about("Post a new notice")) + .subcommand( + clap::SubCommand::with_name("update") + .about("Update a notice you've posted") + .arg(clap::Arg::with_name("id").help("Numeric ID of the post")), + ) + .subcommand( + clap::SubCommand::with_name("delete") + .about("Delete a notice you've posted") + .arg(clap::Arg::with_name("id").help("Numeric ID of the post")), + ) + .get_matches(); + + let start = time::Instant::now(); logging::init(); info!("clinte starting up!"); println!("clinte-0.1-dev"); @@ -13,5 +34,5 @@ fn main() { let (_tx, rx) = mpsc::channel::<db::Cmd>(); let db = db::Conn::new(rx); - println!("{:?}", db); + info!("Startup completed in {:?}ms", start.elapsed().as_millis()); } |