Add middleware
This commit is contained in:
parent
483fd60daa
commit
e6278176e4
6 changed files with 65 additions and 13 deletions
49
Cargo.lock
generated
49
Cargo.lock
generated
|
@ -289,6 +289,17 @@ dependencies = [
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "atty"
|
||||||
|
version = "0.2.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
||||||
|
dependencies = [
|
||||||
|
"hermit-abi",
|
||||||
|
"libc",
|
||||||
|
"winapi 0.3.9",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "autocfg"
|
name = "autocfg"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
|
@ -560,6 +571,7 @@ dependencies = [
|
||||||
"diesel",
|
"diesel",
|
||||||
"diesel_migrations",
|
"diesel_migrations",
|
||||||
"dotenv",
|
"dotenv",
|
||||||
|
"env_logger",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
|
@ -587,6 +599,19 @@ dependencies = [
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "env_logger"
|
||||||
|
version = "0.9.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
|
||||||
|
dependencies = [
|
||||||
|
"atty",
|
||||||
|
"humantime",
|
||||||
|
"log",
|
||||||
|
"regex",
|
||||||
|
"termcolor",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "flate2"
|
name = "flate2"
|
||||||
version = "1.0.22"
|
version = "1.0.22"
|
||||||
|
@ -826,6 +851,12 @@ version = "1.5.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503"
|
checksum = "acd94fdbe1d4ff688b67b04eee2e17bd50995534a61539e45adfefb45e5e5503"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "humantime"
|
||||||
|
version = "2.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "idna"
|
name = "idna"
|
||||||
version = "0.2.3"
|
version = "0.2.3"
|
||||||
|
@ -1546,6 +1577,15 @@ dependencies = [
|
||||||
"unicode-xid",
|
"unicode-xid",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "termcolor"
|
||||||
|
version = "1.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
|
||||||
|
dependencies = [
|
||||||
|
"winapi-util",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "thiserror"
|
name = "thiserror"
|
||||||
version = "1.0.30"
|
version = "1.0.30"
|
||||||
|
@ -1924,6 +1964,15 @@ version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "winapi-util"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
|
||||||
|
dependencies = [
|
||||||
|
"winapi 0.3.9",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi-x86_64-pc-windows-gnu"
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
|
|
|
@ -15,6 +15,7 @@ chrono = { version = "0.4", features = ["serde"] }
|
||||||
diesel = { version = "1.4", features = ["sqlite", "uuid"] }
|
diesel = { version = "1.4", features = ["sqlite", "uuid"] }
|
||||||
diesel_migrations = "1.4"
|
diesel_migrations = "1.4"
|
||||||
dotenv = "0.15"
|
dotenv = "0.15"
|
||||||
|
env_logger = "0.9.0"
|
||||||
serde = "1.0"
|
serde = "1.0"
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
serde_derive = "1.0"
|
serde_derive = "1.0"
|
||||||
|
|
|
@ -44,10 +44,8 @@ CREATE TABLE schedules
|
||||||
periods BLOB
|
periods BLOB
|
||||||
NOT NULL
|
NOT NULL
|
||||||
);
|
);
|
||||||
--INSERT INTO schedules (uid, name, periods) VALUES (x'6f666600000000000000000000000000', 'off', x'00');
|
|
||||||
--INSERT INTO schedules (uid, name, periods) VALUES (x'6f6e0000000000000000000000000000', 'on', x'010000009F05');
|
|
||||||
INSERT INTO schedules (uid, name, periods) VALUES (x'00', 'off', x'');
|
INSERT INTO schedules (uid, name, periods) VALUES (x'00', 'off', x'');
|
||||||
INSERT INTO schedules (uid, name, periods) VALUES (x'01', 'on', x'0000173B');
|
INSERT INTO schedules (uid, name, periods) VALUES (x'01', 'on', x'00000000');
|
||||||
|
|
||||||
CREATE TABLE tags
|
CREATE TABLE tags
|
||||||
(
|
(
|
||||||
|
|
|
@ -15,7 +15,7 @@ use crate::types::EmgauwaUid;
|
||||||
pub struct Schedule {
|
pub struct Schedule {
|
||||||
#[serde(skip)]
|
#[serde(skip)]
|
||||||
pub id: i32,
|
pub id: i32,
|
||||||
#[serde(alias = "id")]
|
#[serde(rename(serialize = "id"))]
|
||||||
pub uid: EmgauwaUid,
|
pub uid: EmgauwaUid,
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub periods: Periods,
|
pub periods: Periods,
|
||||||
|
|
|
@ -45,17 +45,10 @@ pub async fn show(web::Path((schedule_uid,)): web::Path<(String,)>) -> impl Resp
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn add(post: web::Json<RequestSchedule>) -> impl Responder {
|
pub async fn add(post: web::Json<RequestSchedule>) -> impl Responder {
|
||||||
|
|
||||||
println!("model: {:?}", post);
|
|
||||||
|
|
||||||
for period in post.periods.0.iter() {
|
|
||||||
println!("start: {:?}; end: {:?}", period.start, period.end);
|
|
||||||
}
|
|
||||||
|
|
||||||
let new_schedule = db::create_schedule(&post.name, &post.periods);
|
let new_schedule = db::create_schedule(&post.name, &post.periods);
|
||||||
|
|
||||||
match new_schedule {
|
match new_schedule {
|
||||||
Ok(ok) => HttpResponse::Ok().json(ok),
|
Ok(ok) => HttpResponse::Created().json(ok),
|
||||||
Err(err) => HttpResponse::InternalServerError().json(err),
|
Err(err) => HttpResponse::InternalServerError().json(err),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
13
src/main.rs
13
src/main.rs
|
@ -4,7 +4,9 @@ extern crate diesel;
|
||||||
extern crate diesel_migrations;
|
extern crate diesel_migrations;
|
||||||
extern crate dotenv;
|
extern crate dotenv;
|
||||||
|
|
||||||
use actix_web::{App, HttpServer, web};
|
use actix_web::{middleware, web, App, HttpServer};
|
||||||
|
use actix_web::middleware::normalize::TrailingSlash;
|
||||||
|
use env_logger::{Builder, Env};
|
||||||
|
|
||||||
mod db;
|
mod db;
|
||||||
mod handlers;
|
mod handlers;
|
||||||
|
@ -14,8 +16,17 @@ mod types;
|
||||||
async fn main() -> std::io::Result<()> {
|
async fn main() -> std::io::Result<()> {
|
||||||
db::run_migrations();
|
db::run_migrations();
|
||||||
|
|
||||||
|
Builder::from_env(Env::default().default_filter_or("info")).init();
|
||||||
|
|
||||||
HttpServer::new(|| {
|
HttpServer::new(|| {
|
||||||
App::new()
|
App::new()
|
||||||
|
.wrap(middleware::DefaultHeaders::new()
|
||||||
|
.header("Access-Control-Allow-Origin", "*")
|
||||||
|
.header("Access-Control-Allow-Headers", "*")
|
||||||
|
.header("Access-Control-Allow-Methods", "*")
|
||||||
|
)
|
||||||
|
.wrap(middleware::Logger::default())
|
||||||
|
.wrap(middleware::NormalizePath::new(TrailingSlash::Trim))
|
||||||
.route(
|
.route(
|
||||||
"/api/v1/schedules",
|
"/api/v1/schedules",
|
||||||
web::get().to(handlers::v1::schedules::index),
|
web::get().to(handlers::v1::schedules::index),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue