Add template
This commit is contained in:
parent
4bee273216
commit
2d1d5b66a9
8 changed files with 727 additions and 44 deletions
704
Cargo.lock
generated
704
Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -2,6 +2,7 @@
|
||||||
name = "project_test"
|
name = "project_test"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
publish = false
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
@ -9,5 +10,6 @@ edition = "2018"
|
||||||
rocket = { version = "0.5.0-rc.1", features = ["secrets", "tls", "json"] }
|
rocket = { version = "0.5.0-rc.1", features = ["secrets", "tls", "json"] }
|
||||||
rocket_codegen = "0.5.0-rc.1"
|
rocket_codegen = "0.5.0-rc.1"
|
||||||
rocket_sync_db_pools = { version = "0.1.0-rc.1", features = ["diesel_sqlite_pool"] }
|
rocket_sync_db_pools = { version = "0.1.0-rc.1", features = ["diesel_sqlite_pool"] }
|
||||||
|
rocket_dyn_templates = { version = "0.1.0-rc.1", features = ["tera"] }
|
||||||
diesel = { version = "1.4.0", features = ["sqlite", "r2d2"] }
|
diesel = { version = "1.4.0", features = ["sqlite", "r2d2"] }
|
||||||
diesel_migrations = "1.4.0"
|
diesel_migrations = "1.4.0"
|
|
@ -1,2 +1,5 @@
|
||||||
|
[default]
|
||||||
|
template_dir = "views"
|
||||||
|
|
||||||
[global.databases]
|
[global.databases]
|
||||||
sqlite_logs = { url = "db/dev.db", pool_size = 20 }
|
sqlite_logs = { url = "db/dev.db", pool_size = 20 }
|
|
@ -1,8 +1,17 @@
|
||||||
use rocket::get;
|
use rocket::{get, catch};
|
||||||
|
use rocket::serde::json::{Value, json};
|
||||||
|
|
||||||
pub mod tasks_controller;
|
pub mod tasks_controller;
|
||||||
|
|
||||||
#[get("/")]
|
#[get("/")]
|
||||||
pub fn index() -> &'static str {
|
pub fn index() -> &'static str {
|
||||||
"Hello, world!"
|
"Hello, world!"
|
||||||
|
}
|
||||||
|
|
||||||
|
#[catch(404)]
|
||||||
|
pub fn not_found() -> Value {
|
||||||
|
json!({
|
||||||
|
"status": "error",
|
||||||
|
"reason": "Resource was not found."
|
||||||
|
})
|
||||||
}
|
}
|
|
@ -1,6 +1,22 @@
|
||||||
use rocket::serde::json::Json;
|
use rocket::serde::{json::Json, Serialize};
|
||||||
use rocket::{get, post, patch, delete};
|
use rocket::{get, post, patch, delete};
|
||||||
use crate::models::{DbConn, task::Task};
|
use crate::models::{DbConn, task::Task};
|
||||||
|
use rocket_dyn_templates::{Template};
|
||||||
|
|
||||||
|
#[get("/")]
|
||||||
|
pub async fn index_template(conn: DbConn) -> Template {
|
||||||
|
#[derive(Serialize, Debug)]
|
||||||
|
#[serde(crate = "rocket::serde")]
|
||||||
|
struct Data {
|
||||||
|
title: String,
|
||||||
|
tasks: Vec<Task>
|
||||||
|
}
|
||||||
|
|
||||||
|
Template::render("tasks/index", Data {
|
||||||
|
title: "Hello".to_string(),
|
||||||
|
tasks: Task::all(&conn).await.unwrap(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
#[get("/tasks")]
|
#[get("/tasks")]
|
||||||
pub async fn index(conn: DbConn) -> Option<Json<Vec<Task>>> {
|
pub async fn index(conn: DbConn) -> Option<Json<Vec<Task>>> {
|
||||||
|
|
|
@ -7,6 +7,7 @@ mod controllers;
|
||||||
use rocket::*;
|
use rocket::*;
|
||||||
use rocket::fairing::AdHoc;
|
use rocket::fairing::AdHoc;
|
||||||
use models::DbConn;
|
use models::DbConn;
|
||||||
|
use rocket_dyn_templates::Template;
|
||||||
|
|
||||||
async fn run_migrations(rocket: Rocket<Build>) -> Rocket<Build> {
|
async fn run_migrations(rocket: Rocket<Build>) -> Rocket<Build> {
|
||||||
embed_migrations!();
|
embed_migrations!();
|
||||||
|
@ -21,6 +22,9 @@ async fn run_migrations(rocket: Rocket<Build>) -> Rocket<Build> {
|
||||||
fn rocket() -> _ {
|
fn rocket() -> _ {
|
||||||
rocket::build()
|
rocket::build()
|
||||||
.mount("/", routes![
|
.mount("/", routes![
|
||||||
|
controllers::tasks_controller::index_template
|
||||||
|
])
|
||||||
|
.mount("/api/", routes![
|
||||||
controllers::index,
|
controllers::index,
|
||||||
controllers::tasks_controller::index,
|
controllers::tasks_controller::index,
|
||||||
controllers::tasks_controller::show,
|
controllers::tasks_controller::show,
|
||||||
|
@ -28,6 +32,10 @@ fn rocket() -> _ {
|
||||||
controllers::tasks_controller::update,
|
controllers::tasks_controller::update,
|
||||||
controllers::tasks_controller::delete
|
controllers::tasks_controller::delete
|
||||||
])
|
])
|
||||||
|
.register("/", catchers![
|
||||||
|
controllers::not_found
|
||||||
|
])
|
||||||
.attach(DbConn::fairing())
|
.attach(DbConn::fairing())
|
||||||
|
.attach(Template::fairing())
|
||||||
.attach(AdHoc::on_ignite("Run Migrations", run_migrations))
|
.attach(AdHoc::on_ignite("Run Migrations", run_migrations))
|
||||||
}
|
}
|
||||||
|
|
15
views/layout.html.tera
Normal file
15
views/layout.html.tera
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<title>Tera Demo - {{ title }}</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
{% block content %}{% endblock content %}
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<a href="/">Home</a>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
10
views/tasks/index.html.tera
Normal file
10
views/tasks/index.html.tera
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{% extends "layout" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<h3>Here are your items:</h3>
|
||||||
|
<ul>
|
||||||
|
{% for task in tasks %}
|
||||||
|
<li>{{ task.id }} {{ task.description }} {{ task.completed }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endblock content %}
|
Loading…
Reference in a new issue