summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKjetil Orbekk <kjetil.orbekk@gmail.com>2017-06-17 11:19:03 -0400
committerKjetil Orbekk <kjetil.orbekk@gmail.com>2017-06-17 11:19:03 -0400
commitd458c767da041d17781c5f2da25372af69a5d3aa (patch)
treea62f6c626951c0c00f3be8d7d6093fd9cd9c5ff9 /src
parent55a773304461a2c261823c6d4bab38b66e95dc07 (diff)
sqlite: Initialize database.
Diffstat (limited to 'src')
-rw-r--r--src/bin/main.rs11
-rw-r--r--src/db.rs22
-rw-r--r--src/lib.rs1
3 files changed, 33 insertions, 1 deletions
diff --git a/src/bin/main.rs b/src/bin/main.rs
index 94bdd71..36d6c00 100644
--- a/src/bin/main.rs
+++ b/src/bin/main.rs
@@ -6,6 +6,7 @@ extern crate systemhttp;
extern crate env_logger;
#[macro_use]
extern crate clap;
+extern crate sqlite;
fn main() {
let matches = clap_app!(
@@ -13,13 +14,21 @@ fn main() {
(version: "0.1")
(author: "Kjetil Ørbekk")
(about: "A systemd web frontend")
- (@arg PORT: -p --port +takes_value "Port to serve on"))
+ (@arg PORT: -p --port +takes_value "Port to serve on")
+ (@arg DB_FILE: --db_file +required +takes_value
+ "Path to sqlite database"))
.get_matches();
let port = matches.value_of("PORT").unwrap_or("8080")
.parse::<u16>().expect("port number");
+ let db_file = matches.value_of("DB_FILE").unwrap();
+
env_logger::init().unwrap();
+ let mut conn = sqlite::Connection::open(db_file)
+ .expect(format!("opening sqlite database at {}", db_file).as_str());
+ systemhttp::db::init(&mut conn);
+
let _server = systemhttp::server::serve(port).unwrap();
println!("Serving on {}", port);
}
diff --git a/src/db.rs b/src/db.rs
new file mode 100644
index 0000000..678e603
--- /dev/null
+++ b/src/db.rs
@@ -0,0 +1,22 @@
+use sqlite::{Connection};
+use std;
+
+type Result<T> = std::result::Result<T, String>;
+
+fn is_initialized(conn: &mut Connection) -> Result<bool> {
+ Ok(false)
+}
+
+pub fn init(conn: &mut Connection) -> Result<()> {
+ if !is_initialized(conn)? {
+ info!("Initializing db...");
+ conn.execute("
+ BEGIN;
+ CREATE TABLE users (username TEXT,
+ salt TEXT,
+ passwd TEXT);
+ COMMIT;
+ ").unwrap();
+ }
+ Ok(())
+}
diff --git a/src/lib.rs b/src/lib.rs
index ad0f971..eaa1956 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -18,6 +18,7 @@ pub mod systemd;
pub mod render;
pub mod auth;
pub mod server;
+pub mod db;
#[cfg(test)]
mod tests {