Update dependencies (actix-web 2)

This commit is contained in:
Greg Burri 2019-12-26 21:08:18 +01:00
parent 240996a313
commit eab43f8995
5 changed files with 528 additions and 694 deletions

1154
Cargo.lock generated

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,9 @@
== Autoreload
https://actix.rs/docs/autoreload/
https://actix.rs/docs/autoreload/
== Documentation
* Rust patterns : https://github.com/rust-unofficial/patterns/tree/master/patterns
* Rusqlite (SQLite) : https://docs.rs/rusqlite/0.20.0/rusqlite/

View file

@ -5,8 +5,9 @@ authors = ["Grégory Burri <greg.burri@gmail.com>"]
edition = "2018"
[dependencies]
actix-web = "1.0"
actix-files = "0.1"
actix-web = "2.0"
actix-rt = "1.0"
actix-files = "0.2"
askama = "0.8" # Template system
serde = { version = "1.0", features = ["derive"] }
listenfd = "0.3" # To watch file modifications and automatically launch a build process (only used in dev/debug).
@ -17,5 +18,5 @@ env_logger = "0.7"
common = { path = "../common" }
[dependencies.rusqlite]
version = "0.20"
version = "0.21"
features = ["bundled"]

View file

@ -6,12 +6,12 @@ use std::fs;
const CURRENT_DB_VERSION: u32 = 1;
struct Connection {
pub sqlite_con : rusqlite::Connection
pub struct Connection {
con: rusqlite::Connection
}
impl Connection {
fn new() -> Connection {
pub fn new() -> Connection {
// TODO: use a constant in consts module.
let data_dir = Path::new("data");
@ -20,20 +20,29 @@ impl Connection {
fs::DirBuilder::new().create(data_dir).unwrap();
}
Connection { sqlite_con : rusqlite::Connection::open(data_dir.join("recipes.sqlite")).unwrap() }
Connection { con: rusqlite::Connection::open(data_dir.join("recipes.sqlite")).unwrap() }
}
}
pub fn create_or_update() {
let connection = Connection::new();
pub fn create_or_update(self: &Self) -> rusqlite::Result<&str> {
//let connection = Connection::new();
// let mut stmt = connection.sqlite_con.prepare("SELECT * FROM versions ORDER BY date").unwrap();
// let mut stmt = connection.sqlite_con..prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='versions'").unwrap();
// let mut stmt = connection.sqlite_con.prepare("SELECT * FROM versions ORDER BY date").unwrap();
// Check the Database version.
let version = {
let stmt_version_table = self.con.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='versions'")?;
/*if stmt_version_table.query(rusqlite::NO_PARAMS)?.count() == 0 {
0
} else {
1 // let stmt_versions = self.con.prepare("SELECT number FROM [")
}*/
0
};
//let mut stmt = connection.sqlite_con..prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='versions'").unwrap();
connection.sqlite_con.query_row(
"SELECT name FROM sqlite_master WHERE type='table' AND name='versions'",
rusqlite::NO_PARAMS,
|row| Ok(dbg!("test"))
)
.unwrap();
self.con.query_row(
"SELECT name FROM sqlite_master WHERE type='table' AND name='versions'",
rusqlite::NO_PARAMS,
|row| Ok(dbg!("test"))
)
}
}

View file

@ -2,7 +2,7 @@ use std::io::prelude::*;
use std::{fs::File, env::args};
use actix_files as fs;
use actix_web::{web, middleware, App, HttpServer, HttpResponse, Result, web::Query, middleware::Logger};
use actix_web::{get, web, Responder, middleware, App, HttpServer, HttpResponse, web::Query, middleware::Logger};
use askama::Template;
use listenfd::ListenFd;
@ -26,12 +26,12 @@ pub struct Request {
m: Option<String>
}
fn main_page(query: Query<Request>) -> Result<HttpResponse> {
fn main_page(query: Query<Request>) -> HttpResponse {
let main_template = MainTemplate { test: &"*** test ***" };
let s = main_template.render().unwrap();
Ok(HttpResponse::Ok().content_type("text/html").body(s))
HttpResponse::Ok().content_type("text/html").body(s)
}
#[derive(Debug, Deserialize)]
@ -45,7 +45,8 @@ fn get_exe_name() -> String {
first_arg[first_arg.rfind(sep).unwrap()+1..].to_string()
}
fn main() -> std::io::Result<()> {
#[actix_rt::main]
async fn main() -> std::io::Result<()> {
if process_args() { return Ok(()) }
println!("Starting RUP as web server...");
@ -85,7 +86,7 @@ fn main() -> std::io::Result<()> {
server.bind(&format!("0.0.0.0:{}", config.port)).unwrap()
};
server.run()
server.run().await
}
fn process_args() -> bool {
@ -100,7 +101,8 @@ fn process_args() -> bool {
print_usage();
return true
} else if args.iter().any(|arg| arg == "--test") {
let database_connection = db::create_or_update();
let db_connection = db::Connection::new();
db_connection.create_or_update();
return true
}