# Book Detail Configuration # Demonstrates using path parameters with the SQLite module load_module target/debug/libsqlite_serve.dylib; worker_processes 1; events {} error_log logs/error.log debug; http { # Global templates for shared components sqlite_global_templates "server_root/global_templates"; server { listen 8081; root "server_root"; # Book detail page using a path parameter (numbered capture) # Captures the book ID from the URL and passes it to the SQL query location = /book { add_header "Content-Type" "text/html; charset=utf-8"; sqlite_db "book_catalog.db"; sqlite_query "SELECT * FROM books WHERE id = ?"; sqlite_param $arg_id; sqlite_template "detail.hbs"; } # Books by genre using query parameter location = /genre { add_header "Content-Type" "text/html; charset=utf-8"; sqlite_db "book_catalog.db"; sqlite_query "SELECT * FROM books WHERE genre = ? ORDER BY rating DESC"; sqlite_param $arg_genre; sqlite_template "genre.hbs"; } # Search by year range using query parameters location = /years { add_header "Content-Type" "text/html; charset=utf-8"; sqlite_db "book_catalog.db"; sqlite_query "SELECT * FROM books WHERE year >= ? AND year <= ? ORDER BY year DESC, title"; sqlite_param $arg_min; sqlite_param $arg_max; sqlite_template "list.hbs"; } # Fallback to all books location / { add_header "Content-Type" "text/html; charset=utf-8"; sqlite_db "book_catalog.db"; sqlite_query "SELECT * FROM books ORDER BY rating DESC, title"; sqlite_template "list.hbs"; } } }