v0.10-frontend3
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
use axum::{
|
use axum::{
|
||||||
http::{HeaderValue, Method},
|
http::{HeaderValue, Method, StatusCode},
|
||||||
response::IntoResponse,
|
response::IntoResponse,
|
||||||
routing::{get,post},
|
routing::{get,post,get_service},
|
||||||
Json, Router,
|
Json, Router,
|
||||||
extract::{Extension, Path},
|
extract::{Extension, Path},
|
||||||
};
|
};
|
||||||
@@ -12,7 +12,10 @@ use serde::{Deserialize, Serialize};
|
|||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::net::{IpAddr, Ipv6Addr, SocketAddr};
|
use std::net::{IpAddr, Ipv6Addr, SocketAddr};
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
use std::io;
|
||||||
use tower::ServiceBuilder;
|
use tower::ServiceBuilder;
|
||||||
|
use tower_http::services::ServeDir;
|
||||||
|
|
||||||
use tower_http::cors::{Any,CorsLayer};
|
use tower_http::cors::{Any,CorsLayer};
|
||||||
use tower_http::trace::TraceLayer;
|
use tower_http::trace::TraceLayer;
|
||||||
use booksman_orm::{
|
use booksman_orm::{
|
||||||
@@ -117,6 +120,10 @@ impl Books {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn handle_error(_err: io::Error) -> impl IntoResponse {
|
||||||
|
(StatusCode::INTERNAL_SERVER_ERROR, "Something went wrong...")
|
||||||
|
}
|
||||||
|
|
||||||
// Setup the command line interface with clap.
|
// Setup the command line interface with clap.
|
||||||
#[derive(Parser, Debug)]
|
#[derive(Parser, Debug)]
|
||||||
#[clap(name = "server", about = "A server for our wasm project!")]
|
#[clap(name = "server", about = "A server for our wasm project!")]
|
||||||
@@ -163,6 +170,7 @@ pub async fn main() {
|
|||||||
.route("/api/delete/:id", post(delete_book))
|
.route("/api/delete/:id", post(delete_book))
|
||||||
.route("/api/list", post(list_book))
|
.route("/api/list", post(list_book))
|
||||||
.route("/api/create", post(create_book))
|
.route("/api/create", post(create_book))
|
||||||
|
.nest("/images", get_service(ServeDir::new("../images")).handle_error(handle_error))
|
||||||
.merge(SpaRouter::new("/assets", opt.static_dir))
|
.merge(SpaRouter::new("/assets", opt.static_dir))
|
||||||
.layer(ServiceBuilder::new().layer(TraceLayer::new_for_http()))
|
.layer(ServiceBuilder::new().layer(TraceLayer::new_for_http()))
|
||||||
.layer(Extension(conn))
|
.layer(Extension(conn))
|
||||||
@@ -258,6 +266,10 @@ async fn list_book(
|
|||||||
|
|
||||||
let mut res: Vec<BookUI> = Vec::with_capacity(5);
|
let mut res: Vec<BookUI> = Vec::with_capacity(5);
|
||||||
for (id,group) in data_grouped.into_iter() {
|
for (id,group) in data_grouped.into_iter() {
|
||||||
|
let mut cover = group.clone().into_iter().clone().map(|u| u.cover).next();
|
||||||
|
if !cover.is_none() {
|
||||||
|
cover = Some(format!("http://localhost:8081/images/{}",cover.unwrap()));
|
||||||
|
}
|
||||||
let bookui = BookUI{
|
let bookui = BookUI{
|
||||||
id,
|
id,
|
||||||
title: group.clone().into_iter().map( |u| u.title).next().unwrap(),
|
title: group.clone().into_iter().map( |u| u.title).next().unwrap(),
|
||||||
@@ -267,7 +279,7 @@ first_publish_year: group.clone().into_iter().clone().map(|u| u.first_publish_ye
|
|||||||
median_page_count: group.clone().into_iter().clone().map(|u| u.median_page_count).next(),
|
median_page_count: group.clone().into_iter().clone().map(|u| u.median_page_count).next(),
|
||||||
goodread_id: group.clone().into_iter().clone().map(|u| u.goodread_id).next(),
|
goodread_id: group.clone().into_iter().clone().map(|u| u.goodread_id).next(),
|
||||||
description: group.clone().into_iter().clone().map(|u| u.description).next(),
|
description: group.clone().into_iter().clone().map(|u| u.description).next(),
|
||||||
cover: group.clone().into_iter().clone().map(|u| u.cover).next(),
|
cover: cover.clone(),
|
||||||
location: group.clone().into_iter().clone().map(|u| u.location).next(),
|
location: group.clone().into_iter().clone().map(|u| u.location).next(),
|
||||||
time_added: group.clone().into_iter().clone().map(|u| u.time_added).next(),
|
time_added: group.clone().into_iter().clone().map(|u| u.time_added).next(),
|
||||||
rating: group.clone().into_iter().clone().map(|u| u.rating).next(),
|
rating: group.clone().into_iter().clone().map(|u| u.rating).next(),
|
||||||
|
|||||||
Reference in New Issue
Block a user