From 358ed6082a688b5f51b9c9d16663804e2d5e968e Mon Sep 17 00:00:00 2001 From: Per Stark Date: Tue, 3 Dec 2024 13:26:17 +0100 Subject: [PATCH] init tera and html lsp --- Cargo.lock | 226 ++++++++++++++++++++++++++ Cargo.toml | 1 + flake.nix | 1 + src/bin/server.rs | 10 +- src/server/routes/hello_world.rs | 10 ++ src/server/routes/mod.rs | 1 + src/server/templates/hello_world.html | 4 + 7 files changed, 252 insertions(+), 1 deletion(-) create mode 100644 src/server/routes/hello_world.rs create mode 100644 src/server/templates/hello_world.html diff --git a/Cargo.lock b/Cargo.lock index 4688457..0cf607a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -886,6 +886,16 @@ dependencies = [ "syn_derive", ] +[[package]] +name = "bstr" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -1046,6 +1056,28 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "chrono-tz" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93698b29de5e97ad0ae26447b344c482a7284c737d9ddc5f9e52b74a336671bb" +dependencies = [ + "chrono", + "chrono-tz-build", + "phf", +] + +[[package]] +name = "chrono-tz-build" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c088aee841df9c3041febbb73934cfc39708749bf96dc827e3359cd39ef11b1" +dependencies = [ + "parse-zoneinfo", + "phf", + "phf_codegen", +] + [[package]] name = "ciborium" version = "0.2.2" @@ -1147,6 +1179,25 @@ dependencies = [ "libc", ] +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.20" @@ -1783,6 +1834,30 @@ version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +[[package]] +name = "globset" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", +] + +[[package]] +name = "globwalk" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" +dependencies = [ + "bitflags 2.6.0", + "ignore", + "walkdir", +] + [[package]] name = "half" version = "2.4.1" @@ -1936,6 +2011,15 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "humansize" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" +dependencies = [ + "libm", +] + [[package]] name = "humantime" version = "2.1.0" @@ -2040,6 +2124,22 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "ignore" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata 0.4.7", + "same-file", + "walkdir", + "winapi-util", +] + [[package]] name = "indexmap" version = "1.9.3" @@ -2706,6 +2806,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "parse-zoneinfo" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24" +dependencies = [ + "regex", +] + [[package]] name = "password-hash" version = "0.5.0" @@ -2777,6 +2886,40 @@ dependencies = [ "ucd-trie", ] +[[package]] +name = "pest_derive" +version = "2.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "pest_meta" +version = "2.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" +dependencies = [ + "once_cell", + "pest", + "sha2", +] + [[package]] name = "petgraph" version = "0.6.5" @@ -3998,6 +4141,16 @@ dependencies = [ "autocfg", ] +[[package]] +name = "slug" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" +dependencies = [ + "deunicode", + "wasm-bindgen", +] + [[package]] name = "smallvec" version = "1.13.2" @@ -4424,6 +4577,28 @@ dependencies = [ "utf-8", ] +[[package]] +name = "tera" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab9d851b45e865f178319da0abdbfe6acbc4328759ff18dafc3a41c16b4cd2ee" +dependencies = [ + "chrono", + "chrono-tz", + "globwalk", + "humansize", + "lazy_static", + "percent-encoding", + "pest", + "pest_derive", + "rand", + "regex", + "serde", + "serde_json", + "slug", + "unic-segment", +] + [[package]] name = "term" version = "0.7.0" @@ -4799,6 +4974,56 @@ dependencies = [ "web-time", ] +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-segment" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ed5d26be57f84f176157270c112ef57b86debac9cd21daaabbe56db0f88f23" +dependencies = [ + "unic-ucd-segment", +] + +[[package]] +name = "unic-ucd-segment" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2079c122a62205b421f499da10f3ee0f7697f012f55b675e002483c73ea34700" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + [[package]] name = "unicase" version = "2.7.0" @@ -5396,6 +5621,7 @@ dependencies = [ "sha2", "surrealdb", "tempfile", + "tera", "text-splitter", "thiserror", "tokio", diff --git a/Cargo.toml b/Cargo.toml index 3ed05ae..e18e01e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,6 +17,7 @@ serde_json = "1.0.128" sha2 = "0.10.8" surrealdb = "2.0.4" tempfile = "3.12.0" +tera = "1.20.0" text-splitter = "0.18.1" thiserror = "1.0.63" tokio = { version = "1.40.0", features = ["full"] } diff --git a/flake.nix b/flake.nix index 32f679c..24feddd 100644 --- a/flake.nix +++ b/flake.nix @@ -41,6 +41,7 @@ ''; packages = [ + pkgs.vscode-langservers-extracted ]; languages.rust.enable = true; diff --git a/src/bin/server.rs b/src/bin/server.rs index d0c26f9..fdfa195 100644 --- a/src/bin/server.rs +++ b/src/bin/server.rs @@ -4,6 +4,7 @@ use axum::{ Extension, Router, }; use std::sync::Arc; +use tera::Tera; use tracing_subscriber::{fmt, prelude::*, EnvFilter}; use zettle_db::{ rabbitmq::{publisher::RabbitMQProducer, RabbitMQConfig}, @@ -25,6 +26,8 @@ async fn main() -> Result<(), Box> { .try_init() .ok(); + let tera = Tera::new("src/server/templates/**/*.html").unwrap(); + // Set up RabbitMQ let config = RabbitMQConfig { amqp_addr: "amqp://localhost".to_string(), @@ -50,7 +53,12 @@ async fn main() -> Result<(), Box> { .route("/file/:uuid", put(update_file_handler)) .route("/file/:uuid", delete(delete_file_handler)) .route("/query", post(query_handler)) - .layer(Extension(db_client)); + .layer(Extension(db_client)) + .route( + "/hello_world", + get(zettle_db::server::routes::hello_world::hello_world_handler), + ) + .layer(Extension(tera)); tracing::info!("Listening on 0.0.0.0:3000"); let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await?; diff --git a/src/server/routes/hello_world.rs b/src/server/routes/hello_world.rs new file mode 100644 index 0000000..4589920 --- /dev/null +++ b/src/server/routes/hello_world.rs @@ -0,0 +1,10 @@ +use axum::Extension; +use tera::{Context, Tera}; + +use crate::error::ApiError; + +pub async fn hello_world_handler(Extension(tera): Extension) -> Result { + let output = tera.render("hello_world.html", &Context::new()).unwrap(); + + Ok(output) +} diff --git a/src/server/routes/mod.rs b/src/server/routes/mod.rs index 7403bb2..d23b2fe 100644 --- a/src/server/routes/mod.rs +++ b/src/server/routes/mod.rs @@ -1,4 +1,5 @@ pub mod file; +pub mod hello_world; pub mod ingress; pub mod query; pub mod queue_length; diff --git a/src/server/templates/hello_world.html b/src/server/templates/hello_world.html new file mode 100644 index 0000000..29c63f8 --- /dev/null +++ b/src/server/templates/hello_world.html @@ -0,0 +1,4 @@ +

Hello

+
Hello
+

HI

+wowoow