v0.10-frontend3

This commit is contained in:
2022-11-01 11:38:10 +05:30
parent 4e3b319743
commit ef128c6bb7

View File

@@ -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,7 +266,11 @@ 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 bookui = BookUI{ 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{
id, id,
title: group.clone().into_iter().map( |u| u.title).next().unwrap(), title: group.clone().into_iter().map( |u| u.title).next().unwrap(),
open_library_key: group.clone().into_iter().map( |u| u.open_library_key).next(), open_library_key: group.clone().into_iter().map( |u| u.open_library_key).next(),
@@ -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(),