diff --git a/src/main.rs b/src/main.rs index f3ce665..e35a8e3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -175,32 +175,34 @@ async fn get_ksiazki( let search_term = params.get("search").map(|s| s.as_str()).unwrap_or(""); let sort_by = params.get("sort").map(|s| s.as_str()).unwrap_or("default"); - let base_query = "SELECT + // Poprawione zapytanie bazowe + let mut base_query = "SELECT id, tytul, autor, cena, COALESCE('/images/' || obraz_url, '/images/placeholder.jpg') as obraz_url, COALESCE(opis, 'Brak opisu') as opis - FROM ksiazki - ORDER BY tytul"; + FROM ksiazki".to_string(); - let sort_clause = match sort_by { + // Warunek WHERE + let where_clause = if !search_term.is_empty() { + " WHERE LOWER(tytul) LIKE LOWER($1) OR LOWER(autor) LIKE LOWER($1)" + } else { + "" + }; + + // Poprawna kolejność klauzul + let order_clause = match sort_by { "price_asc" => " ORDER BY cena ASC", "price_desc" => " ORDER BY cena DESC", "title_asc" => " ORDER BY tytul ASC", "author_asc" => " ORDER BY autor ASC", - _ => "" + _ => " ORDER BY tytul ASC" // Domyślne sortowanie }; - let query = if !search_term.is_empty() { - format!( - "{} WHERE LOWER(tytul) LIKE LOWER($1) OR LOWER(autor) LIKE LOWER($1){}", - base_query, sort_clause - ) - } else { - format!("{}{}", base_query, sort_clause) - }; + // Łączymy części zapytania w odpowiedniej kolejności + let query = format!("{}{}{}", base_query, where_clause, order_clause); let mut query_builder = sqlx::query_as::<_, Book>(&query); diff --git a/static/js/main.js b/static/js/main.js index a94e239..891567d 100644 --- a/static/js/main.js +++ b/static/js/main.js @@ -1,3 +1,56 @@ +(() => { + // Sprawdź czy jesteśmy na stronie głównej + const booksContainer = document.getElementById('books-container'); + const searchInput = document.getElementById('searchInput'); + const sortSelect = document.getElementById('sortSelect'); + + if (!booksContainer || !searchInput || !sortSelect) return; + + // Funkcje specyficzne dla strony głównej + const createBookCard = (book) => ` +
${book.cena} PLN
+Brak wyników wyszukiwania