From 06af646ad4126ccd14699a0c54caa9f42c774dcc Mon Sep 17 00:00:00 2001 From: Vinod J M Date: Mon, 31 Oct 2022 13:41:10 +0530 Subject: [PATCH] v0.10-frontend-worksish --- backend/api/src/lib.rs | 2 +- backend/orm/src/query.rs | 19 ++++++----- frontend/src/main.rs | 68 ++++++++++++++++++++-------------------- 3 files changed, 47 insertions(+), 42 deletions(-) diff --git a/backend/api/src/lib.rs b/backend/api/src/lib.rs index 3bd8da7..f9251ef 100644 --- a/backend/api/src/lib.rs +++ b/backend/api/src/lib.rs @@ -3,7 +3,7 @@ use axum::{ response::IntoResponse, routing::{get,post}, Json, Router, - extract::{Extension, Form, Path}, + extract::{Extension, Path}, }; use axum_extra::routing::SpaRouter; use clap::Parser; diff --git a/backend/orm/src/query.rs b/backend/orm/src/query.rs index a7fb6c0..e7980df 100644 --- a/backend/orm/src/query.rs +++ b/backend/orm/src/query.rs @@ -75,13 +75,18 @@ pub async fn find_books_plus_meta_in_page( let paginator2: Vec = Book::find() .filter(Condition::any() .add(book::Column::Id.is_in(book_ids))) - .join(JoinType::LeftJoin, book_author::Relation::Book.def()) - .join(JoinType::LeftJoin, book_person::Relation::Book.def()) - .join(JoinType::LeftJoin, book_place::Relation::Book.def()) - .join(JoinType::LeftJoin, book_subject::Relation::Book.def()) - .join(JoinType::LeftJoin, book_time::Relation::Book.def()) - .join(JoinType::LeftJoin, book_isbn::Relation::Book.def()) - // .column_as(book::Column::Id, "id") + .join(JoinType::LeftJoin, book::Relation::BookAuthor.def()) + .join(JoinType::LeftJoin, book::Relation::BookPerson.def()) + .join(JoinType::LeftJoin, book::Relation::BookPlace.def()) + .join(JoinType::LeftJoin, book::Relation::BookSubject.def()) + .join(JoinType::LeftJoin, book::Relation::BookTime.def()) + .join(JoinType::LeftJoin, book::Relation::BookIsbn.def()) + .column_as(book_author::Column::AuthorName, "author_name") + .column_as(book_person::Column::Person, "person") + .column_as(book_place::Column::Place, "place") + .column_as(book_subject::Column::Subject, "subject") + .column_as(book_time::Column::Time, "time") + .column_as(book_isbn::Column::Isbn, "isbn") .into_model::() .all(db).await?; diff --git a/frontend/src/main.rs b/frontend/src/main.rs index e34a698..8572098 100644 --- a/frontend/src/main.rs +++ b/frontend/src/main.rs @@ -255,23 +255,23 @@ pub fn BookOL(cx: Scope, bookitem: BookUIProp) -> View { async fn AddingUI(cx: Scope<'_>) -> View { let app_state = use_context::(cx); -let inp_title = create_signal(cx, String::new()); -let inp_olkey = create_signal(cx, String::new()); -let inp_editioncount = create_signal(cx, String::new()); -let inp_publishyear = create_signal(cx, String::new()); -let inp_medianpage = create_signal(cx, String::new()); -let inp_goodread = create_signal(cx, String::new()); -let inp_desc = create_signal(cx, String::new()); -let inp_cover = create_signal(cx, String::new()); -let inp_location = create_signal(cx, String::new()); -let inp_rating = create_signal(cx, String::new()); -let inp_comments = create_signal(cx, String::new()); -let inp_author = create_signal(cx, String::new()); -let inp_person = create_signal(cx, String::new()); -let inp_place = create_signal(cx, String::new()); -let inp_subject = create_signal(cx, String::new()); -let inp_time = create_signal(cx, String::new()); -let inp_isbn = create_signal(cx, String::new()); +let inp_title = create_signal(cx, (*app_state.addingbook.get()).clone().title); +let inp_olkey = create_signal(cx, (*app_state.addingbook.get()).clone().open_library_key.unwrap_or("".to_string())); +let inp_editioncount = create_signal(cx, (*app_state.addingbook.get()).clone().edition_count.unwrap_or(0).to_string()); +let inp_publishyear = create_signal(cx, (*app_state.addingbook.get()).clone().first_publish_year.unwrap_or(0).to_string()); +let inp_medianpage = create_signal(cx, (*app_state.addingbook.get()).clone().median_page_count.unwrap_or(0).to_string()); +let inp_goodread = create_signal(cx, (*app_state.addingbook.get()).clone().goodread_id.unwrap_or("".to_string())); +let inp_desc = create_signal(cx, (*app_state.addingbook.get()).clone().description.unwrap_or("".to_string())); +let inp_cover = create_signal(cx, (*app_state.addingbook.get()).clone().cover.unwrap_or("".to_string())); +let inp_location = create_signal(cx, (*app_state.addingbook.get()).clone().location.unwrap_or("".to_string())); +let inp_rating = create_signal(cx, (*app_state.addingbook.get()).clone().location.unwrap_or("".to_string())); +let inp_comments = create_signal(cx, (*app_state.addingbook.get()).clone().comments.unwrap_or("".to_string())); +let inp_author = create_signal(cx, (*app_state.addingbook.get()).clone().author_name.unwrap_or(vec!["".to_string()]).join(", ")); +let inp_person = create_signal(cx, (*app_state.addingbook.get()).clone().person.unwrap_or(vec!["".to_string()]).join(", ")); +let inp_place = create_signal(cx, (*app_state.addingbook.get()).clone().place.unwrap_or(vec!["".to_string()]).join(", ")); +let inp_subject = create_signal(cx, (*app_state.addingbook.get()).clone().subject.unwrap_or(vec!["".to_string()]).join(", ")); +let inp_time = create_signal(cx, (*app_state.addingbook.get()).clone().time.unwrap_or(vec!["".to_string()]).join(", ")); +let inp_isbn = create_signal(cx, (*app_state.addingbook.get()).clone().isbn.unwrap_or(vec!["".to_string()]).join(", ")); let handle_add = |_| { info!("Adding book"); @@ -316,23 +316,23 @@ info!("Adding book"); p { (if *app_state.adding.get() == true { view!{ cx, - input(bind:value=inp_title, placeholder="Title" ,value = (*app_state.addingbook.get()).clone().title) - input(bind:value=inp_olkey, placeholder="OpenLibrary Key" ,value= (*app_state.addingbook.get()).clone().open_library_key.unwrap_or("".to_string())) - input(bind:value=inp_editioncount, placeholder="Number of editions" ,value= (*app_state.addingbook.get()).clone().edition_count.unwrap_or(0).to_string()) - input(bind:value=inp_publishyear, placeholder="First publish year" ,value= (*app_state.addingbook.get()).clone().first_publish_year.unwrap_or(0).to_string()) - input(bind:value=inp_medianpage, placeholder="Page count" ,value= (*app_state.addingbook.get()).clone().median_page_count.unwrap_or(0).to_string()) - input(bind:value=inp_goodread, placeholder="GoodRead ID" ,value= (*app_state.addingbook.get()).clone().goodread_id.unwrap_or("".to_string())) - input(bind:value=inp_desc, placeholder="Description" ,value= (*app_state.addingbook.get()).clone().description.unwrap_or("".to_string())) - input(bind:value=inp_cover, placeholder="Cover URL" ,value= (*app_state.addingbook.get()).clone().cover.unwrap_or("".to_string())) - input(bind:value=inp_location, placeholder="Location" ,value= (*app_state.addingbook.get()).clone().location.unwrap_or("".to_string())) - input(bind:value=inp_rating, placeholder="Rating (/10)" ,value= (*app_state.addingbook.get()).clone().rating.unwrap_or(0).to_string()) - input(bind:value=inp_comments, placeholder="Comments" ,value= (*app_state.addingbook.get()).clone().comments.unwrap_or("".to_string())) - input(bind:value=inp_author, placeholder="Authors" ,value=(*app_state.addingbook.get()).clone().author_name.unwrap_or(vec!["".to_string()]).join(", ")) - input(bind:value=inp_person, placeholder="Persons" ,value=(*app_state.addingbook.get()).clone().person.unwrap_or(vec!["".to_string()]).join(", ")) - input(bind:value=inp_place, placeholder="Places" ,value=(*app_state.addingbook.get()).clone().place.unwrap_or(vec!["".to_string()]).join(", ")) - input(bind:value=inp_subject, placeholder="Subjects" ,value=(*app_state.addingbook.get()).clone().subject.unwrap_or(vec!["".to_string()]).join(", ")) - input(bind:value=inp_time, placeholder="Times" ,value=(*app_state.addingbook.get()).clone().time.unwrap_or(vec!["".to_string()]).join(", ")) - input(bind:value=inp_isbn, placeholder="ISBNs" ,value=(*app_state.addingbook.get()).clone().isbn.unwrap_or(vec!["".to_string()]).join(", ")) + input(bind:value=inp_title, placeholder="Title" ) + input(bind:value=inp_olkey, placeholder="OpenLibrary Key" ) + input(bind:value=inp_editioncount, placeholder="Number of editions" ) + input(bind:value=inp_publishyear, placeholder="First publish year" ) + input(bind:value=inp_medianpage, placeholder="Page count" ) + input(bind:value=inp_goodread, placeholder="GoodRead ID" ) + input(bind:value=inp_desc, placeholder="Description" ) + input(bind:value=inp_cover, placeholder="Cover URL" ) + input(bind:value=inp_location, placeholder="Location" ) + input(bind:value=inp_rating, placeholder="Rating (/10)" ) + input(bind:value=inp_comments, placeholder="Comments" ) + input(bind:value=inp_author, placeholder="Authors") + input(bind:value=inp_person, placeholder="Persons" ) + input(bind:value=inp_place, placeholder="Places" ) + input(bind:value=inp_subject, placeholder="Subjects" ) + input(bind:value=inp_time, placeholder="Times" ) + input(bind:value=inp_isbn, placeholder="ISBNs" ) button(class="add", on:click=handle_add){ "Add book to DB" } } } else {