From 8dc3105fb62f8ae4470f24c82709030c7dae6bfe Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 1 Aug 2022 01:50:49 +0200 Subject: [PATCH 001/278] first commit --- README.md | 1 + templates/default.handlebars | 4 ++++ templates/error.handlebars | 0 3 files changed, 5 insertions(+) create mode 100644 README.md create mode 100644 templates/default.handlebars create mode 100644 templates/error.handlebars diff --git a/README.md b/README.md new file mode 100644 index 00000000..630270a5 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# sqlsite diff --git a/templates/default.handlebars b/templates/default.handlebars new file mode 100644 index 00000000..bb3aae9f --- /dev/null +++ b/templates/default.handlebars @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/templates/error.handlebars b/templates/error.handlebars new file mode 100644 index 00000000..e69de29b From d0f930cedb0f0e0d2090612951c11302422a580e Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 1 Aug 2022 01:51:36 +0200 Subject: [PATCH 002/278] Initial code --- .gitignore | 1 + Cargo.lock | 2013 ++++++++++++++++++++++++++++++++++ Cargo.toml | 20 + src/http.rs | 91 ++ src/main.rs | 34 + src/render.rs | 239 ++++ templates/default.handlebars | 5 +- templates/error.handlebars | 4 + templates/shell.handlebars | 25 + 9 files changed, 2428 insertions(+), 4 deletions(-) create mode 100644 .gitignore create mode 100644 Cargo.lock create mode 100644 Cargo.toml create mode 100644 src/http.rs create mode 100644 src/main.rs create mode 100644 src/render.rs create mode 100644 templates/shell.handlebars diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..ea8c4bf7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 00000000..a02a87e6 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,2013 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "actix-codec" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57a7559404a7f3573127aab53c08ce37a6c6a315c374a31070f3c91cd1b4a7fe" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-sink", + "log", + "memchr", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "actix-files" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d832782fac6ca7369a70c9ee9a20554623c5e51c76e190ad151780ebea1cf689" +dependencies = [ + "actix-http", + "actix-service", + "actix-utils", + "actix-web", + "askama_escape", + "bitflags", + "bytes", + "derive_more", + "futures-core", + "http-range", + "log", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", +] + +[[package]] +name = "actix-http" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f9ffb6db08c1c3a1f4aef540f1a63193adc73c4fbd40b75a95fc8c5258f6e51" +dependencies = [ + "actix-codec", + "actix-rt", + "actix-service", + "actix-utils", + "ahash", + "base64", + "bitflags", + "brotli", + "bytes", + "bytestring", + "derive_more", + "encoding_rs", + "flate2", + "futures-core", + "h2", + "http", + "httparse", + "httpdate", + "itoa", + "language-tags", + "local-channel", + "mime", + "percent-encoding", + "pin-project-lite", + "rand", + "sha1", + "smallvec", + "tracing", + "zstd", +] + +[[package]] +name = "actix-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "465a6172cf69b960917811022d8f29bc0b7fa1398bc4f78b3c466673db1213b6" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "actix-router" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb60846b52c118f2f04a56cc90880a274271c489b2498623d58176f8ca21fa80" +dependencies = [ + "bytestring", + "firestorm", + "http", + "log", + "regex", + "serde", +] + +[[package]] +name = "actix-rt" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ea16c295198e958ef31930a6ef37d0fb64e9ca3b6116e6b93a8bdae96ee1000" +dependencies = [ + "futures-core", + "tokio", +] + +[[package]] +name = "actix-server" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0da34f8e659ea1b077bb4637948b815cd3768ad5a188fdcd74ff4d84240cd824" +dependencies = [ + "actix-rt", + "actix-service", + "actix-utils", + "futures-core", + "futures-util", + "mio", + "num_cpus", + "socket2", + "tokio", + "tracing", +] + +[[package]] +name = "actix-service" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b894941f818cfdc7ccc4b9e60fa7e53b5042a2e8567270f9147d5591893373a" +dependencies = [ + "futures-core", + "paste", + "pin-project-lite", +] + +[[package]] +name = "actix-utils" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e491cbaac2e7fc788dfff99ff48ef317e23b3cf63dbaf7aaab6418f40f92aa94" +dependencies = [ + "local-waker", + "pin-project-lite", +] + +[[package]] +name = "actix-web" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a27e8fe9ba4ae613c21f677c2cfaf0696c3744030c6f485b34634e502d6bb379" +dependencies = [ + "actix-codec", + "actix-http", + "actix-macros", + "actix-router", + "actix-rt", + "actix-server", + "actix-service", + "actix-utils", + "actix-web-codegen", + "ahash", + "bytes", + "bytestring", + "cfg-if", + "cookie", + "derive_more", + "encoding_rs", + "futures-core", + "futures-util", + "itoa", + "language-tags", + "log", + "mime", + "once_cell", + "pin-project-lite", + "regex", + "serde", + "serde_json", + "serde_urlencoded", + "smallvec", + "socket2", + "time", + "url", +] + +[[package]] +name = "actix-web-codegen" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f270541caec49c15673b0af0e9a00143421ad4f118d2df7edcb68b627632f56" +dependencies = [ + "actix-router", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35ef4730490ad1c4eae5c4325b2a95f521d023e5c885853ff7aca0a6a1631db3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "697ed7edc0f1711de49ce108c541623a0af97c6c60b2f6e2b65229847ac843c2" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "anyhow" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704" + +[[package]] +name = "askama_escape" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" + +[[package]] +name = "atoi" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7c57d12312ff59c811c0643f4d80830505833c9ffaebd193d819392b265be8e" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block-buffer" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +dependencies = [ + "generic-array", +] + +[[package]] +name = "brotli" +version = "3.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ad2d4653bf5ca36ae797b1f4bb4dbddb60ce49ca4aed8a2ce4829f60425b80" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e" + +[[package]] +name = "bytestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b6a75fd3048808ef06af5cd79712be8111960adaf89d90250974b38fc3928a" +dependencies = [ + "bytes", +] + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +dependencies = [ + "jobserver", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "cookie" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94d4706de1b0fa5b132270cddffa8585166037822e260a944fe161acd137ca05" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "cpufeatures" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53757d12b596c16c78b83458d732a5d1a17ab3f53f2f7412f6fb57cc8a140ab3" +dependencies = [ + "crc-catalog", +] + +[[package]] +name = "crc-catalog" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d0165d2900ae6778e36e80bbc4da3b5eefccee9ba939761f9c2882a5d9af3ff" + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn", +] + +[[package]] +name = "digest" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "either" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "env_logger" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "firestorm" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c5f6c2c942da57e2aaaa84b8a521489486f14e75e7fa91dab70aba913975f98" + +[[package]] +name = "flate2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "flume" +version = "0.10.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1657b4441c3403d9f7b3409e47575237dac27b1b5726df654a6ecbf92f0f7577" +dependencies = [ + "futures-core", + "futures-sink", + "pin-project", + "spin", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" + +[[package]] +name = "futures-executor" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62007592ac46aa7c2b6416f7deb9a8a8f63a01e0f1d6e1787d5630170db2b63e" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot 0.11.2", +] + +[[package]] +name = "futures-macro" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" + +[[package]] +name = "futures-task" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" + +[[package]] +name = "futures-util" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +dependencies = [ + "futures-core", + "futures-macro", + "futures-sink", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "h2" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "handlebars" +version = "4.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "360d9740069b2f6cbb63ce2dbaa71a20d3185350cbb990d7bebeb9318415eb17" +dependencies = [ + "log", + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashlink" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452c155cb93fecdfb02a73dd57b5d8e442c2063bd7aac72f1bc5e4263a43086" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-range" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" + +[[package]] +name = "httparse" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "itertools" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" + +[[package]] +name = "jobserver" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" +dependencies = [ + "libc", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" + +[[package]] +name = "libsqlite3-sys" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "898745e570c7d0453cc1fbc4a701eb6c662ed54e8fec8b7d14be137ebeeb9d14" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "local-channel" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f303ec0e94c6c54447f84f3b0ef7af769858a9c4ef56ef2a986d3dcd4c3fc9c" +dependencies = [ + "futures-core", + "futures-sink", + "futures-util", + "local-waker", +] + +[[package]] +name = "local-waker" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e34f76eb3611940e0e7d53a9aaa4e6a3151f69541a282fd0dad5571420c53ff1" + +[[package]] +name = "lock_api" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys", +] + +[[package]] +name = "native-tls" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nom" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "once_cell" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" + +[[package]] +name = "openssl" +version = "0.10.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "ouroboros" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f31a3b678685b150cba82b702dcdc5e155893f63610cf388d30cd988d4ca2bf" +dependencies = [ + "aliasable", + "ouroboros_macro", + "stable_deref_trait", +] + +[[package]] +name = "ouroboros_macro" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "084fd65d5dd8b3772edccb5ffd1e4b7eba43897ecd0f9401e330e8c542959408" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.5", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.3", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "paste" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pest" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69486e2b8c2d2aeb9762db7b4e00b0331156393555cff467f4163ff06821eef8" +dependencies = [ + "thiserror", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b13570633aff33c6d22ce47dd566b10a3b9122c2fe9d8e7501895905be532b91" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3c567e5702efdc79fb18859ea74c3eb36e14c43da7b8c1f098a4ed6514ec7a0" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pest_meta" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eb32be5ee3bbdafa8c7a18b0a8a8d962b66cfa2ceee4037f49267a50ee821fe" +dependencies = [ + "once_cell", + "pest", + "sha-1", +] + +[[package]] +name = "pin-project" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro2" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "ryu" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "security-framework" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1" + +[[package]] +name = "serde" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" + +[[package]] +name = "serde_json" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha-1" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77f4e7f65455545c2153c1253d25056825e77ee2533f0e41deb65a93a34852f" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sha2" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" + +[[package]] +name = "socket2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "spin" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6002a767bff9e83f8eeecf883ecb8011875a21ae8da43bffb817a57e78cc09" +dependencies = [ + "lock_api", +] + +[[package]] +name = "sqlformat" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b7922be017ee70900be125523f38bdd644f4f06a1b16e8fa5a8ee8c34bffd4" +dependencies = [ + "itertools", + "nom", + "unicode_categories", +] + +[[package]] +name = "sqlsite" +version = "0.1.0" +dependencies = [ + "actix-files", + "actix-web", + "anyhow", + "env_logger", + "futures-util", + "handlebars", + "log", + "ouroboros", + "serde", + "sqlx", + "tokio", + "tokio-stream", +] + +[[package]] +name = "sqlx" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f82cbe94f41641d6c410ded25bbf5097c240cefdf8e3b06d04198d0a96af6a4" +dependencies = [ + "sqlx-core", + "sqlx-macros", +] + +[[package]] +name = "sqlx-core" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b69bf218860335ddda60d6ce85ee39f6cf6e5630e300e19757d1de15886a093" +dependencies = [ + "ahash", + "atoi", + "bitflags", + "byteorder", + "bytes", + "crc", + "crossbeam-queue", + "either", + "event-listener", + "flume", + "futures-channel", + "futures-core", + "futures-executor", + "futures-intrusive", + "futures-util", + "hashlink", + "hex", + "indexmap", + "itoa", + "libc", + "libsqlite3-sys", + "log", + "memchr", + "once_cell", + "paste", + "percent-encoding", + "sha2", + "smallvec", + "sqlformat", + "sqlx-rt", + "stringprep", + "thiserror", + "tokio-stream", + "url", +] + +[[package]] +name = "sqlx-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40c63177cf23d356b159b60acd27c54af7423f1736988502e36bae9a712118f" +dependencies = [ + "dotenv", + "either", + "heck", + "once_cell", + "proc-macro2", + "quote", + "sha2", + "sqlx-core", + "sqlx-rt", + "syn", + "url", +] + +[[package]] +name = "sqlx-rt" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874e93a365a598dc3dadb197565952cb143ae4aa716f7bcc933a8d836f6bf89f" +dependencies = [ + "actix-rt", + "native-tls", + "once_cell", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "stringprep" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "syn" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "thiserror" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217" +dependencies = [ + "itoa", + "libc", + "num_threads", + "time-macros", +] + +[[package]] +name = "time-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "once_cell", + "parking_lot 0.12.1", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "winapi", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "tracing" +version = "0.1.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +dependencies = [ + "once_cell", +] + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "ucd-trie" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89570599c4fe5585de2b388aab47e99f7fa4e9238a1399f707a02e356058141c" + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" + +[[package]] +name = "unicode-normalization" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-segmentation" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "url" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +dependencies = [ + "form_urlencoded", + "idna", + "matches", + "percent-encoding", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.1+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fd07cbbc53846d9145dbffdf6dd09a7a0aa52be46741825f5c97bdd4f73f12b" +dependencies = [ + "cc", + "libc", +] diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 00000000..97dc9757 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "sqlsite" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +sqlx = { version = "0.6.0", features = ["any", "runtime-actix-native-tls", "sqlite"] } +actix-web = "4" +handlebars = "4.3.3" +log = "0.4.17" +env_logger = "0.9.0" +actix-files = "0.6.2" +futures-util = "0.3.21" +ouroboros = "0.15.0" +tokio = { version = "1.20.1", features = ["sync"] } +tokio-stream = "0.1.9" +anyhow = "1.0.58" +serde = "1.0.140" diff --git a/src/http.rs b/src/http.rs new file mode 100644 index 00000000..1800e9b1 --- /dev/null +++ b/src/http.rs @@ -0,0 +1,91 @@ +use crate::render::RenderContext; +use crate::AppState; +use actix_web::{ + body::BodyStream, dev::Service, dev::ServiceResponse, http::header::CONTENT_TYPE, + middleware::Logger, web, web::Bytes, App, HttpRequest, HttpResponse, HttpServer, +}; +use futures_util::StreamExt; +use futures_util::TryFutureExt; +const WEB_ROOT: &str = "."; + +pub struct ResponseWriter { + response_bytes: tokio::sync::mpsc::UnboundedSender>, +} + +impl std::io::Write for &ResponseWriter { + fn write(&mut self, buf: &[u8]) -> std::io::Result { + self.response_bytes + .send(Ok(Bytes::copy_from_slice(buf))) + .map(|_| buf.len()) + .map_err(|err| { + log::error!("Broken pipe, unable to write response response. {}", err); + std::io::ErrorKind::BrokenPipe.into() + }) + } + fn flush(&mut self) -> std::io::Result<()> { + Ok(()) + } +} + +async fn stream_response(req: HttpRequest, sql_bytes: Bytes, response_bytes: ResponseWriter) { + let app_state: &web::Data = req.app_data().expect("no app data in render"); + let sql = std::str::from_utf8(&sql_bytes).unwrap(); + let mut stream = sqlx::query(sql).fetch_many(&app_state.db); + + let mut renderer = RenderContext::new(app_state, response_bytes); + while let Some(item) = stream.next().await { + renderer.handle_result(&item); + let res = match item { + Ok(sqlx::Either::Left(result)) => renderer.finish_query(result).await, + Ok(sqlx::Either::Right(row)) => renderer.handle_row(row).await, + Err(_) => Ok(()), + }; + renderer.handle_result(&res); + } + renderer.close().await; +} + +async fn render_sql(req: HttpRequest, sql_bytes: Bytes) -> actix_web::Result { + let (sender, receiver) = tokio::sync::mpsc::unbounded_channel(); + let writer = ResponseWriter { + response_bytes: sender, + }; + actix_web::rt::spawn(stream_response(req, sql_bytes, writer)); + Ok(HttpResponse::Ok() + .content_type("text/html; charset=utf-8") + .body(BodyStream::new( + tokio_stream::wrappers::UnboundedReceiverStream::new(receiver), + ))) +} + +async fn postprocess_response(serv_resp: ServiceResponse) -> actix_web::Result { + let (req, old_resp) = serv_resp.into_parts(); + let ctype = old_resp.headers().get(CONTENT_TYPE); + let new_resp = if ctype.map(|ct| ct == "application/x-sql").unwrap_or(false) { + let sql = actix_web::body::to_bytes(old_resp.into_body()).await?; + render_sql(req.clone(), sql).await? + } else { + old_resp + }; + Ok(ServiceResponse::new(req, new_resp)) +} + +pub async fn run_server(state: AppState) -> std::io::Result<()> { + let listen_on = state.listen_on; + let app_state = web::Data::new(state); + + HttpServer::new(move || { + App::new() + .app_data(app_state.clone()) + .wrap_fn(|req, srv| srv.call(req).and_then(postprocess_response)) + .default_service( + actix_files::Files::new("/", WEB_ROOT) + .show_files_listing() + .use_last_modified(true), + ) + .wrap(Logger::default()) + }) + .bind(listen_on)? + .run() + .await +} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 00000000..4bf74b2a --- /dev/null +++ b/src/main.rs @@ -0,0 +1,34 @@ +mod http; +mod render; + +use render::AllTemplates; + +pub struct AppState { + db: sqlx::AnyPool, + all_templates: AllTemplates, + listen_on: std::net::SocketAddr, +} + +#[actix_web::main] +async fn main() -> std::io::Result<()> { + env_logger::init_from_env(env_logger::Env::new().default_filter_or("info")); + + // Connect to the database + let database_url = + std::env::var("DATABASE_URL").unwrap_or_else(|_| "sqlite://site.db?mode=rwc".to_string()); + + let db = sqlx::AnyPool::connect(&database_url) + .await + .expect("Failed to connect to database"); + + log::info!("Connected to database: {database_url}"); + + let listen_on = std::env::var("LISTEN_ON") + .unwrap_or_else(|_| "0.0.0.0:8080".to_string()) + .parse::() + .expect("LISTEN_ON must be a valid IP:PORT"); + + let all_templates = AllTemplates::init(); + let state = AppState { db, listen_on, all_templates }; + http::run_server(state).await +} diff --git a/src/render.rs b/src/render.rs new file mode 100644 index 00000000..c875f592 --- /dev/null +++ b/src/render.rs @@ -0,0 +1,239 @@ +use std::any::Any; +use std::fs::DirEntry; +use crate::http::ResponseWriter; +use handlebars::{template::TemplateElement, Renderable, Template, Handlebars, TemplateError}; +use sqlx::{Column, Row, TypeInfo, ValueRef}; +use std::io::Write; +use crate::AppState; +use serde::{Serialize, Serializer}; + +pub struct RenderContext<'a> { + app_state: &'a AppState, + writer: ResponseWriter, + current_component: Option, +} + +const DEFAULT_COMPONENT: &str = "default"; + +impl RenderContext<'_> { + pub fn new(app_state: &AppState, writer: ResponseWriter) -> RenderContext { + let mut this = RenderContext { app_state, writer, current_component: None }; + this.render_template("shell_before"); + this + } + + pub async fn handle_row(&mut self, row: sqlx::any::AnyRow) -> Result<(), handlebars::RenderError> { + log::trace!("handle_row: {:?}", row.columns()); + if self.current_component.is_none() { + let component = row.try_get("component").unwrap_or_else(|_| DEFAULT_COMPONENT.to_string()); + self.open_component(component) + }; + let component = self.current_component.as_ref().unwrap(); + self.render_current_template_with_data(&&SerializeRow(row)); + Ok(()) + } + + pub async fn finish_query(&mut self, result: sqlx::any::AnyQueryResult) -> Result<(), handlebars::RenderError> { + log::trace!("finish_query: {:?}", result); + self.close_component(); + Ok(()) + } + + pub fn handle_error(&mut self, error: &impl std::error::Error) { + log::warn!("SQL error {}", error); + self.open_component("error".to_string()); + self.render_current_template_with_data(&format!("{}", error)); + self.close_component(); + } + + + pub fn handle_result(&mut self, result: &Result) { + if let Err(error) = result { + self.handle_error(error) + } + } + + pub async fn close(&mut self) { + log::warn!("close"); + } + + + fn render_template(&mut self, name: &str) { + self.render_template_with_data(name, &()) + } + + fn render_template_with_data(&mut self, name: &str, data: &T) { + self.handle_result(&self.app_state.all_templates.handlebars.render_to_write(name, data, &self.writer)); + } + + fn render_current_template_with_data(&mut self, data: &T) { + let name = self.current_component.as_ref().unwrap(); + self.handle_result(&self.app_state.all_templates.handlebars.render_to_write(name, data, &self.writer)); + } + + fn open_component(&mut self, component: String) { + self.render_template(&[&component, "_before"].join("")); + self.current_component = Some(component); + } + + fn close_component(&mut self) { + if let Some(component) = self.current_component.take() { + self.render_template(&(component + "_after")); + self.render_template("shell"); + } + } +} + +impl Drop for RenderContext<'_> { + fn drop(&mut self) { + if let Some(component) = self.current_component.take() { + self.render_template(&(component + "_after")); + } + self.render_template("shell_after"); + } +} + + +struct SerializeRow(R); + +impl<'r, R: Row> Serialize for &'r SerializeRow + where usize: sqlx::ColumnIndex, + &'r str: sqlx::Decode<'r, ::Database>, + str: sqlx::Type<::Database>, +{ + fn serialize(&self, serializer: S) -> Result where S: Serializer, { + use serde::ser::SerializeMap; + use sqlx::decode::Decode; + use serde::ser::Error; + let columns = self.0.columns(); + let mut map = serializer.serialize_map(Some(columns.len()))?; + for col in columns { + let key = col.name(); + if let Ok(raw_value) = self.0.try_get_raw(col.ordinal()) { + let value = Decode::decode(raw_value).map_err(Error::custom)?; + map.serialize_entry(key, value)?; + /*match raw_value.type_info().name() { + "TEXT" => { + () + }, + &_ => () + }*/ + } + } + map.end() + } +} + +struct SplitTemplate { + before_list: Template, + list_content: Template, + after_list: Template, +} + +fn split_template(mut original: Template) -> SplitTemplate { + let mut elements_after = Vec::new(); + let mut mapping_after = Vec::new(); + let mut items_template = None; + let found = original.elements.iter().position(is_template_list_item); + if let Some(idx) = found { + elements_after = original.elements.split_off(idx + 1); + mapping_after = original.mapping.split_off(idx + 1); + if let Some(TemplateElement::HelperBlock(tpl)) = original.elements.pop() { + original.mapping.pop(); + items_template = tpl.template + } + } + let mut list_content = items_template.unwrap_or_default(); + list_content.name = original.name.clone(); + SplitTemplate { + before_list: Template { + name: original.name.clone(), + elements: original.elements, + mapping: original.mapping, + }, + list_content, + after_list: Template { + name: original.name, + elements: elements_after, + mapping: mapping_after, + }, + } +} + +fn is_template_list_item(element: &TemplateElement) -> bool { + use handlebars::template::*; + use handlebars::Path::*; + use Parameter::*; + matches!(element, + TemplateElement::HelperBlock(tpl) + if matches!((&tpl.name, &tpl.params[..]), + (Name(name), [Path(Relative((_, param)))]) if name == "each" && param == "items")) +} + + +pub struct AllTemplates { + handlebars: Handlebars<'static>, +} + +impl AllTemplates { + pub fn init() -> Self { + let mut handlebars = Handlebars::new(); + let mut this = Self { handlebars }; + this.register_split("shell", include_str!("../templates/shell.handlebars")) + .expect("Embedded shell template contains an error"); + this.register_split("error", include_str!("../templates/error.handlebars")) + .expect("Embedded shell template contains an error"); + this.register_dir(); + this + } + + fn register_split(&mut self, name: &str, tpl_str: &str) -> Result<(), TemplateError> { + let mut tpl = Template::compile(tpl_str)?; + tpl.name = Some(name.to_string()); + let split = split_template(tpl); + self.handlebars.register_template(&[name, "before"].join("_"), split.before_list); + self.handlebars.register_template(&name, split.list_content); + self.handlebars.register_template(&[name, "after"].join("_"), split.after_list); + Ok(()) + } + + fn register_dir(&mut self) { + let mut errors = vec![]; + match std::fs::read_dir("templates") { + Ok(dir) => { + for f in dir { + errors.extend(self.register_dir_entry(f).err()); + } + } + Err(e) => errors.push(Box::new(e)) + } + for err in errors { + log::error!("Unable to register a template: {}", err); + } + } + + fn register_dir_entry(&mut self, entry: std::io::Result) -> Result<(), Box> { + let path = entry?.path(); + if matches!(path.extension(), Some(x) if x == "handlebars") { + let tpl_str = std::fs::read_to_string(&path)?; + let name = path.file_stem().unwrap().to_string_lossy(); + self.register_split(&name, &tpl_str)?; + } + Ok(()) + } +} + +#[test] +fn test_custom_template() { + let template = handlebars::Template::compile( + " +

+ Hello {{name}} ! + {{#each items}} +
  • {{this}}
  • + {{/each}} +

    ", + ) + .unwrap(); + assert_eq!(template.elements, vec![]); +} diff --git a/templates/default.handlebars b/templates/default.handlebars index bb3aae9f..474e1c1e 100644 --- a/templates/default.handlebars +++ b/templates/default.handlebars @@ -1,4 +1 @@ - \ No newline at end of file +{{#each items}}{{#if tag}}<{{{tag}}}>{{content}}{{else}}{{content}}{{/if}}{{/each}} \ No newline at end of file diff --git a/templates/error.handlebars b/templates/error.handlebars index e69de29b..bb3aae9f 100644 --- a/templates/error.handlebars +++ b/templates/error.handlebars @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/templates/shell.handlebars b/templates/shell.handlebars new file mode 100644 index 00000000..94b53e72 --- /dev/null +++ b/templates/shell.handlebars @@ -0,0 +1,25 @@ + + + + + + Sqlsite + + + + {{#each items}} + + {{/each}} + + + + From 7451cd438aee81f0035883b5fac51328d6ae8b3c Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 1 Aug 2022 01:53:44 +0200 Subject: [PATCH 003/278] Close current component on error --- src/render.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/render.rs b/src/render.rs index c875f592..68bb78aa 100644 --- a/src/render.rs +++ b/src/render.rs @@ -41,6 +41,9 @@ impl RenderContext<'_> { pub fn handle_error(&mut self, error: &impl std::error::Error) { log::warn!("SQL error {}", error); + if self.current_component.is_some() { + self.close_component(); + } self.open_component("error".to_string()); self.render_current_template_with_data(&format!("{}", error)); self.close_component(); From 36a3a5f053fd22e448ac6c01dbdd7b4d95f74710 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 1 Aug 2022 11:15:37 +0200 Subject: [PATCH 004/278] switch to tabler --- templates/error.handlebars | 12 ++++++++++-- templates/shell.handlebars | 8 ++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/templates/error.handlebars b/templates/error.handlebars index bb3aae9f..24bd888a 100644 --- a/templates/error.handlebars +++ b/templates/error.handlebars @@ -1,4 +1,12 @@ \ No newline at end of file diff --git a/templates/shell.handlebars b/templates/shell.handlebars index 94b53e72..be8c53a8 100644 --- a/templates/shell.handlebars +++ b/templates/shell.handlebars @@ -5,9 +5,9 @@ Sqlsite @@ -17,8 +17,8 @@ {{/each}} From bef884bca7e7963b90ca073a766bc81ef45ec6a2 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 1 Aug 2022 12:10:21 +0200 Subject: [PATCH 005/278] Avoid logging all requests --- src/main.rs | 7 ++++++- src/render.rs | 11 ++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index 4bf74b2a..36fe5d7b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ mod http; mod render; +use sqlx::any::AnyConnectOptions; +use sqlx::ConnectOptions; use render::AllTemplates; pub struct AppState { @@ -17,7 +19,10 @@ async fn main() -> std::io::Result<()> { let database_url = std::env::var("DATABASE_URL").unwrap_or_else(|_| "sqlite://site.db?mode=rwc".to_string()); - let db = sqlx::AnyPool::connect(&database_url) + let mut connect_options: AnyConnectOptions= database_url.parse().expect("Invalid database URL"); + connect_options.log_statements(log::LevelFilter::Trace); + connect_options.log_slow_statements(log::LevelFilter::Warn, std::time::Duration::from_millis(250)); + let db = sqlx::AnyPool::connect_with(connect_options) .await .expect("Failed to connect to database"); diff --git a/src/render.rs b/src/render.rs index 68bb78aa..04f7f2b4 100644 --- a/src/render.rs +++ b/src/render.rs @@ -1,9 +1,7 @@ -use std::any::Any; use std::fs::DirEntry; use crate::http::ResponseWriter; -use handlebars::{template::TemplateElement, Renderable, Template, Handlebars, TemplateError}; -use sqlx::{Column, Row, TypeInfo, ValueRef}; -use std::io::Write; +use handlebars::{template::TemplateElement, Template, Handlebars, TemplateError}; +use sqlx::{Column, Row}; use crate::AppState; use serde::{Serialize, Serializer}; @@ -28,7 +26,6 @@ impl RenderContext<'_> { let component = row.try_get("component").unwrap_or_else(|_| DEFAULT_COMPONENT.to_string()); self.open_component(component) }; - let component = self.current_component.as_ref().unwrap(); self.render_current_template_with_data(&&SerializeRow(row)); Ok(()) } @@ -180,7 +177,7 @@ pub struct AllTemplates { impl AllTemplates { pub fn init() -> Self { - let mut handlebars = Handlebars::new(); + let handlebars = Handlebars::new(); let mut this = Self { handlebars }; this.register_split("shell", include_str!("../templates/shell.handlebars")) .expect("Embedded shell template contains an error"); @@ -195,7 +192,7 @@ impl AllTemplates { tpl.name = Some(name.to_string()); let split = split_template(tpl); self.handlebars.register_template(&[name, "before"].join("_"), split.before_list); - self.handlebars.register_template(&name, split.list_content); + self.handlebars.register_template(name, split.list_content); self.handlebars.register_template(&[name, "after"].join("_"), split.after_list); Ok(()) } From e7cc9b8faa9e46eb5474567a36ab7eae42fa9c65 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 1 Aug 2022 17:21:25 +0200 Subject: [PATCH 006/278] Handle more sql types --- Cargo.lock | 349 +++++++++++++++++++++++++++++++++++++++++++++++++- Cargo.toml | 2 +- src/render.rs | 38 ++++-- 3 files changed, 376 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a02a87e6..7593405f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -301,6 +301,12 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +[[package]] +name = "base64ct" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bdca834647821e0b13d9539a8634eb62d3501b6b6c2cec1722786ee6671b851" + [[package]] name = "bitflags" version = "1.3.2" @@ -337,6 +343,12 @@ dependencies = [ "alloc-stdlib", ] +[[package]] +name = "bumpalo" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" + [[package]] name = "byteorder" version = "1.4.3" @@ -373,6 +385,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "const-oid" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c78c047431fee22c1a7bb92e00ad095a02a983affe4d8a72e2a2c62c1b94f3" + [[package]] name = "convert_case" version = "0.4.0" @@ -459,6 +477,16 @@ dependencies = [ "once_cell", ] +[[package]] +name = "crypto-bigint" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c6a1d5fa1de37e071642dfa44ec552ca5b299adb128fab16138e24b548fd21" +dependencies = [ + "generic-array", + "subtle", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -469,6 +497,17 @@ dependencies = [ "typenum", ] +[[package]] +name = "der" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6919815d73839e7ad218de758883aae3a257ba6759ce7a9992501efbb53d705c" +dependencies = [ + "const-oid", + "crypto-bigint", + "pem-rfc7468", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -490,6 +529,27 @@ checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" dependencies = [ "block-buffer", "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", ] [[package]] @@ -566,7 +626,7 @@ dependencies = [ "futures-core", "futures-sink", "pin-project", - "spin", + "spin 0.9.4", ] [[package]] @@ -772,6 +832,24 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hkdf" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + [[package]] name = "http" version = "0.2.8" @@ -861,6 +939,15 @@ dependencies = [ "libc", ] +[[package]] +name = "js-sys" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" +dependencies = [ + "wasm-bindgen", +] + [[package]] name = "language-tags" version = "0.3.2" @@ -872,6 +959,9 @@ name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] [[package]] name = "libc" @@ -879,6 +969,12 @@ version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +[[package]] +name = "libm" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da83a57f3f5ba3680950aa3cbc806fc297bc0b289d42e8942ed528ace71b8145" + [[package]] name = "libsqlite3-sys" version = "0.24.2" @@ -933,6 +1029,15 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +[[package]] +name = "md-5" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658646b21e0b72f7866c7038ab086d3d5e1cd6271f060fd37defb241949d0582" +dependencies = [ + "digest", +] + [[package]] name = "memchr" version = "2.5.0" @@ -1010,6 +1115,55 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint-dig" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "566d173b2f9406afbc5510a90925d5a2cd80cae4605631f1212303df265de011" +dependencies = [ + "byteorder", + "lazy_static", + "libm", + "num-integer", + "num-iter", + "num-traits", + "rand", + "smallvec", + "zeroize", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-traits" version = "0.2.15" @@ -1017,6 +1171,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg", + "libm", ] [[package]] @@ -1167,6 +1322,15 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" +[[package]] +name = "pem-rfc7468" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01de5d978f34aa4b2296576379fcc416034702fd94117c56ffd8a1a767cefb30" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.1.0" @@ -1249,6 +1413,28 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "pkcs1" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a78f66c04ccc83dd4486fd46c33896f4e17b24a7a3a6400dedc48ed0ddd72320" +dependencies = [ + "der", + "pkcs8", + "zeroize", +] + +[[package]] +name = "pkcs8" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cabda3fb821068a9a4fab19a683eac3af12edf0f34b94a8be53c4972b8149d0" +dependencies = [ + "der", + "spki", + "zeroize", +] + [[package]] name = "pkg-config" version = "0.3.25" @@ -1342,6 +1528,17 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom", + "redox_syscall", + "thiserror", +] + [[package]] name = "regex" version = "1.6.0" @@ -1368,6 +1565,26 @@ dependencies = [ "winapi", ] +[[package]] +name = "rsa" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cf22754c49613d2b3b119f0e5d46e34a2c628a937e3024b8762de4e7d8c710b" +dependencies = [ + "byteorder", + "digest", + "num-bigint-dig", + "num-integer", + "num-iter", + "num-traits", + "pkcs1", + "pkcs8", + "rand_core", + "smallvec", + "subtle", + "zeroize", +] + [[package]] name = "rustc_version" version = "0.4.0" @@ -1433,6 +1650,20 @@ name = "serde" version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] [[package]] name = "serde_json" @@ -1524,6 +1755,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + [[package]] name = "spin" version = "0.9.4" @@ -1533,6 +1770,16 @@ dependencies = [ "lock_api", ] +[[package]] +name = "spki" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d01ac02a6ccf3e07db148d2be087da624fea0221a16152ed01f0496a6b0a27" +dependencies = [ + "base64ct", + "der", +] + [[package]] name = "sqlformat" version = "0.1.8" @@ -1580,11 +1827,14 @@ checksum = "6b69bf218860335ddda60d6ce85ee39f6cf6e5630e300e19757d1de15886a093" dependencies = [ "ahash", "atoi", + "base64", "bitflags", "byteorder", "bytes", "crc", "crossbeam-queue", + "digest", + "dirs", "either", "event-listener", "flume", @@ -1593,17 +1843,27 @@ dependencies = [ "futures-executor", "futures-intrusive", "futures-util", + "generic-array", "hashlink", "hex", + "hkdf", + "hmac", "indexmap", "itoa", "libc", "libsqlite3-sys", "log", + "md-5", "memchr", + "num-bigint", "once_cell", "paste", "percent-encoding", + "rand", + "rsa", + "serde", + "serde_json", + "sha-1", "sha2", "smallvec", "sqlformat", @@ -1612,6 +1872,7 @@ dependencies = [ "thiserror", "tokio-stream", "url", + "whoami", ] [[package]] @@ -1662,6 +1923,12 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + [[package]] name = "syn" version = "1.0.98" @@ -1909,6 +2176,80 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasm-bindgen" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" + +[[package]] +name = "web-sys" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "whoami" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524b58fa5a20a2fb3014dd6358b70e6579692a56ef6fce928834e488f42f65e8" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + [[package]] name = "winapi" version = "0.3.9" @@ -1983,6 +2324,12 @@ version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" +[[package]] +name = "zeroize" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" + [[package]] name = "zstd" version = "0.11.2+zstd.1.5.2" diff --git a/Cargo.toml b/Cargo.toml index 97dc9757..83dcc162 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -sqlx = { version = "0.6.0", features = ["any", "runtime-actix-native-tls", "sqlite"] } +sqlx = { version = "0.6.0", features = ["any", "runtime-actix-native-tls", "sqlite", "postgres", "mysql"] } actix-web = "4" handlebars = "4.3.3" log = "0.4.17" diff --git a/src/render.rs b/src/render.rs index 04f7f2b4..5b258d3c 100644 --- a/src/render.rs +++ b/src/render.rs @@ -94,30 +94,46 @@ impl Drop for RenderContext<'_> { } -struct SerializeRow(R); +struct SerializeRow(R); impl<'r, R: Row> Serialize for &'r SerializeRow where usize: sqlx::ColumnIndex, &'r str: sqlx::Decode<'r, ::Database>, - str: sqlx::Type<::Database>, + f64: sqlx::Decode<'r, ::Database>, + i64: sqlx::Decode<'r, ::Database>, + bool: sqlx::Decode<'r, ::Database>, { fn serialize(&self, serializer: S) -> Result where S: Serializer, { use serde::ser::SerializeMap; - use sqlx::decode::Decode; + use sqlx::{decode::Decode, TypeInfo, ValueRef}; use serde::ser::Error; let columns = self.0.columns(); let mut map = serializer.serialize_map(Some(columns.len()))?; for col in columns { let key = col.name(); if let Ok(raw_value) = self.0.try_get_raw(col.ordinal()) { - let value = Decode::decode(raw_value).map_err(Error::custom)?; - map.serialize_entry(key, value)?; - /*match raw_value.type_info().name() { - "TEXT" => { - () - }, - &_ => () - }*/ + if raw_value.is_null() { + map.serialize_entry(key, &())?; + continue; + } + match raw_value.type_info().name() { + "REAL" | "FLOAT" => { + let value: f64 = Decode::decode(raw_value).map_err(Error::custom)?; + map.serialize_entry(key, &value)?; + } + "INT" | "INTEGER" => { + let value: i64 = Decode::decode(raw_value).map_err(Error::custom)?; + map.serialize_entry(key, &value)?; + } + "BOOL" | "BOOLEAN" => { + let value: bool = Decode::decode(raw_value).map_err(Error::custom)?; + map.serialize_entry(key, &value)?; + } + _ => { // Deserialize as a string by default + let value: &str = Decode::decode(raw_value).map_err(Error::custom)?; + map.serialize_entry(key, value)?; + } + } } } map.end() From f906b2f9fdb9793f81f50d10dcbf1fc2c2665f16 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 1 Aug 2022 17:44:13 +0200 Subject: [PATCH 007/278] Add a debug component --- src/render.rs | 6 ++++-- templates/debug.handlebars | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 templates/debug.handlebars diff --git a/src/render.rs b/src/render.rs index 5b258d3c..e2d0d4ec 100644 --- a/src/render.rs +++ b/src/render.rs @@ -1,6 +1,6 @@ use std::fs::DirEntry; use crate::http::ResponseWriter; -use handlebars::{template::TemplateElement, Template, Handlebars, TemplateError}; +use handlebars::{template::TemplateElement, Template, Handlebars, TemplateError, handlebars_helper}; use sqlx::{Column, Row}; use crate::AppState; use serde::{Serialize, Serializer}; @@ -193,7 +193,9 @@ pub struct AllTemplates { impl AllTemplates { pub fn init() -> Self { - let handlebars = Handlebars::new(); + let mut handlebars = Handlebars::new(); + handlebars_helper!(stringify: |v: Json| v.to_string()); + handlebars.register_helper("stringify", Box::new(stringify)); let mut this = Self { handlebars }; this.register_split("shell", include_str!("../templates/shell.handlebars")) .expect("Embedded shell template contains an error"); diff --git a/templates/debug.handlebars b/templates/debug.handlebars new file mode 100644 index 00000000..103c7ddf --- /dev/null +++ b/templates/debug.handlebars @@ -0,0 +1,4 @@ +

    Debug output

    +{{#each items}} +
    {{stringify this}}
    +{{/each}} From 2722d0b32303ba7146847bcdfc8af4fe9d964fa2 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 1 Aug 2022 19:14:24 +0200 Subject: [PATCH 008/278] Improve value serialization --- src/render.rs | 51 +++++++++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 28 deletions(-) diff --git a/src/render.rs b/src/render.rs index e2d0d4ec..2f67b889 100644 --- a/src/render.rs +++ b/src/render.rs @@ -1,9 +1,10 @@ use std::fs::DirEntry; use crate::http::ResponseWriter; use handlebars::{template::TemplateElement, Template, Handlebars, TemplateError, handlebars_helper}; -use sqlx::{Column, Row}; +use sqlx::{Column, Database, Decode, Row}; use crate::AppState; use serde::{Serialize, Serializer}; +use serde::ser::SerializeMap; pub struct RenderContext<'a> { app_state: &'a AppState, @@ -104,42 +105,36 @@ impl<'r, R: Row> Serialize for &'r SerializeRow bool: sqlx::Decode<'r, ::Database>, { fn serialize(&self, serializer: S) -> Result where S: Serializer, { - use serde::ser::SerializeMap; - use sqlx::{decode::Decode, TypeInfo, ValueRef}; - use serde::ser::Error; + use sqlx::{TypeInfo, ValueRef}; let columns = self.0.columns(); let mut map = serializer.serialize_map(Some(columns.len()))?; for col in columns { let key = col.name(); - if let Ok(raw_value) = self.0.try_get_raw(col.ordinal()) { - if raw_value.is_null() { - map.serialize_entry(key, &())?; - continue; - } - match raw_value.type_info().name() { - "REAL" | "FLOAT" => { - let value: f64 = Decode::decode(raw_value).map_err(Error::custom)?; - map.serialize_entry(key, &value)?; - } - "INT" | "INTEGER" => { - let value: i64 = Decode::decode(raw_value).map_err(Error::custom)?; - map.serialize_entry(key, &value)?; - } - "BOOL" | "BOOLEAN" => { - let value: bool = Decode::decode(raw_value).map_err(Error::custom)?; - map.serialize_entry(key, &value)?; - } - _ => { // Deserialize as a string by default - let value: &str = Decode::decode(raw_value).map_err(Error::custom)?; - map.serialize_entry(key, value)?; - } - } - } + match self.0.try_get_raw(col.ordinal()) { + Ok(raw_value) if !raw_value.is_null()=> match raw_value.type_info().name() { + "REAL" | "FLOAT" | "NUMERIC" | "FLOAT4" | "FLOAT8" | "DOUBLE" => + map_serialize::<_, _, f64>(&mut map, key, raw_value), + "INT" | "INTEGER" | "INT8" | "INT2" | "INT4" | "TINYINT" | "SMALLINT" | "BIGINT" => + map_serialize::<_, _, i64>(&mut map, key, raw_value), + "BOOL" | "BOOLEAN" => + map_serialize::<_, _, bool>(&mut map, key, raw_value), + // Deserialize as a string by default + _ => map_serialize::<_, _, &str>(&mut map, key, raw_value) + }, + _ => map.serialize_entry(key, &()) // Serialize null + }? } map.end() } } +fn map_serialize<'r, M: SerializeMap, DB: Database, T: Decode<'r, DB> + Serialize>( + map: &mut M, key: &str, raw_value: >::ValueRef, +) -> Result<(), M::Error> { + let val = T::decode(raw_value).map_err(serde::ser::Error::custom)?; + map.serialize_entry(key, &val) +} + struct SplitTemplate { before_list: Template, list_content: Template, From 0680d7cb99d2ef1e6e017e7afecd5ca886a7f428 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 1 Aug 2022 19:14:52 +0200 Subject: [PATCH 009/278] cargo fmt --- src/main.rs | 16 ++++++--- src/render.rs | 99 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 76 insertions(+), 39 deletions(-) diff --git a/src/main.rs b/src/main.rs index 36fe5d7b..b1f4ad50 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,9 @@ mod http; mod render; +use render::AllTemplates; use sqlx::any::AnyConnectOptions; use sqlx::ConnectOptions; -use render::AllTemplates; pub struct AppState { db: sqlx::AnyPool, @@ -19,9 +19,13 @@ async fn main() -> std::io::Result<()> { let database_url = std::env::var("DATABASE_URL").unwrap_or_else(|_| "sqlite://site.db?mode=rwc".to_string()); - let mut connect_options: AnyConnectOptions= database_url.parse().expect("Invalid database URL"); + let mut connect_options: AnyConnectOptions = + database_url.parse().expect("Invalid database URL"); connect_options.log_statements(log::LevelFilter::Trace); - connect_options.log_slow_statements(log::LevelFilter::Warn, std::time::Duration::from_millis(250)); + connect_options.log_slow_statements( + log::LevelFilter::Warn, + std::time::Duration::from_millis(250), + ); let db = sqlx::AnyPool::connect_with(connect_options) .await .expect("Failed to connect to database"); @@ -34,6 +38,10 @@ async fn main() -> std::io::Result<()> { .expect("LISTEN_ON must be a valid IP:PORT"); let all_templates = AllTemplates::init(); - let state = AppState { db, listen_on, all_templates }; + let state = AppState { + db, + listen_on, + all_templates, + }; http::run_server(state).await } diff --git a/src/render.rs b/src/render.rs index 2f67b889..faf1154c 100644 --- a/src/render.rs +++ b/src/render.rs @@ -1,10 +1,12 @@ -use std::fs::DirEntry; use crate::http::ResponseWriter; -use handlebars::{template::TemplateElement, Template, Handlebars, TemplateError, handlebars_helper}; -use sqlx::{Column, Database, Decode, Row}; use crate::AppState; -use serde::{Serialize, Serializer}; +use handlebars::{ + handlebars_helper, template::TemplateElement, Handlebars, Template, TemplateError, +}; use serde::ser::SerializeMap; +use serde::{Serialize, Serializer}; +use sqlx::{Column, Database, Decode, Row}; +use std::fs::DirEntry; pub struct RenderContext<'a> { app_state: &'a AppState, @@ -16,22 +18,34 @@ const DEFAULT_COMPONENT: &str = "default"; impl RenderContext<'_> { pub fn new(app_state: &AppState, writer: ResponseWriter) -> RenderContext { - let mut this = RenderContext { app_state, writer, current_component: None }; + let mut this = RenderContext { + app_state, + writer, + current_component: None, + }; this.render_template("shell_before"); this } - pub async fn handle_row(&mut self, row: sqlx::any::AnyRow) -> Result<(), handlebars::RenderError> { + pub async fn handle_row( + &mut self, + row: sqlx::any::AnyRow, + ) -> Result<(), handlebars::RenderError> { log::trace!("handle_row: {:?}", row.columns()); if self.current_component.is_none() { - let component = row.try_get("component").unwrap_or_else(|_| DEFAULT_COMPONENT.to_string()); + let component = row + .try_get("component") + .unwrap_or_else(|_| DEFAULT_COMPONENT.to_string()); self.open_component(component) }; self.render_current_template_with_data(&&SerializeRow(row)); Ok(()) } - pub async fn finish_query(&mut self, result: sqlx::any::AnyQueryResult) -> Result<(), handlebars::RenderError> { + pub async fn finish_query( + &mut self, + result: sqlx::any::AnyQueryResult, + ) -> Result<(), handlebars::RenderError> { log::trace!("finish_query: {:?}", result); self.close_component(); Ok(()) @@ -47,7 +61,6 @@ impl RenderContext<'_> { self.close_component(); } - pub fn handle_result(&mut self, result: &Result) { if let Err(error) = result { self.handle_error(error) @@ -58,18 +71,25 @@ impl RenderContext<'_> { log::warn!("close"); } - fn render_template(&mut self, name: &str) { self.render_template_with_data(name, &()) } fn render_template_with_data(&mut self, name: &str, data: &T) { - self.handle_result(&self.app_state.all_templates.handlebars.render_to_write(name, data, &self.writer)); + self.handle_result(&self.app_state.all_templates.handlebars.render_to_write( + name, + data, + &self.writer, + )); } fn render_current_template_with_data(&mut self, data: &T) { let name = self.current_component.as_ref().unwrap(); - self.handle_result(&self.app_state.all_templates.handlebars.render_to_write(name, data, &self.writer)); + self.handle_result(&self.app_state.all_templates.handlebars.render_to_write( + name, + data, + &self.writer, + )); } fn open_component(&mut self, component: String) { @@ -94,34 +114,37 @@ impl Drop for RenderContext<'_> { } } - struct SerializeRow(R); impl<'r, R: Row> Serialize for &'r SerializeRow - where usize: sqlx::ColumnIndex, - &'r str: sqlx::Decode<'r, ::Database>, - f64: sqlx::Decode<'r, ::Database>, - i64: sqlx::Decode<'r, ::Database>, - bool: sqlx::Decode<'r, ::Database>, +where + usize: sqlx::ColumnIndex, + &'r str: sqlx::Decode<'r, ::Database>, + f64: sqlx::Decode<'r, ::Database>, + i64: sqlx::Decode<'r, ::Database>, + bool: sqlx::Decode<'r, ::Database>, { - fn serialize(&self, serializer: S) -> Result where S: Serializer, { + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { use sqlx::{TypeInfo, ValueRef}; let columns = self.0.columns(); let mut map = serializer.serialize_map(Some(columns.len()))?; for col in columns { let key = col.name(); match self.0.try_get_raw(col.ordinal()) { - Ok(raw_value) if !raw_value.is_null()=> match raw_value.type_info().name() { - "REAL" | "FLOAT" | "NUMERIC" | "FLOAT4" | "FLOAT8" | "DOUBLE" => - map_serialize::<_, _, f64>(&mut map, key, raw_value), - "INT" | "INTEGER" | "INT8" | "INT2" | "INT4" | "TINYINT" | "SMALLINT" | "BIGINT" => - map_serialize::<_, _, i64>(&mut map, key, raw_value), - "BOOL" | "BOOLEAN" => - map_serialize::<_, _, bool>(&mut map, key, raw_value), + Ok(raw_value) if !raw_value.is_null() => match raw_value.type_info().name() { + "REAL" | "FLOAT" | "NUMERIC" | "FLOAT4" | "FLOAT8" | "DOUBLE" => { + map_serialize::<_, _, f64>(&mut map, key, raw_value) + } + "INT" | "INTEGER" | "INT8" | "INT2" | "INT4" | "TINYINT" | "SMALLINT" + | "BIGINT" => map_serialize::<_, _, i64>(&mut map, key, raw_value), + "BOOL" | "BOOLEAN" => map_serialize::<_, _, bool>(&mut map, key, raw_value), // Deserialize as a string by default - _ => map_serialize::<_, _, &str>(&mut map, key, raw_value) + _ => map_serialize::<_, _, &str>(&mut map, key, raw_value), }, - _ => map.serialize_entry(key, &()) // Serialize null + _ => map.serialize_entry(key, &()), // Serialize null }? } map.end() @@ -129,7 +152,9 @@ impl<'r, R: Row> Serialize for &'r SerializeRow } fn map_serialize<'r, M: SerializeMap, DB: Database, T: Decode<'r, DB> + Serialize>( - map: &mut M, key: &str, raw_value: >::ValueRef, + map: &mut M, + key: &str, + raw_value: >::ValueRef, ) -> Result<(), M::Error> { let val = T::decode(raw_value).map_err(serde::ser::Error::custom)?; map.serialize_entry(key, &val) @@ -181,7 +206,6 @@ fn is_template_list_item(element: &TemplateElement) -> bool { (Name(name), [Path(Relative((_, param)))]) if name == "each" && param == "items")) } - pub struct AllTemplates { handlebars: Handlebars<'static>, } @@ -204,9 +228,11 @@ impl AllTemplates { let mut tpl = Template::compile(tpl_str)?; tpl.name = Some(name.to_string()); let split = split_template(tpl); - self.handlebars.register_template(&[name, "before"].join("_"), split.before_list); + self.handlebars + .register_template(&[name, "before"].join("_"), split.before_list); self.handlebars.register_template(name, split.list_content); - self.handlebars.register_template(&[name, "after"].join("_"), split.after_list); + self.handlebars + .register_template(&[name, "after"].join("_"), split.after_list); Ok(()) } @@ -218,14 +244,17 @@ impl AllTemplates { errors.extend(self.register_dir_entry(f).err()); } } - Err(e) => errors.push(Box::new(e)) + Err(e) => errors.push(Box::new(e)), } for err in errors { log::error!("Unable to register a template: {}", err); } } - fn register_dir_entry(&mut self, entry: std::io::Result) -> Result<(), Box> { + fn register_dir_entry( + &mut self, + entry: std::io::Result, + ) -> Result<(), Box> { let path = entry?.path(); if matches!(path.extension(), Some(x) if x == "handlebars") { let tpl_str = std::fs::read_to_string(&path)?; @@ -247,6 +276,6 @@ fn test_custom_template() { {{/each}} ", ) - .unwrap(); + .unwrap(); assert_eq!(template.elements, vec![]); } From 836354d421a50a80da14037bb6349b5adc0856a6 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 1 Aug 2022 20:19:31 +0200 Subject: [PATCH 010/278] Fix bug on dropped connection --- src/http.rs | 21 +++++++++++---------- src/render.rs | 47 +++++++++++++++++++++++++++++++---------------- 2 files changed, 42 insertions(+), 26 deletions(-) diff --git a/src/http.rs b/src/http.rs index 1800e9b1..de389dad 100644 --- a/src/http.rs +++ b/src/http.rs @@ -6,6 +6,7 @@ use actix_web::{ }; use futures_util::StreamExt; use futures_util::TryFutureExt; + const WEB_ROOT: &str = "."; pub struct ResponseWriter { @@ -17,9 +18,9 @@ impl std::io::Write for &ResponseWriter { self.response_bytes .send(Ok(Bytes::copy_from_slice(buf))) .map(|_| buf.len()) - .map_err(|err| { - log::error!("Broken pipe, unable to write response response. {}", err); - std::io::ErrorKind::BrokenPipe.into() + .map_err(|_err| { + use std::io::*; + Error::new(ErrorKind::BrokenPipe, "The HTTP response writer has already been closed") }) } fn flush(&mut self) -> std::io::Result<()> { @@ -27,22 +28,22 @@ impl std::io::Write for &ResponseWriter { } } -async fn stream_response(req: HttpRequest, sql_bytes: Bytes, response_bytes: ResponseWriter) { +async fn stream_response(req: HttpRequest, sql_bytes: Bytes, response_bytes: ResponseWriter) -> std::io::Result<()> { let app_state: &web::Data = req.app_data().expect("no app data in render"); let sql = std::str::from_utf8(&sql_bytes).unwrap(); let mut stream = sqlx::query(sql).fetch_many(&app_state.db); let mut renderer = RenderContext::new(app_state, response_bytes); while let Some(item) = stream.next().await { - renderer.handle_result(&item); + renderer.handle_result(&item)?; let res = match item { Ok(sqlx::Either::Left(result)) => renderer.finish_query(result).await, Ok(sqlx::Either::Right(row)) => renderer.handle_row(row).await, Err(_) => Ok(()), }; - renderer.handle_result(&res); + renderer.handle_result(&res)?; } - renderer.close().await; + Ok(()) } async fn render_sql(req: HttpRequest, sql_bytes: Bytes) -> actix_web::Result { @@ -85,7 +86,7 @@ pub async fn run_server(state: AppState) -> std::io::Result<()> { ) .wrap(Logger::default()) }) - .bind(listen_on)? - .run() - .await + .bind(listen_on)? + .run() + .await } diff --git a/src/render.rs b/src/render.rs index faf1154c..a130891c 100644 --- a/src/render.rs +++ b/src/render.rs @@ -12,9 +12,11 @@ pub struct RenderContext<'a> { app_state: &'a AppState, writer: ResponseWriter, current_component: Option, + error_depth: usize, } const DEFAULT_COMPONENT: &str = "default"; +const MAX_ERROR_RECURION: usize = 3; impl RenderContext<'_> { pub fn new(app_state: &AppState, writer: ResponseWriter) -> RenderContext { @@ -22,6 +24,7 @@ impl RenderContext<'_> { app_state, writer, current_component: None, + error_depth: 0, }; this.render_template("shell_before"); this @@ -51,24 +54,36 @@ impl RenderContext<'_> { Ok(()) } - pub fn handle_error(&mut self, error: &impl std::error::Error) { - log::warn!("SQL error {}", error); + /// Handles the rendering of an error. + /// Returns whether the error is irrecoverable and the rendering must stop + pub fn handle_error(&mut self, error: &impl std::error::Error) -> std::io::Result<()> { + self.error_depth += 1; + if self.error_depth > MAX_ERROR_RECURION { + return Err(std::io::ErrorKind::Interrupted.into()); + } + log::warn!("SQL error: {:?}", error); if self.current_component.is_some() { self.close_component(); } self.open_component("error".to_string()); self.render_current_template_with_data(&format!("{}", error)); self.close_component(); + self.error_depth -= 1; + Ok(()) } - pub fn handle_result(&mut self, result: &Result) { + pub fn handle_result(&mut self, result: &Result) -> std::io::Result<()> { if let Err(error) = result { self.handle_error(error) + } else { + Ok(()) } } - pub async fn close(&mut self) { - log::warn!("close"); + pub fn handle_result_and_log(&mut self, result: &Result) { + if let Err(e) = self.handle_result(result) { + log::error!("{}", e); + } } fn render_template(&mut self, name: &str) { @@ -76,7 +91,7 @@ impl RenderContext<'_> { } fn render_template_with_data(&mut self, name: &str, data: &T) { - self.handle_result(&self.app_state.all_templates.handlebars.render_to_write( + self.handle_result_and_log(&self.app_state.all_templates.handlebars.render_to_write( name, data, &self.writer, @@ -85,7 +100,7 @@ impl RenderContext<'_> { fn render_current_template_with_data(&mut self, data: &T) { let name = self.current_component.as_ref().unwrap(); - self.handle_result(&self.app_state.all_templates.handlebars.render_to_write( + self.handle_result_and_log(&self.app_state.all_templates.handlebars.render_to_write( name, data, &self.writer, @@ -117,16 +132,16 @@ impl Drop for RenderContext<'_> { struct SerializeRow(R); impl<'r, R: Row> Serialize for &'r SerializeRow -where - usize: sqlx::ColumnIndex, - &'r str: sqlx::Decode<'r, ::Database>, - f64: sqlx::Decode<'r, ::Database>, - i64: sqlx::Decode<'r, ::Database>, - bool: sqlx::Decode<'r, ::Database>, + where + usize: sqlx::ColumnIndex, + &'r str: sqlx::Decode<'r, ::Database>, + f64: sqlx::Decode<'r, ::Database>, + i64: sqlx::Decode<'r, ::Database>, + bool: sqlx::Decode<'r, ::Database>, { fn serialize(&self, serializer: S) -> Result - where - S: Serializer, + where + S: Serializer, { use sqlx::{TypeInfo, ValueRef}; let columns = self.0.columns(); @@ -276,6 +291,6 @@ fn test_custom_template() { {{/each}} ", ) - .unwrap(); + .unwrap(); assert_eq!(template.elements, vec![]); } From 207f8ff453bcfcd69ca58a620d898b3ac787fe00 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 1 Aug 2022 20:46:09 +0200 Subject: [PATCH 011/278] add error backtraces --- Cargo.lock | 1 + Cargo.toml | 1 + src/render.rs | 12 +++++++++++- templates/error.handlebars | 6 +++++- 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7593405f..a4113231 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1804,6 +1804,7 @@ dependencies = [ "log", "ouroboros", "serde", + "serde_json", "sqlx", "tokio", "tokio-stream", diff --git a/Cargo.toml b/Cargo.toml index 83dcc162..0c100897 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,3 +18,4 @@ tokio = { version = "1.20.1", features = ["sync"] } tokio-stream = "0.1.9" anyhow = "1.0.58" serde = "1.0.140" +serde_json = "1.0.82" \ No newline at end of file diff --git a/src/render.rs b/src/render.rs index a130891c..614e917e 100644 --- a/src/render.rs +++ b/src/render.rs @@ -66,7 +66,17 @@ impl RenderContext<'_> { self.close_component(); } self.open_component("error".to_string()); - self.render_current_template_with_data(&format!("{}", error)); + let description = format!("{}", error); + let mut backtrace = vec![]; + let mut source = error.source(); + while let Some(s) = source { + backtrace.push(format!("{}", s)); + source = s.source() + } + self.render_current_template_with_data(&serde_json::json!({ + "description": description, + "backtrace": backtrace + })); self.close_component(); self.error_depth -= 1; Ok(()) diff --git a/templates/error.handlebars b/templates/error.handlebars index 24bd888a..227b38b4 100644 --- a/templates/error.handlebars +++ b/templates/error.handlebars @@ -7,6 +7,10 @@ You should contact the site's administrator.

    {{#each items}} -
    {{this}}
    +
    {{description}}
    +
    + Backtrace +
    {{#each backtrace}}{{this}}{{/each}}
    +
    {{/each}} \ No newline at end of file From c029ab7891c41627e0961f242c618c96c61c7a90 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Tue, 2 Aug 2022 10:24:41 +0200 Subject: [PATCH 012/278] Better default component --- src/render.rs | 13 +++++++++++++ templates/default.handlebars | 18 +++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/render.rs b/src/render.rs index 614e917e..be3c0b7e 100644 --- a/src/render.rs +++ b/src/render.rs @@ -240,6 +240,19 @@ impl AllTemplates { let mut handlebars = Handlebars::new(); handlebars_helper!(stringify: |v: Json| v.to_string()); handlebars.register_helper("stringify", Box::new(stringify)); + handlebars_helper!(entries: |v: Json | match v { + serde_json::value::Value::Object(map) => + map.into_iter() + .map(|(k, v)| serde_json::json!({"key": k, "value": v})) + .collect(), + serde_json::value::Value::Array(values) => + values.iter() + .enumerate() + .map(|(k, v)| serde_json::json!({"key": k, "value": v})) + .collect(), + _ => vec![] + }); + handlebars.register_helper("entries", Box::new(entries)); let mut this = Self { handlebars }; this.register_split("shell", include_str!("../templates/shell.handlebars")) .expect("Embedded shell template contains an error"); diff --git a/templates/default.handlebars b/templates/default.handlebars index 474e1c1e..da32d7e6 100644 --- a/templates/default.handlebars +++ b/templates/default.handlebars @@ -1 +1,17 @@ -{{#each items}}{{#if tag}}<{{{tag}}}>{{content}}{{else}}{{content}}{{/if}}{{/each}} \ No newline at end of file +{{#each items}} + {{#if tag}} + <{{{tag}}}> + {{~#each (entries this)~}} + {{#unless (eq key "tag")}} + {{~value~}} + {{/unless}} + {{~/each~}} + + {{else}} +

    + {{~#each (entries this)}} + {{value}} + {{/each~}} +

    + {{/if}} +{{/each}} \ No newline at end of file From a9d321ab706c59dadcf9eb230885ecdd29fa7488 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 15 Aug 2022 08:51:35 +0200 Subject: [PATCH 013/278] Add access to POST and GET variables from SQL --- src/http.rs | 58 +++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/src/http.rs b/src/http.rs index de389dad..35473169 100644 --- a/src/http.rs +++ b/src/http.rs @@ -1,11 +1,13 @@ use crate::render::RenderContext; use crate::AppState; -use actix_web::{ - body::BodyStream, dev::Service, dev::ServiceResponse, http::header::CONTENT_TYPE, - middleware::Logger, web, web::Bytes, App, HttpRequest, HttpResponse, HttpServer, -}; +use actix_web::{body::BodyStream, dev::Service, dev::ServiceResponse, http::header::CONTENT_TYPE, middleware::Logger, web, web::Bytes, App, HttpRequest, HttpResponse, HttpServer, FromRequest}; +use actix_web::dev::Payload; +use actix_web::http::Method; +use actix_web::web::Form; use futures_util::StreamExt; use futures_util::TryFutureExt; +use sqlx::any::AnyArguments; +use sqlx::Arguments; const WEB_ROOT: &str = "."; @@ -28,10 +30,12 @@ impl std::io::Write for &ResponseWriter { } } -async fn stream_response(req: HttpRequest, sql_bytes: Bytes, response_bytes: ResponseWriter) -> std::io::Result<()> { +async fn stream_response(req: HttpRequest, payload: Payload, sql_bytes: Bytes, response_bytes: ResponseWriter) -> std::io::Result<()> { let app_state: &web::Data = req.app_data().expect("no app data in render"); let sql = std::str::from_utf8(&sql_bytes).unwrap(); - let mut stream = sqlx::query(sql).fetch_many(&app_state.db); + let mut arguments = AnyArguments::default(); + arguments.add(request_argument_json(&req, payload).await); + let mut stream = sqlx::query_with(sql, arguments).fetch_many(&app_state.db); let mut renderer = RenderContext::new(app_state, response_bytes); while let Some(item) = stream.next().await { @@ -46,12 +50,34 @@ async fn stream_response(req: HttpRequest, sql_bytes: Bytes, response_bytes: Res Ok(()) } -async fn render_sql(req: HttpRequest, sql_bytes: Bytes) -> actix_web::Result { +async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> String { + let headers: serde_json::Map = req.headers() + .iter() + .map(|(name, value)| ( + name.to_string(), + serde_json::Value::String(String::from_utf8_lossy(value.as_bytes()).to_string()) + )).collect(); + let query = web::Query::::from_query(req.query_string()) + .map(|q| q.into_inner()) + .unwrap_or_default(); + let client_ip = req.peer_addr().map(|addr| addr.ip()); + let form = Form::::from_request(req, &mut payload).await + .map(|form| form.into_inner()) + .unwrap_or_default(); + serde_json::json!({ + "headers": headers, + "client_ip": client_ip, + "query": query, + "form": form + }).to_string() +} + +async fn render_sql(req: HttpRequest, payload: Payload, sql_bytes: Bytes) -> actix_web::Result { let (sender, receiver) = tokio::sync::mpsc::unbounded_channel(); let writer = ResponseWriter { response_bytes: sender, }; - actix_web::rt::spawn(stream_response(req, sql_bytes, writer)); + actix_web::rt::spawn(stream_response(req, payload, sql_bytes, writer)); Ok(HttpResponse::Ok() .content_type("text/html; charset=utf-8") .body(BodyStream::new( @@ -59,12 +85,15 @@ async fn render_sql(req: HttpRequest, sql_bytes: Bytes) -> actix_web::Result actix_web::Result { +async fn postprocess_response( + serv_resp: ServiceResponse, + payload: Payload, +) -> actix_web::Result { let (req, old_resp) = serv_resp.into_parts(); let ctype = old_resp.headers().get(CONTENT_TYPE); let new_resp = if ctype.map(|ct| ct == "application/x-sql").unwrap_or(false) { let sql = actix_web::body::to_bytes(old_resp.into_body()).await?; - render_sql(req.clone(), sql).await? + render_sql(req.clone(), payload, sql).await? } else { old_resp }; @@ -78,9 +107,16 @@ pub async fn run_server(state: AppState) -> std::io::Result<()> { HttpServer::new(move || { App::new() .app_data(app_state.clone()) - .wrap_fn(|req, srv| srv.call(req).and_then(postprocess_response)) + .wrap_fn(|mut req, srv| { + // Remove the payload from the request so that it can be used later by our sql service + let payload = Payload::take(req.parts_mut().1); + // Make all requests GET so that they can be served by the file server + req.head_mut().method = Method::GET; + srv.call(req).and_then(|resp| postprocess_response(resp, payload)) + }) .default_service( actix_files::Files::new("/", WEB_ROOT) + .index_file("index.sql") .show_files_listing() .use_last_modified(true), ) From 99173b4fd4517733e34b54f492f428499e0905ee Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 15 Aug 2022 08:52:04 +0200 Subject: [PATCH 014/278] Improve error handling and add backtraces --- templates/error.handlebars | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/templates/error.handlebars b/templates/error.handlebars index 227b38b4..d83085ff 100644 --- a/templates/error.handlebars +++ b/templates/error.handlebars @@ -8,9 +8,15 @@

    {{#each items}}
    {{description}}
    -
    - Backtrace -
    {{#each backtrace}}{{this}}{{/each}}
    -
    + {{#if backtrace}} +
    + Backtrace +
    +                    {{~#each backtrace~}}
    +                        {{this}}
    +                    {{~/each~}}
    +                
    +
    + {{/if}} {{/each}} \ No newline at end of file From fdd1d089cb952dd642114ae137540261bfbb8011 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 15 Aug 2022 13:25:13 +0200 Subject: [PATCH 015/278] Log server port --- src/main.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main.rs b/src/main.rs index b1f4ad50..35fe87e0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -37,6 +37,8 @@ async fn main() -> std::io::Result<()> { .parse::() .expect("LISTEN_ON must be a valid IP:PORT"); + log::info!("Starting server on {}", listen_on); + let all_templates = AllTemplates::init(); let state = AppState { db, From 9dd55579300effbfc3ac65f4642065a6485c837c Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 15 Aug 2022 13:26:01 +0200 Subject: [PATCH 016/278] Allow data in components outside of items --- src/render.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/render.rs b/src/render.rs index be3c0b7e..56a6c24b 100644 --- a/src/render.rs +++ b/src/render.rs @@ -7,6 +7,7 @@ use serde::ser::SerializeMap; use serde::{Serialize, Serializer}; use sqlx::{Column, Database, Decode, Row}; use std::fs::DirEntry; +use serde_json::json; pub struct RenderContext<'a> { app_state: &'a AppState, @@ -39,9 +40,10 @@ impl RenderContext<'_> { let component = row .try_get("component") .unwrap_or_else(|_| DEFAULT_COMPONENT.to_string()); - self.open_component(component) - }; - self.render_current_template_with_data(&&SerializeRow(row)); + self.open_component_with_data(component, &&SerializeRow(row)) + } else { + self.render_current_template_with_data(&&SerializeRow(row)); + } Ok(()) } @@ -50,7 +52,6 @@ impl RenderContext<'_> { result: sqlx::any::AnyQueryResult, ) -> Result<(), handlebars::RenderError> { log::trace!("finish_query: {:?}", result); - self.close_component(); Ok(()) } @@ -118,7 +119,11 @@ impl RenderContext<'_> { } fn open_component(&mut self, component: String) { - self.render_template(&[&component, "_before"].join("")); + self.open_component_with_data(component, &json!(null)); + } + + fn open_component_with_data(&mut self, component: String, data: &T) { + self.render_template_with_data(&[&component, "_before"].join(""), data); self.current_component = Some(component); } From 9265815c9452faa412e36d1a90b2ebc1443f7aa2 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 15 Aug 2022 13:42:53 +0200 Subject: [PATCH 017/278] Use a custom each_row helper instead of hijacking each --- src/render.rs | 28 ++++++++++++---------------- templates/debug.handlebars | 4 ++-- templates/default.handlebars | 4 ++-- templates/error.handlebars | 4 ++-- templates/shell.handlebars | 4 ++-- 5 files changed, 20 insertions(+), 24 deletions(-) diff --git a/src/render.rs b/src/render.rs index 56a6c24b..4868a8c8 100644 --- a/src/render.rs +++ b/src/render.rs @@ -42,7 +42,7 @@ impl RenderContext<'_> { .unwrap_or_else(|_| DEFAULT_COMPONENT.to_string()); self.open_component_with_data(component, &&SerializeRow(row)) } else { - self.render_current_template_with_data(&&SerializeRow(row)); + self.render_current_template_with_data(&&SerializeRow(row)); } Ok(()) } @@ -228,12 +228,10 @@ fn split_template(mut original: Template) -> SplitTemplate { fn is_template_list_item(element: &TemplateElement) -> bool { use handlebars::template::*; - use handlebars::Path::*; use Parameter::*; matches!(element, TemplateElement::HelperBlock(tpl) - if matches!((&tpl.name, &tpl.params[..]), - (Name(name), [Path(Relative((_, param)))]) if name == "each" && param == "items")) + if matches!(&tpl.name, Name(name) if name == "each_row")) } pub struct AllTemplates { @@ -309,16 +307,14 @@ impl AllTemplates { } #[test] -fn test_custom_template() { - let template = handlebars::Template::compile( - " -

    - Hello {{name}} ! - {{#each items}} -
  • {{this}}
  • - {{/each}} -

    ", - ) - .unwrap(); - assert_eq!(template.elements, vec![]); +fn test_split_template() { + let template = Template::compile( + "Hello {{name}} ! \ + {{#each_row}}
  • {{this}}
  • {{/each_row}}\ + end", + ).unwrap(); + let split = split_template(template); + assert_eq!(split.before_list.elements, Template::compile("Hello {{name}} ! ").unwrap().elements); + assert_eq!(split.list_content.elements, Template::compile("
  • {{this}}
  • ").unwrap().elements); + assert_eq!(split.after_list.elements, Template::compile("end").unwrap().elements); } diff --git a/templates/debug.handlebars b/templates/debug.handlebars index 103c7ddf..86d6fdd4 100644 --- a/templates/debug.handlebars +++ b/templates/debug.handlebars @@ -1,4 +1,4 @@

    Debug output

    -{{#each items}} +{{#each_row}}
    {{stringify this}}
    -{{/each}} +{{/each_row}} diff --git a/templates/default.handlebars b/templates/default.handlebars index da32d7e6..104676d6 100644 --- a/templates/default.handlebars +++ b/templates/default.handlebars @@ -1,4 +1,4 @@ -{{#each items}} +{{#each_row}} {{#if tag}} <{{{tag}}}> {{~#each (entries this)~}} @@ -14,4 +14,4 @@ {{/each~}}

    {{/if}} -{{/each}} \ No newline at end of file +{{/each_row}} \ No newline at end of file diff --git a/templates/error.handlebars b/templates/error.handlebars index d83085ff..b7a26d09 100644 --- a/templates/error.handlebars +++ b/templates/error.handlebars @@ -6,7 +6,7 @@ We are sorry, but an error occurred while generating this page. You should contact the site's administrator.

    - {{#each items}} + {{#each_row}}
    {{description}}
    {{#if backtrace}}
    @@ -18,5 +18,5 @@
    {{/if}} - {{/each}} + {{/each_row}} \ No newline at end of file diff --git a/templates/shell.handlebars b/templates/shell.handlebars index be8c53a8..565744a1 100644 --- a/templates/shell.handlebars +++ b/templates/shell.handlebars @@ -12,9 +12,9 @@ /> - {{#each items}} + {{#each_row}} - {{/each}} + {{/each_row}} - + +{{#if title}} + +{{/if}} + +
    +
    +
    + {{#each_row}} + + {{/each_row}} +
    +
    +
    + + + + diff --git a/templates/title.handlebars b/templates/title.handlebars new file mode 100644 index 00000000..a537b849 --- /dev/null +++ b/templates/title.handlebars @@ -0,0 +1,7 @@ +

    + {{~#each (entries this)~}} + {{#unless (eq key "component")}} + {{~value~}} + {{/unless}} + {{~/each~}} +

    \ No newline at end of file From 343fd5018195ce89f6a0e038747e942eeb94a59b Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 15 Aug 2022 21:48:28 +0200 Subject: [PATCH 019/278] typo --- src/render.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/render.rs b/src/render.rs index e44a0217..f49c24d3 100644 --- a/src/render.rs +++ b/src/render.rs @@ -17,7 +17,7 @@ pub struct RenderContext<'a> { } const DEFAULT_COMPONENT: &str = "default"; -const MAX_ERROR_RECURION: usize = 3; +const MAX_ERROR_RECURSION: usize = 3; impl RenderContext<'_> { pub fn new(app_state: &AppState, writer: ResponseWriter) -> RenderContext { @@ -67,7 +67,7 @@ impl RenderContext<'_> { /// Returns whether the error is irrecoverable and the rendering must stop pub fn handle_error(&mut self, error: &impl std::error::Error) -> std::io::Result<()> { self.error_depth += 1; - if self.error_depth > MAX_ERROR_RECURION { + if self.error_depth > MAX_ERROR_RECURSION { return Err(std::io::ErrorKind::Interrupted.into()); } log::warn!("SQL error: {:?}", error); From 2de4c30559b1d2bac6efa4a19c32c0b84dc4f1d2 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Wed, 17 Aug 2022 00:02:15 +0200 Subject: [PATCH 020/278] Add cards component --- templates/card.handlebars | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 templates/card.handlebars diff --git a/templates/card.handlebars b/templates/card.handlebars new file mode 100644 index 00000000..9010fff7 --- /dev/null +++ b/templates/card.handlebars @@ -0,0 +1,20 @@ +
    + {{#each_row}} +
    + <{{#if link}}a href="{{link}}" {{else}}div{{/if}} class="card"> + {{#if status}} +
    + {{/if}} +
    +

    {{title}}

    +

    {{body}}

    +
    + + +
    + {{/each_row}} +
    \ No newline at end of file From 8e03587c28d03ead4ed76fd26330d5a41f57a369 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Wed, 17 Aug 2022 01:12:33 +0200 Subject: [PATCH 021/278] add forms --- src/render.rs | 2 ++ templates/form.handlebars | 8 ++++++++ templates/title.handlebars | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 templates/form.handlebars diff --git a/src/render.rs b/src/render.rs index f49c24d3..c3227c09 100644 --- a/src/render.rs +++ b/src/render.rs @@ -252,6 +252,8 @@ impl AllTemplates { let mut handlebars = Handlebars::new(); handlebars_helper!(stringify: |v: Json| v.to_string()); handlebars.register_helper("stringify", Box::new(stringify)); + handlebars_helper!(default: |a: Json, b:Json| if dbg!(a).is_null() {b} else {a}.clone()); + handlebars.register_helper("default", Box::new(default)); handlebars_helper!(entries: |v: Json | match v { serde_json::value::Value::Object(map) => map.into_iter() diff --git a/templates/form.handlebars b/templates/form.handlebars new file mode 100644 index 00000000..ad6345e4 --- /dev/null +++ b/templates/form.handlebars @@ -0,0 +1,8 @@ +
    + {{#each_row}} + + {{/each_row}} + +
    \ No newline at end of file diff --git a/templates/title.handlebars b/templates/title.handlebars index a537b849..76af71b0 100644 --- a/templates/title.handlebars +++ b/templates/title.handlebars @@ -1,4 +1,4 @@ -

    +

    {{~#each (entries this)~}} {{#unless (eq key "component")}} {{~value~}} From 07e89b9118adb11fdafb4a0d8ffbbf43b9d1054e Mon Sep 17 00:00:00 2001 From: lovasoa Date: Wed, 17 Aug 2022 19:42:56 +0200 Subject: [PATCH 022/278] Reorganize files and improve forms --- .../templates}/card.handlebars | 0 .../templates}/debug.handlebars | 0 .../templates}/default.handlebars | 0 .../templates}/error.handlebars | 0 sqlsite/templates/form.handlebars | 48 +++++++++++++++++++ .../templates}/shell.handlebars | 0 .../templates}/title.handlebars | 0 src/http.rs | 6 ++- src/main.rs | 4 ++ src/render.rs | 10 ++-- templates/form.handlebars | 8 ---- 11 files changed, 61 insertions(+), 15 deletions(-) rename {templates => sqlsite/templates}/card.handlebars (100%) rename {templates => sqlsite/templates}/debug.handlebars (100%) rename {templates => sqlsite/templates}/default.handlebars (100%) rename {templates => sqlsite/templates}/error.handlebars (100%) create mode 100644 sqlsite/templates/form.handlebars rename {templates => sqlsite/templates}/shell.handlebars (100%) rename {templates => sqlsite/templates}/title.handlebars (100%) delete mode 100644 templates/form.handlebars diff --git a/templates/card.handlebars b/sqlsite/templates/card.handlebars similarity index 100% rename from templates/card.handlebars rename to sqlsite/templates/card.handlebars diff --git a/templates/debug.handlebars b/sqlsite/templates/debug.handlebars similarity index 100% rename from templates/debug.handlebars rename to sqlsite/templates/debug.handlebars diff --git a/templates/default.handlebars b/sqlsite/templates/default.handlebars similarity index 100% rename from templates/default.handlebars rename to sqlsite/templates/default.handlebars diff --git a/templates/error.handlebars b/sqlsite/templates/error.handlebars similarity index 100% rename from templates/error.handlebars rename to sqlsite/templates/error.handlebars diff --git a/sqlsite/templates/form.handlebars b/sqlsite/templates/form.handlebars new file mode 100644 index 00000000..b8b7b24a --- /dev/null +++ b/sqlsite/templates/form.handlebars @@ -0,0 +1,48 @@ +
    + {{#each_row}} + {{#if (or (eq type "radio") (eq type "checkbox"))}} +
    + +
    + {{else}} + + {{/if}} + + {{/each_row}} + +
    \ No newline at end of file diff --git a/templates/shell.handlebars b/sqlsite/templates/shell.handlebars similarity index 100% rename from templates/shell.handlebars rename to sqlsite/templates/shell.handlebars diff --git a/templates/title.handlebars b/sqlsite/templates/title.handlebars similarity index 100% rename from templates/title.handlebars rename to sqlsite/templates/title.handlebars diff --git a/src/http.rs b/src/http.rs index 88ce5a6b..3613ab6f 100644 --- a/src/http.rs +++ b/src/http.rs @@ -1,5 +1,6 @@ +use std::path::Component; use crate::render::RenderContext; -use crate::AppState; +use crate::{AppState, CONFIG_DIR, WEB_ROOT}; use actix_web::{body::BodyStream, dev::Service, dev::ServiceResponse, http::header::CONTENT_TYPE, middleware::Logger, web, web::Bytes, App, HttpRequest, HttpResponse, HttpServer, FromRequest}; use actix_web::dev::Payload; use actix_web::http::Method; @@ -9,7 +10,6 @@ use futures_util::TryFutureExt; use sqlx::any::AnyArguments; use sqlx::Arguments; -const WEB_ROOT: &str = "."; pub struct ResponseWriter { response_bytes: tokio::sync::mpsc::UnboundedSender>, @@ -115,6 +115,8 @@ pub async fn run_server(state: AppState) -> std::io::Result<()> { .default_service( actix_files::Files::new("/", WEB_ROOT) .index_file("index.sql") + .path_filter(|path, _| + !matches!(path.components().next(), Some(Component::Normal(x)) if x == CONFIG_DIR)) .show_files_listing() .use_last_modified(true), ) diff --git a/src/main.rs b/src/main.rs index 35fe87e0..b583436c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,6 +5,10 @@ use render::AllTemplates; use sqlx::any::AnyConnectOptions; use sqlx::ConnectOptions; +const WEB_ROOT: &str = "."; +const CONFIG_DIR: &str = "sqlsite"; +const TEMPLATES_DIR: &str = "sqlsite/templates"; + pub struct AppState { db: sqlx::AnyPool, all_templates: AllTemplates, diff --git a/src/render.rs b/src/render.rs index c3227c09..f7786e55 100644 --- a/src/render.rs +++ b/src/render.rs @@ -1,5 +1,5 @@ use crate::http::ResponseWriter; -use crate::AppState; +use crate::{AppState, TEMPLATES_DIR}; use handlebars::{ handlebars_helper, template::TemplateElement, Handlebars, Template, TemplateError, }; @@ -252,7 +252,7 @@ impl AllTemplates { let mut handlebars = Handlebars::new(); handlebars_helper!(stringify: |v: Json| v.to_string()); handlebars.register_helper("stringify", Box::new(stringify)); - handlebars_helper!(default: |a: Json, b:Json| if dbg!(a).is_null() {b} else {a}.clone()); + handlebars_helper!(default: |a: Json, b:Json| if a.is_null() {b} else {a}.clone()); handlebars.register_helper("default", Box::new(default)); handlebars_helper!(entries: |v: Json | match v { serde_json::value::Value::Object(map) => @@ -268,9 +268,9 @@ impl AllTemplates { }); handlebars.register_helper("entries", Box::new(entries)); let mut this = Self { handlebars }; - this.register_split("shell", include_str!("../templates/shell.handlebars")) + this.register_split("shell", include_str!("../sqlsite/templates/shell.handlebars")) .expect("Embedded shell template contains an error"); - this.register_split("error", include_str!("../templates/error.handlebars")) + this.register_split("error", include_str!("../sqlsite/templates/error.handlebars")) .expect("Embedded shell template contains an error"); this.register_dir(); this @@ -290,7 +290,7 @@ impl AllTemplates { fn register_dir(&mut self) { let mut errors = vec![]; - match std::fs::read_dir("templates") { + match std::fs::read_dir(TEMPLATES_DIR) { Ok(dir) => { for f in dir { errors.extend(self.register_dir_entry(f).err()); diff --git a/templates/form.handlebars b/templates/form.handlebars deleted file mode 100644 index ad6345e4..00000000 --- a/templates/form.handlebars +++ /dev/null @@ -1,8 +0,0 @@ -
    - {{#each_row}} - - {{/each_row}} - -
    \ No newline at end of file From ce8661317887cd23e2746bd4a6842644b6244b17 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Wed, 17 Aug 2022 20:09:38 +0200 Subject: [PATCH 023/278] Implement migrations --- .../migrations/202208172000_base_schema.sql | 5 ++++ src/main.rs | 24 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 sqlsite/migrations/202208172000_base_schema.sql diff --git a/sqlsite/migrations/202208172000_base_schema.sql b/sqlsite/migrations/202208172000_base_schema.sql new file mode 100644 index 00000000..0748dec9 --- /dev/null +++ b/sqlsite/migrations/202208172000_base_schema.sql @@ -0,0 +1,5 @@ +CREATE TABLE members( + first_name TEXT, + last_name TEXT, + birthdate DATETIME +); \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index b583436c..483086c6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,13 +1,16 @@ mod http; mod render; +use std::path::Path; use render::AllTemplates; use sqlx::any::AnyConnectOptions; -use sqlx::ConnectOptions; +use sqlx::{AnyPool, ConnectOptions}; +use sqlx::migrate::Migrator; const WEB_ROOT: &str = "."; const CONFIG_DIR: &str = "sqlsite"; const TEMPLATES_DIR: &str = "sqlsite/templates"; +const MIGRATIONS_DIR: &str = "sqlsite/migrations"; pub struct AppState { db: sqlx::AnyPool, @@ -34,6 +37,14 @@ async fn main() -> std::io::Result<()> { .await .expect("Failed to connect to database"); + if let Err(e) = apply_migrations(&db).await { + log::error!("An error occurred while running the database migration. + The path '{MIGRATIONS_DIR}' has to point to a directory, which contains valid SQL files + with names using the format '_.sql', + where is a positive number, and is a string. + The current state of migrations will be stored in a table called _sqlx_migrations.\n {e:?}") + } + log::info!("Connected to database: {database_url}"); let listen_on = std::env::var("LISTEN_ON") @@ -51,3 +62,14 @@ async fn main() -> std::io::Result<()> { }; http::run_server(state).await } + +async fn apply_migrations(db: &AnyPool) -> anyhow::Result<()> { + let migrations_dir = Path::new(MIGRATIONS_DIR); + if !migrations_dir.exists() { + log::debug!("Not applying database migrations because '{}' does not exist", MIGRATIONS_DIR); + return Ok(()) + } + let migrator = Migrator::new(migrations_dir).await?; + migrator.run(db).await?; + Ok(()) +} \ No newline at end of file From 27d113c2516414c9a029d6325f21c6153435260b Mon Sep 17 00:00:00 2001 From: lovasoa Date: Thu, 18 Aug 2022 02:08:48 +0200 Subject: [PATCH 024/278] create a clean SplitTemplate Renderer --- src/http.rs | 3 ++- src/render.rs | 70 +++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 67 insertions(+), 6 deletions(-) diff --git a/src/http.rs b/src/http.rs index 3613ab6f..34a9ba99 100644 --- a/src/http.rs +++ b/src/http.rs @@ -11,11 +11,12 @@ use sqlx::any::AnyArguments; use sqlx::Arguments; +#[derive(Clone)] pub struct ResponseWriter { response_bytes: tokio::sync::mpsc::UnboundedSender>, } -impl std::io::Write for &ResponseWriter { +impl std::io::Write for ResponseWriter { fn write(&mut self, buf: &[u8]) -> std::io::Result { self.response_bytes .send(Ok(Bytes::copy_from_slice(buf))) diff --git a/src/render.rs b/src/render.rs index f7786e55..290e5827 100644 --- a/src/render.rs +++ b/src/render.rs @@ -1,12 +1,11 @@ use crate::http::ResponseWriter; use crate::{AppState, TEMPLATES_DIR}; -use handlebars::{ - handlebars_helper, template::TemplateElement, Handlebars, Template, TemplateError, -}; +use handlebars::{handlebars_helper, template::TemplateElement, Handlebars, Template, TemplateError, Renderable, JsonValue, Context, BlockContext}; use serde::ser::SerializeMap; use serde::{Serialize, Serializer}; use sqlx::{Column, Database, Decode, Row}; use std::fs::DirEntry; +use std::io::Error; use serde_json::json; pub struct RenderContext<'a> { @@ -113,7 +112,7 @@ impl RenderContext<'_> { self.handle_result_and_log(&self.app_state.all_templates.handlebars.render_to_write( name, data, - &self.writer, + self.writer.clone(), )); } @@ -122,7 +121,7 @@ impl RenderContext<'_> { self.handle_result_and_log(&self.app_state.all_templates.handlebars.render_to_write( name, data, - &self.writer, + self.writer.clone(), )); } @@ -205,6 +204,52 @@ struct SplitTemplate { after_list: Template, } + +impl handlebars::Output for ResponseWriter { + fn write(&mut self, seg: &str) -> std::io::Result<()> { + std::io::Write::write_all(self, seg.as_bytes()) + } +} + +struct SplitTemplateRenderer<'registry> { + split_template: &'registry SplitTemplate, + block_context: Option>, + registry: &'registry Handlebars<'registry>, + output: ResponseWriter, +} + +impl<'reg> SplitTemplateRenderer<'reg> { + fn render_start(&mut self, data: JsonValue) -> Result<(), handlebars::RenderError> { + let mut render_context = handlebars::RenderContext::new(None); + let mut ctx = Context::from(data); + self.split_template.before_list.render(self.registry, &ctx, &mut render_context, &mut self.output)?; + let mut blk = render_context.block_mut().map(std::mem::take).unwrap_or_default(); + blk.set_base_value(std::mem::take(ctx.data_mut())); + self.block_context = Some(blk); + Ok(()) + } + + fn render_item(&mut self, data: JsonValue) -> Result<(), handlebars::RenderError> { + let mut render_context = handlebars::RenderContext::new(None); + render_context.push_block(self.block_context.take().unwrap_or_default()); + let mut blk = BlockContext::new(); + blk.set_base_value(data); + render_context.push_block(blk); + let ctx = Context::null(); + self.split_template.list_content.render(self.registry, &ctx, &mut render_context, &mut self.output)?; + render_context.pop_block(); + self.block_context = render_context.block_mut().map(std::mem::take); + Ok(()) + } + + fn render_end(&mut self) -> Result<(), handlebars::RenderError> { + let mut render_context = handlebars::RenderContext::new(None); + render_context.push_block(self.block_context.take().unwrap_or_default()); + let mut ctx = Context::null(); + self.split_template.after_list.render(self.registry, &ctx, &mut render_context, &mut self.output) + } +} + fn split_template(mut original: Template) -> SplitTemplate { let mut elements_after = Vec::new(); let mut mapping_after = Vec::new(); @@ -329,3 +374,18 @@ fn test_split_template() { assert_eq!(split.list_content.elements, Template::compile("
  • {{this}}
  • ").unwrap().elements); assert_eq!(split.after_list.elements, Template::compile("end").unwrap().elements); } + +#[test] +fn test_nest() { + let registry = handlebars::Handlebars::new(); + let template = Template::compile("{{a}} {{../b}}").unwrap(); + let mut output = handlebars::StringOutput::new(); + let mut render_context = handlebars::RenderContext::new(None); + let mut block_ctx = handlebars::BlockContext::new(); + block_ctx.set_base_value(json!({"b": 13})); + render_context.push_block(block_ctx.clone()); + block_ctx.set_base_value(json!({"a": 12})); + render_context.push_block(block_ctx); + template.render(®istry, &Context::from(json!({"a": 555})), &mut render_context, &mut output); + assert_eq!(output.into_string().unwrap(), "12 13"); +} \ No newline at end of file From d8aedda5c446b268deae029fc64faf2b1f874d91 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Thu, 18 Aug 2022 22:45:07 +0200 Subject: [PATCH 025/278] better error handling, bug fixes --- Cargo.lock | 8 +- sqlsite/templates/card.handlebars | 2 +- sqlsite/templates/debug.handlebars | 2 +- sqlsite/templates/error.handlebars | 2 +- sqlsite/templates/form.handlebars | 2 +- sqlsite/templates/shell.handlebars | 3 +- src/http.rs | 22 ++- src/render.rs | 222 +++++++++++++++++------------ 8 files changed, 156 insertions(+), 107 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a4113231..c89523d8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1966,18 +1966,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.31" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.31" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21" dependencies = [ "proc-macro2", "quote", diff --git a/sqlsite/templates/card.handlebars b/sqlsite/templates/card.handlebars index 9010fff7..f4a80088 100644 --- a/sqlsite/templates/card.handlebars +++ b/sqlsite/templates/card.handlebars @@ -10,7 +10,7 @@
    {{/if}}
    -

    {{title}}

    +

    {{title}}

    {{body}}

    diff --git a/sqlsite/templates/debug.handlebars b/sqlsite/templates/debug.handlebars index 86d6fdd4..3351971e 100644 --- a/sqlsite/templates/debug.handlebars +++ b/sqlsite/templates/debug.handlebars @@ -1,4 +1,4 @@ -

    Debug output

    +

    Debug output

    {{#each_row}}
    {{stringify this}}
    {{/each_row}} diff --git a/sqlsite/templates/error.handlebars b/sqlsite/templates/error.handlebars index b7a26d09..b0f2eb21 100644 --- a/sqlsite/templates/error.handlebars +++ b/sqlsite/templates/error.handlebars @@ -1,4 +1,4 @@ - - + + + diff --git a/sqlsite/templates/table.handlebars b/sqlsite/templates/table.handlebars index a3547a82..0acfe60a 100644 --- a/sqlsite/templates/table.handlebars +++ b/sqlsite/templates/table.handlebars @@ -1,24 +1,33 @@
    -
    +
    + {{#if search}} +
    + +
    + {{/if}} {{~#each_row~}} {{#if (eq @row_index 0)}} - {{#each (entries this)}} + {{#each this}} {{/each}} - {{#delayed}}{{/delayed}} + {{#delayed}}{{/delayed}} {{/if}} - {{~#each (entries this)~}} - + {{~#each this~}} + {{~/each~}} {{~/each_row~}} From aba31cf85e443adcebac4b7ba55177f33b453586 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sat, 20 Aug 2022 09:54:57 +0200 Subject: [PATCH 031/278] Flush output buffer on error --- src/http.rs | 7 +++++-- src/main.rs | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/http.rs b/src/http.rs index a6b4207d..0b73b82a 100644 --- a/src/http.rs +++ b/src/http.rs @@ -26,8 +26,11 @@ impl ResponseWriter { buffer: Vec::new(), } } - fn close_with_error(&self, msg: String) { - let _ = self.response_bytes.send(Err(actix_web::error::ErrorInternalServerError(msg))); + fn close_with_error(&mut self, msg: String) { + if !self.response_bytes.is_closed() { + let _ = self.flush(); + let _ = self.response_bytes.send(Err(actix_web::error::ErrorInternalServerError(msg))); + } } } diff --git a/src/main.rs b/src/main.rs index 483086c6..f3d74b48 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,7 +13,7 @@ const TEMPLATES_DIR: &str = "sqlsite/templates"; const MIGRATIONS_DIR: &str = "sqlsite/migrations"; pub struct AppState { - db: sqlx::AnyPool, + db: AnyPool, all_templates: AllTemplates, listen_on: std::net::SocketAddr, } From 2c127d336c65c00f358b74259a9cb7a31f02ceff Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sat, 20 Aug 2022 09:57:24 +0200 Subject: [PATCH 032/278] fmt --- src/http.rs | 60 +++++++++++----- src/main.rs | 19 +++-- src/render.rs | 192 ++++++++++++++++++++++++++++++++++---------------- 3 files changed, 185 insertions(+), 86 deletions(-) diff --git a/src/http.rs b/src/http.rs index 0b73b82a..ab1e7991 100644 --- a/src/http.rs +++ b/src/http.rs @@ -1,17 +1,21 @@ -use std::mem; -use std::path::Component; use crate::render::RenderContext; use crate::{AppState, CONFIG_DIR, WEB_ROOT}; -use actix_web::{body::BodyStream, dev::Service, dev::ServiceResponse, http::header::CONTENT_TYPE, middleware::Logger, web, web::Bytes, App, HttpRequest, HttpResponse, HttpServer, FromRequest}; use actix_web::dev::Payload; +use actix_web::error::ErrorInternalServerError; use actix_web::http::Method; use actix_web::web::Form; +use actix_web::{ + body::BodyStream, dev::Service, dev::ServiceResponse, http::header::CONTENT_TYPE, + middleware::Logger, web, web::Bytes, App, FromRequest, HttpRequest, HttpResponse, HttpServer, +}; use anyhow::{bail, Context}; use futures_util::StreamExt; use futures_util::TryFutureExt; use sqlx::any::AnyArguments; use sqlx::Arguments; use std::io::Write; +use std::mem; +use std::path::Component; #[derive(Clone)] pub struct ResponseWriter { @@ -29,7 +33,7 @@ impl ResponseWriter { fn close_with_error(&mut self, msg: String) { if !self.response_bytes.is_closed() { let _ = self.flush(); - let _ = self.response_bytes.send(Err(actix_web::error::ErrorInternalServerError(msg))); + let _ = self.response_bytes.send(Err(ErrorInternalServerError(msg))); } } } @@ -40,12 +44,17 @@ impl Write for ResponseWriter { Ok(buf.len()) } fn flush(&mut self) -> std::io::Result<()> { - if self.buffer.is_empty() { return Ok(()); } + if self.buffer.is_empty() { + return Ok(()); + } self.response_bytes .send(Ok(mem::take(&mut self.buffer).into())) .map_err(|_err| { use std::io::*; - Error::new(ErrorKind::BrokenPipe, "The HTTP response writer has already been closed") + Error::new( + ErrorKind::BrokenPipe, + "The HTTP response writer has already been closed", + ) }) } } @@ -58,7 +67,12 @@ impl Drop for ResponseWriter { } } -async fn stream_response(req: HttpRequest, payload: Payload, sql_bytes: Bytes, response_bytes: ResponseWriter) -> anyhow::Result<()> { +async fn stream_response( + req: HttpRequest, + payload: Payload, + sql_bytes: Bytes, + response_bytes: ResponseWriter, +) -> anyhow::Result<()> { let app_state: &web::Data = req.app_data().context("no app data in render")?; let sql = std::str::from_utf8(&sql_bytes)?; let mut arguments = AnyArguments::default(); @@ -75,9 +89,11 @@ async fn stream_response(req: HttpRequest, payload: Payload, sql_bytes: Bytes, r if let Err(e) = render_result { if let Err(nested_err) = renderer.handle_error(&e.root_cause()) { renderer.writer.close_with_error(nested_err.to_string()); - bail!("An error occurred while trying to display an other error. \ + bail!( + "An error occurred while trying to display an other error. \ \nRoot error: {e}\n - \nNested error: {nested_err}"); + \nNested error: {nested_err}" + ); } } renderer.writer.flush()?; @@ -87,17 +103,22 @@ async fn stream_response(req: HttpRequest, payload: Payload, sql_bytes: Bytes, r } async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> String { - let headers: serde_json::Map = req.headers() + let headers: serde_json::Map = req + .headers() .iter() - .map(|(name, value)| ( - name.to_string(), - serde_json::Value::String(String::from_utf8_lossy(value.as_bytes()).to_string()) - )).collect(); + .map(|(name, value)| { + ( + name.to_string(), + serde_json::Value::String(String::from_utf8_lossy(value.as_bytes()).to_string()), + ) + }) + .collect(); let query = web::Query::::from_query(req.query_string()) .map(|q| q.into_inner()) .unwrap_or_default(); let client_ip = req.peer_addr().map(|addr| addr.ip()); - let form = Form::::from_request(req, &mut payload).await + let form = Form::::from_request(req, &mut payload) + .await .map(|form| form.into_inner()) .unwrap_or_default(); serde_json::json!({ @@ -105,10 +126,15 @@ async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> Strin "client_ip": client_ip, "query": query, "form": form - }).to_string() + }) + .to_string() } -async fn render_sql(req: HttpRequest, payload: Payload, sql_bytes: Bytes) -> actix_web::Result { +async fn render_sql( + req: HttpRequest, + payload: Payload, + sql_bytes: Bytes, +) -> actix_web::Result { let (sender, receiver) = tokio::sync::mpsc::unbounded_channel(); let writer = ResponseWriter::new(sender); actix_web::rt::spawn(async { diff --git a/src/main.rs b/src/main.rs index f3d74b48..d9eb1be4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,11 @@ mod http; mod render; -use std::path::Path; use render::AllTemplates; use sqlx::any::AnyConnectOptions; -use sqlx::{AnyPool, ConnectOptions}; use sqlx::migrate::Migrator; +use sqlx::{AnyPool, ConnectOptions}; +use std::path::Path; const WEB_ROOT: &str = "."; const CONFIG_DIR: &str = "sqlsite"; @@ -38,11 +38,13 @@ async fn main() -> std::io::Result<()> { .expect("Failed to connect to database"); if let Err(e) = apply_migrations(&db).await { - log::error!("An error occurred while running the database migration. + log::error!( + "An error occurred while running the database migration. The path '{MIGRATIONS_DIR}' has to point to a directory, which contains valid SQL files with names using the format '_.sql', where is a positive number, and is a string. - The current state of migrations will be stored in a table called _sqlx_migrations.\n {e:?}") + The current state of migrations will be stored in a table called _sqlx_migrations.\n {e:?}" + ) } log::info!("Connected to database: {database_url}"); @@ -66,10 +68,13 @@ async fn main() -> std::io::Result<()> { async fn apply_migrations(db: &AnyPool) -> anyhow::Result<()> { let migrations_dir = Path::new(MIGRATIONS_DIR); if !migrations_dir.exists() { - log::debug!("Not applying database migrations because '{}' does not exist", MIGRATIONS_DIR); - return Ok(()) + log::debug!( + "Not applying database migrations because '{}' does not exist", + MIGRATIONS_DIR + ); + return Ok(()); } let migrator = Migrator::new(migrations_dir).await?; migrator.run(db).await?; Ok(()) -} \ No newline at end of file +} diff --git a/src/render.rs b/src/render.rs index 685234fa..7b59bdeb 100644 --- a/src/render.rs +++ b/src/render.rs @@ -1,18 +1,20 @@ -use std::collections::HashMap; use crate::{AppState, TEMPLATES_DIR}; -use handlebars::{handlebars_helper, template::TemplateElement, Handlebars, Template, TemplateError, Renderable, JsonValue, Context, BlockContext, RenderError}; +use handlebars::{ + handlebars_helper, template::TemplateElement, BlockContext, Context, Handlebars, JsonValue, + RenderError, Renderable, Template, TemplateError, +}; use serde::ser::SerializeMap; use serde::{Serialize, Serializer}; +use serde_json::json; use sqlx::{Column, Database, Decode, Row}; +use std::collections::HashMap; use std::fs::DirEntry; -use serde_json::json; pub struct RenderContext<'a, W: std::io::Write> { app_state: &'a AppState, pub writer: W, current_component: Option>, shell_renderer: SplitTemplateRenderer<'a>, - } const DEFAULT_COMPONENT: &str = "default"; @@ -20,7 +22,8 @@ const DELAYED_CONTENTS: &str = "_delayed_contents"; impl RenderContext<'_, W> { pub fn new(app_state: &AppState, writer: W) -> RenderContext { - let shell_renderer = Self::create_renderer("shell", app_state).expect("shell must always exist"); + let shell_renderer = + Self::create_renderer("shell", app_state).expect("shell must always exist"); RenderContext { app_state, writer, @@ -29,21 +32,20 @@ impl RenderContext<'_, W> { } } - pub async fn handle_row( - &mut self, - row: sqlx::any::AnyRow, - ) -> anyhow::Result<()> { + pub async fn handle_row(&mut self, row: sqlx::any::AnyRow) -> anyhow::Result<()> { let data = SerializeRow(row); log::debug!("Processing database row: {:?}", json!(data)); let new_component = data.0.try_get::<&str, &str>("component"); let current_component = self.current_component.as_ref().map(|c| c.name()); match (current_component, new_component) { (None, Ok("head")) | (None, Err(_)) => { - self.shell_renderer.render_start(&mut self.writer, json!(&&data))?; + self.shell_renderer + .render_start(&mut self.writer, json!(&&data))?; self.open_component_with_data(DEFAULT_COMPONENT, &&data)?; } (None, new_component) => { - self.shell_renderer.render_start(&mut self.writer, json!(null))?; + self.shell_renderer + .render_start(&mut self.writer, json!(null))?; let component = new_component.unwrap_or(DEFAULT_COMPONENT); self.open_component_with_data(component, &&data)?; } @@ -57,10 +59,7 @@ impl RenderContext<'_, W> { Ok(()) } - pub async fn finish_query( - &mut self, - result: sqlx::any::AnyQueryResult, - ) -> anyhow::Result<()> { + pub async fn finish_query(&mut self, result: sqlx::any::AnyQueryResult) -> anyhow::Result<()> { log::trace!("finish_query: {:?}", result); Ok(()) } @@ -88,7 +87,10 @@ impl RenderContext<'_, W> { Ok(()) } - pub fn handle_result(&mut self, result: &Result) -> anyhow::Result<()> { + pub fn handle_result( + &mut self, + result: &Result, + ) -> anyhow::Result<()> { if let Err(error) = result { self.handle_error(error) } else { @@ -104,10 +106,15 @@ impl RenderContext<'_, W> { fn render_current_template_with_data(&mut self, data: &T) -> anyhow::Result<()> { use anyhow::Context; - let rdr = self.current_component.as_mut() - .with_context(|| format!("Tried to render the following data but no component is selected: {}", serde_json::to_string(data).unwrap_or_default()))?; + let rdr = self.current_component.as_mut().with_context(|| { + format!( + "Tried to render the following data but no component is selected: {}", + serde_json::to_string(data).unwrap_or_default() + ) + })?; rdr.render_item(&mut self.writer, json!(data))?; - self.shell_renderer.render_item(&mut self.writer, JsonValue::Null)?; + self.shell_renderer + .render_item(&mut self.writer, JsonValue::Null)?; Ok(()) } @@ -115,9 +122,14 @@ impl RenderContext<'_, W> { self.open_component_with_data(component, &json!(null)) } - fn create_renderer<'a>(component: &str, app_state: &'a AppState) -> anyhow::Result> { + fn create_renderer<'a>( + component: &str, + app_state: &'a AppState, + ) -> anyhow::Result> { use anyhow::Context; - let split_template = app_state.all_templates.split_templates + let split_template = app_state + .all_templates + .split_templates .get(component) .with_context(|| format!("The component '{component}' was not found."))?; Ok(SplitTemplateRenderer::new( @@ -131,10 +143,17 @@ impl RenderContext<'_, W> { Ok(()) } - fn open_component_with_data(&mut self, component: &str, data: &T) -> anyhow::Result<()> { + fn open_component_with_data( + &mut self, + component: &str, + data: &T, + ) -> anyhow::Result<()> { self.close_component()?; self.set_current_component(component)?; - self.current_component.as_mut().unwrap().render_start(&mut self.writer, json!(data))?; + self.current_component + .as_mut() + .unwrap() + .render_start(&mut self.writer, json!(data))?; Ok(()) } @@ -160,16 +179,16 @@ impl Drop for RenderContext<'_, W> { struct SerializeRow(R); impl<'r, R: Row> Serialize for &'r SerializeRow - where - usize: sqlx::ColumnIndex, - &'r str: sqlx::Decode<'r, ::Database>, - f64: sqlx::Decode<'r, ::Database>, - i64: sqlx::Decode<'r, ::Database>, - bool: sqlx::Decode<'r, ::Database>, +where + usize: sqlx::ColumnIndex, + &'r str: sqlx::Decode<'r, ::Database>, + f64: sqlx::Decode<'r, ::Database>, + i64: sqlx::Decode<'r, ::Database>, + bool: sqlx::Decode<'r, ::Database>, { fn serialize(&self, serializer: S) -> Result - where - S: Serializer, + where + S: Serializer, { use sqlx::{TypeInfo, ValueRef}; let columns = self.0.columns(); @@ -209,7 +228,6 @@ struct SplitTemplate { after_list: Template, } - struct HandlebarWriterOutput(W); impl handlebars::Output for HandlebarWriterOutput { @@ -226,10 +244,7 @@ struct SplitTemplateRenderer<'registry> { } impl<'reg> SplitTemplateRenderer<'reg> { - fn new( - split_template: &'reg SplitTemplate, - registry: &'reg Handlebars<'reg>, - ) -> Self { + fn new(split_template: &'reg SplitTemplate, registry: &'reg Handlebars<'reg>) -> Self { Self { split_template, block_context: None, @@ -238,22 +253,42 @@ impl<'reg> SplitTemplateRenderer<'reg> { } } fn name(&self) -> &str { - self.split_template.list_content.name.as_deref().unwrap_or_default() + self.split_template + .list_content + .name + .as_deref() + .unwrap_or_default() } - fn render_start(&mut self, writer: W, data: JsonValue) -> Result<(), handlebars::RenderError> { + fn render_start( + &mut self, + writer: W, + data: JsonValue, + ) -> Result<(), handlebars::RenderError> { let mut render_context = handlebars::RenderContext::new(None); let mut ctx = Context::from(data); let mut output = HandlebarWriterOutput(writer); - self.split_template.before_list.render(self.registry, &ctx, &mut render_context, &mut output)?; - let mut blk = render_context.block_mut().map(std::mem::take).unwrap_or_default(); + self.split_template.before_list.render( + self.registry, + &ctx, + &mut render_context, + &mut output, + )?; + let mut blk = render_context + .block_mut() + .map(std::mem::take) + .unwrap_or_default(); blk.set_base_value(std::mem::take(ctx.data_mut())); self.block_context = Some(blk); self.row_index = 0; Ok(()) } - fn render_item(&mut self, writer: W, data: JsonValue) -> Result<(), handlebars::RenderError> { + fn render_item( + &mut self, + writer: W, + data: JsonValue, + ) -> Result<(), handlebars::RenderError> { if let Some(block_context) = self.block_context.take() { let mut render_context = handlebars::RenderContext::new(None); render_context.push_block(block_context); @@ -263,7 +298,12 @@ impl<'reg> SplitTemplateRenderer<'reg> { render_context.push_block(blk); let ctx = Context::null(); let mut output = HandlebarWriterOutput(writer); - self.split_template.list_content.render(self.registry, &ctx, &mut render_context, &mut output)?; + self.split_template.list_content.render( + self.registry, + &ctx, + &mut render_context, + &mut output, + )?; render_context.pop_block(); self.block_context = render_context.block_mut().map(std::mem::take); self.row_index += 1; @@ -273,7 +313,8 @@ impl<'reg> SplitTemplateRenderer<'reg> { fn render_end(&mut self, mut writer: W) -> Result<(), RenderError> { if let Some(block_context) = self.block_context.take() { - let delayed = block_context.get_local_var(DELAYED_CONTENTS) + let delayed = block_context + .get_local_var(DELAYED_CONTENTS) .and_then(|v| v.as_str()) .filter(|s| !s.is_empty()); if let Some(contents) = delayed { @@ -283,7 +324,12 @@ impl<'reg> SplitTemplateRenderer<'reg> { render_context.push_block(block_context); let ctx = Context::null(); let mut output = HandlebarWriterOutput(writer); - self.split_template.after_list.render(self.registry, &ctx, &mut render_context, &mut output)?; + self.split_template.after_list.render( + self.registry, + &ctx, + &mut render_context, + &mut output, + )?; } Ok(()) } @@ -332,7 +378,10 @@ pub struct AllTemplates { split_templates: HashMap, } -fn without_top_block<'a, 'reg, 'rc, R>(rc: &'a mut handlebars::RenderContext<'reg, 'rc>, action: impl FnOnce(&mut handlebars::RenderContext<'reg, 'rc>) -> R) -> R { +fn without_top_block<'a, 'reg, 'rc, R>( + rc: &'a mut handlebars::RenderContext<'reg, 'rc>, + action: impl FnOnce(&mut handlebars::RenderContext<'reg, 'rc>) -> R, +) -> R { let top = rc.block_mut().map(std::mem::take).unwrap_or_default(); rc.pop_block(); let r = action(rc); @@ -347,14 +396,17 @@ fn delayed_helper<'reg, 'rc>( rc: &mut handlebars::RenderContext<'reg, 'rc>, _out: &mut dyn handlebars::Output, ) -> handlebars::HelperResult { - let inner = h.template() + let inner = h + .template() .ok_or_else(|| RenderError::new("missing delayed contents"))?; let mut str_out = handlebars::StringOutput::new(); inner.render(r, ctx, rc, &mut str_out)?; without_top_block(rc, move |rc| { - let block = rc.block_mut() + let block = rc + .block_mut() .ok_or_else(|| RenderError::new("Cannot use delayed output without a block context"))?; - let old_delayed_render = block.get_local_var(DELAYED_CONTENTS) + let old_delayed_render = block + .get_local_var(DELAYED_CONTENTS) .and_then(|v| v.as_str()) .unwrap_or_default(); let delayed_render = str_out.into_string()? + old_delayed_render; @@ -386,11 +438,20 @@ impl AllTemplates { handlebars.register_helper("entries", Box::new(entries)); handlebars.register_helper("delayed", Box::new(delayed_helper)); let split_templates = HashMap::new(); - let mut this = Self { handlebars, split_templates }; - this.register_split("shell", include_str!("../sqlsite/templates/shell.handlebars")) - .expect("Embedded shell template contains an error"); - this.register_split("error", include_str!("../sqlsite/templates/error.handlebars")) - .expect("Embedded shell template contains an error"); + let mut this = Self { + handlebars, + split_templates, + }; + this.register_split( + "shell", + include_str!("../sqlsite/templates/shell.handlebars"), + ) + .expect("Embedded shell template contains an error"); + this.register_split( + "error", + include_str!("../sqlsite/templates/error.handlebars"), + ) + .expect("Embedded shell template contains an error"); this.register_dir(); this } @@ -438,11 +499,21 @@ fn test_split_template() { "Hello {{name}} ! \ {{#each_row}}
  • {{this}}
  • {{/each_row}}\ end", - ).unwrap(); + ) + .unwrap(); let split = split_template(template); - assert_eq!(split.before_list.elements, Template::compile("Hello {{name}} ! ").unwrap().elements); - assert_eq!(split.list_content.elements, Template::compile("
  • {{this}}
  • ").unwrap().elements); - assert_eq!(split.after_list.elements, Template::compile("end").unwrap().elements); + assert_eq!( + split.before_list.elements, + Template::compile("Hello {{name}} ! ").unwrap().elements + ); + assert_eq!( + split.list_content.elements, + Template::compile("
  • {{this}}
  • ").unwrap().elements + ); + assert_eq!( + split.after_list.elements, + Template::compile("end").unwrap().elements + ); } #[test] @@ -455,14 +526,11 @@ fn test_split_template_render() -> anyhow::Result<()> { )?; let split = split_template(template); let mut output = Vec::new(); - let mut rdr = SplitTemplateRenderer::new( - &split, - ®, - ); + let mut rdr = SplitTemplateRenderer::new(&split, ®); rdr.render_start(&mut output, json!({"name": "SQL"}))?; rdr.render_item(&mut output, json!({"x": 1}))?; rdr.render_item(&mut output, json!({"x": 2}))?; rdr.render_end(&mut output)?; assert_eq!(output, b"Hello SQL ! (1 : SQL) (2 : SQL) Goodbye SQL"); Ok(()) -} \ No newline at end of file +} From 78019ca412bd6bb25a89a56f7a03daa82c671e44 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sat, 20 Aug 2022 11:01:11 +0200 Subject: [PATCH 033/278] improve output buffering This improves the behavior of the server under high load --- src/http.rs | 43 ++++++++++++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/src/http.rs b/src/http.rs index ab1e7991..43dfb4a6 100644 --- a/src/http.rs +++ b/src/http.rs @@ -16,15 +16,20 @@ use sqlx::Arguments; use std::io::Write; use std::mem; use std::path::Component; +use tokio::sync::mpsc; + +/// If the sending queue exceeds this number of outgoing messages, an error will be thrown +/// This prevents a single request from using up all available memory +const MAX_PENDING_MESSAGES: usize = 4; #[derive(Clone)] pub struct ResponseWriter { buffer: Vec, - response_bytes: tokio::sync::mpsc::UnboundedSender>, + response_bytes: mpsc::Sender>, } impl ResponseWriter { - fn new(response_bytes: tokio::sync::mpsc::UnboundedSender>) -> Self { + fn new(response_bytes: mpsc::Sender>) -> Self { Self { response_bytes, buffer: Vec::new(), @@ -33,32 +38,40 @@ impl ResponseWriter { fn close_with_error(&mut self, msg: String) { if !self.response_bytes.is_closed() { let _ = self.flush(); - let _ = self.response_bytes.send(Err(ErrorInternalServerError(msg))); + let _ = self + .response_bytes + .try_send(Err(ErrorInternalServerError(msg))); } } -} -impl Write for ResponseWriter { - fn write(&mut self, buf: &[u8]) -> std::io::Result { - self.buffer.extend_from_slice(buf); - Ok(buf.len()) - } - fn flush(&mut self) -> std::io::Result<()> { + async fn async_flush(&mut self) -> std::io::Result<()> { if self.buffer.is_empty() { return Ok(()); } self.response_bytes .send(Ok(mem::take(&mut self.buffer).into())) - .map_err(|_err| { + .await + .map_err(|err| { use std::io::*; Error::new( ErrorKind::BrokenPipe, - "The HTTP response writer has already been closed", + format!("The HTTP response writer with a capacity of {} has already been closed: {err}", MAX_PENDING_MESSAGES), ) }) } } +impl Write for ResponseWriter { + #[inline(always)] + fn write(&mut self, buf: &[u8]) -> std::io::Result { + self.buffer.extend_from_slice(buf); + Ok(buf.len()) + } + fn flush(&mut self) -> std::io::Result<()> { + Err(std::io::ErrorKind::WouldBlock.into()) + } +} + impl Drop for ResponseWriter { fn drop(&mut self) { if let Err(e) = self.flush() { @@ -96,7 +109,7 @@ async fn stream_response( ); } } - renderer.writer.flush()?; + renderer.writer.async_flush().await?; } log::debug!("Successfully finished rendering the page"); Ok(()) @@ -135,7 +148,7 @@ async fn render_sql( payload: Payload, sql_bytes: Bytes, ) -> actix_web::Result { - let (sender, receiver) = tokio::sync::mpsc::unbounded_channel(); + let (sender, receiver) = mpsc::channel(MAX_PENDING_MESSAGES); let writer = ResponseWriter::new(sender); actix_web::rt::spawn(async { if let Err(err) = stream_response(req, payload, sql_bytes, writer).await { @@ -145,7 +158,7 @@ async fn render_sql( Ok(HttpResponse::Ok() .content_type("text/html; charset=utf-8") .body(BodyStream::new( - tokio_stream::wrappers::UnboundedReceiverStream::new(receiver), + tokio_stream::wrappers::ReceiverStream::new(receiver), ))) } From aab915cf3ec522845f11185427b4127d57dbab06 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sat, 20 Aug 2022 14:38:20 +0200 Subject: [PATCH 034/278] Implement working chart component --- sqlsite/templates/chart.js | 48 ++++++++++++++++++++++++++++++ sqlsite/templates/shell.handlebars | 14 ++++----- src/http.rs | 11 ++++--- src/render.rs | 36 +++++++++++----------- 4 files changed, 81 insertions(+), 28 deletions(-) create mode 100644 sqlsite/templates/chart.js diff --git a/sqlsite/templates/chart.js b/sqlsite/templates/chart.js new file mode 100644 index 00000000..26d60d47 --- /dev/null +++ b/sqlsite/templates/chart.js @@ -0,0 +1,48 @@ +for (const c of document.getElementsByClassName("chart")) { + try { + const series = {}; + JSON.parse(c.dataset.contents).forEach(([name, x, y]) => { + series[name] = series[name] || { name, data: [] } + series[name].data.push([x, y]); + }) + c.innerHTML = ""; + new ApexCharts(c, { + chart: { + type: 'line', + fontFamily: 'inherit', + parentHeightOffset: 0, + height: 250, + toolbar: { + show: false, + }, + animations: { + enabled: false + } + }, + dataLabels: { + enabled: false, + }, + fill: { + opacity: .16, + type: 'solid' + }, + stroke: { + width: 4, + lineCap: "round", + curve: "smooth", + }, + xaxis: { + labels: { + padding: 0, + }, + tooltip: { + enabled: false + }, + axisBorder: { + show: false, + }, + }, + series: Object.values(series), + }).render() + } catch (e) { console.log(e) } +} diff --git a/sqlsite/templates/shell.handlebars b/sqlsite/templates/shell.handlebars index 68a08ee2..4a006c2b 100644 --- a/sqlsite/templates/shell.handlebars +++ b/sqlsite/templates/shell.handlebars @@ -14,6 +14,11 @@ crossorigin="anonymous" defer> + + @@ -36,18 +41,13 @@
    - {{~#each_row~}}{{~/each_row~}} + {{~#each_row~}}{{~/each_row~}}
    - + diff --git a/src/http.rs b/src/http.rs index 43dfb4a6..228b2003 100644 --- a/src/http.rs +++ b/src/http.rs @@ -20,7 +20,7 @@ use tokio::sync::mpsc; /// If the sending queue exceeds this number of outgoing messages, an error will be thrown /// This prevents a single request from using up all available memory -const MAX_PENDING_MESSAGES: usize = 4; +const MAX_PENDING_MESSAGES: usize = 128; #[derive(Clone)] pub struct ResponseWriter { @@ -68,7 +68,9 @@ impl Write for ResponseWriter { Ok(buf.len()) } fn flush(&mut self) -> std::io::Result<()> { - Err(std::io::ErrorKind::WouldBlock.into()) + self.response_bytes + .try_send(Ok(mem::take(&mut self.buffer).into())) + .map_err(|e| std::io::Error::new(std::io::ErrorKind::WouldBlock, e.to_string())) } } @@ -101,7 +103,7 @@ async fn stream_response( }; if let Err(e) = render_result { if let Err(nested_err) = renderer.handle_error(&e.root_cause()) { - renderer.writer.close_with_error(nested_err.to_string()); + renderer.close().close_with_error(nested_err.to_string()); bail!( "An error occurred while trying to display an other error. \ \nRoot error: {e}\n @@ -111,6 +113,7 @@ async fn stream_response( } renderer.writer.async_flush().await?; } + renderer.close().async_flush().await?; log::debug!("Successfully finished rendering the page"); Ok(()) } @@ -140,7 +143,7 @@ async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> Strin "query": query, "form": form }) - .to_string() + .to_string() } async fn render_sql( diff --git a/src/render.rs b/src/render.rs index 7b59bdeb..5164db8c 100644 --- a/src/render.rs +++ b/src/render.rs @@ -8,6 +8,7 @@ use serde::{Serialize, Serializer}; use serde_json::json; use sqlx::{Column, Database, Decode, Row}; use std::collections::HashMap; +use std::ffi::OsStr; use std::fs::DirEntry; pub struct RenderContext<'a, W: std::io::Write> { @@ -163,32 +164,31 @@ impl RenderContext<'_, W> { } Ok(()) } -} -impl Drop for RenderContext<'_, W> { - fn drop(&mut self) { + pub fn close(mut self) -> W { if let Some(mut component) = self.current_component.take() { let res = component.render_end(&mut self.writer); self.handle_result_and_log(&res); } let res = self.shell_renderer.render_end(&mut self.writer); self.handle_result_and_log(&res); + self.writer } } struct SerializeRow(R); impl<'r, R: Row> Serialize for &'r SerializeRow -where - usize: sqlx::ColumnIndex, - &'r str: sqlx::Decode<'r, ::Database>, - f64: sqlx::Decode<'r, ::Database>, - i64: sqlx::Decode<'r, ::Database>, - bool: sqlx::Decode<'r, ::Database>, + where + usize: sqlx::ColumnIndex, + &'r str: sqlx::Decode<'r, ::Database>, + f64: sqlx::Decode<'r, ::Database>, + i64: sqlx::Decode<'r, ::Database>, + bool: sqlx::Decode<'r, ::Database>, { fn serialize(&self, serializer: S) -> Result - where - S: Serializer, + where + S: Serializer, { use sqlx::{TypeInfo, ValueRef}; let columns = self.0.columns(); @@ -446,12 +446,12 @@ impl AllTemplates { "shell", include_str!("../sqlsite/templates/shell.handlebars"), ) - .expect("Embedded shell template contains an error"); + .expect("Embedded shell template contains an error"); this.register_split( "error", include_str!("../sqlsite/templates/error.handlebars"), ) - .expect("Embedded shell template contains an error"); + .expect("Embedded shell template contains an error"); this.register_dir(); this } @@ -484,10 +484,12 @@ impl AllTemplates { entry: std::io::Result, ) -> Result<(), Box> { let path = entry?.path(); - if matches!(path.extension(), Some(x) if x == "handlebars") { - let tpl_str = std::fs::read_to_string(&path)?; - let name = path.file_stem().unwrap().to_string_lossy(); + let tpl_str = std::fs::read_to_string(&path)?; + let name = path.file_stem().unwrap().to_string_lossy(); + if path.extension() == Some(OsStr::new("handlebars")) { self.register_split(&name, &tpl_str)?; + } else { + self.handlebars.register_partial(&name, &tpl_str)?; } Ok(()) } @@ -500,7 +502,7 @@ fn test_split_template() { {{#each_row}}
  • {{this}}
  • {{/each_row}}\ end", ) - .unwrap(); + .unwrap(); let split = split_template(template); assert_eq!( split.before_list.elements, From 6e1d3cd417d07aad424d30f9610925ec895c933a Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sat, 20 Aug 2022 16:33:48 +0200 Subject: [PATCH 035/278] Add missing template files --- sqlsite/templates/chart.handlebars | 25 +++++++++++++++++++++++++ sqlsite/templates/table.js | 8 ++++++++ 2 files changed, 33 insertions(+) create mode 100644 sqlsite/templates/chart.handlebars create mode 100644 sqlsite/templates/table.js diff --git a/sqlsite/templates/chart.handlebars b/sqlsite/templates/chart.handlebars new file mode 100644 index 00000000..f6a25fcf --- /dev/null +++ b/sqlsite/templates/chart.handlebars @@ -0,0 +1,25 @@ +
    +
    +
    +

    {{title}}

    +
    +
    +
    +
    + Loading... +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/sqlsite/templates/table.js b/sqlsite/templates/table.js new file mode 100644 index 00000000..6326de7c --- /dev/null +++ b/sqlsite/templates/table.js @@ -0,0 +1,8 @@ +// Tables +for (const r of document.getElementsByClassName("data-list")) { + new List(r, { + valueNames: [...r.getElementsByClassName("sort")] + .map(t => t.dataset.sort), + indexAsync: true + }); +} From 7d3f74089f37ccb68e407fe7ac5331dbd9f4dcda Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sun, 21 Aug 2022 00:17:53 +0200 Subject: [PATCH 036/278] bug fixes and new features in the graph component --- sqlsite/templates/chart.handlebars | 40 +++++++---- sqlsite/templates/chart.js | 110 ++++++++++++++++++++++++----- src/render.rs | 2 +- 3 files changed, 121 insertions(+), 31 deletions(-) diff --git a/sqlsite/templates/chart.handlebars b/sqlsite/templates/chart.handlebars index f6a25fcf..50dc36b5 100644 --- a/sqlsite/templates/chart.handlebars +++ b/sqlsite/templates/chart.handlebars @@ -3,23 +3,39 @@

    {{title}}

    -
    +
    Loading...
    +
    \ No newline at end of file diff --git a/sqlsite/templates/chart.js b/sqlsite/templates/chart.js index 26d60d47..d94e2a73 100644 --- a/sqlsite/templates/chart.js +++ b/sqlsite/templates/chart.js @@ -1,48 +1,122 @@ +/** @typedef { { [name:string]: {data:{x:number,y:number}[], name:string} } } Series */ + +/** + * @param {Series} series + * @returns {Series} */ +function align_categories(series) { + const new_series = series.map(s => ({ name: s.name, data: [] })); + do { + var category = null; + series.forEach((s, s_i) => { + const point = s.data[0]; + let new_point = { x: category, y: NaN }; + if (point) { + if (category == null) category = point.x; + if (category === point.x) { + new_point = s.data.shift(); + } + } + new_series[s_i].data.push(new_point); + }) + new_series.forEach(s => s.data[s.data.length - 1].x = category); + } while (category != null); + new_series.forEach(s => s.data.pop()); + return new_series; +} + for (const c of document.getElementsByClassName("chart")) { try { - const series = {}; - JSON.parse(c.dataset.contents).forEach(([name, x, y]) => { - series[name] = series[name] || { name, data: [] } - series[name].data.push([x, y]); + const data = JSON.parse(c.querySelector("data").innerText); + /** @type { Series } */ + const series_map = {}; + data.points.forEach(([name, x, y]) => { + series_map[name] = series_map[name] || { name, data: [] } + series_map[name].data.push({ x, y }); }) - c.innerHTML = ""; - new ApexCharts(c, { + if (data.xmin == null) data.xmin = undefined; + if (data.xmax == null) data.xmax = undefined; + if (data.ymin == null) data.ymin = 0; + if (data.ymax == null) data.ymax = undefined; + + let series = Object.values(series_map); + + // tickamount is the number of intervals, not the number of ticks + const tickAmount = data.xticks || + Math.min(30, Math.max(...series.map(s => s.data.length - 1))); + + const categories = typeof data.points[0][1] === "string"; + if (categories) series = align_categories(series); + + const options = { chart: { - type: 'line', + type: data.type || 'line', fontFamily: 'inherit', parentHeightOffset: 0, - height: 250, + height: c.style.height, + stacked: !!data.stacked, toolbar: { show: false, }, animations: { enabled: false + }, + zoom: { + enabled: false } }, + theme: { + palette: 'palette4', + }, dataLabels: { enabled: false, }, fill: { - opacity: .16, - type: 'solid' + opacity: .7, + type: data.type === 'area' ? 'gradient' : 'solid', }, stroke: { - width: 4, + width: data.type === 'area' ? 3 : 1, lineCap: "round", curve: "smooth", }, xaxis: { - labels: { - padding: 0, - }, tooltip: { enabled: false }, - axisBorder: { - show: false, + min: data.xmin, + max: data.xmax, + tickAmount, + title: { + text: data.xtitle || undefined, }, + type: data.time ? 'datetime' : categories ? 'category' : undefined, + }, + yaxis: { + logarithmic: !!data.logarithmic, + min: data.ymin, + max: data.ymax, + title: { + text: data.ytitle || undefined, + } + }, + markers: { + size: data.marker || 0, + strokeWidth: 0, + hover: { + sizeOffset: 5, + } + }, + tooltip: { + fixed: { + enabled: true, + } }, - series: Object.values(series), - }).render() + series + }; + c.innerHTML = ""; + const chart = new ApexCharts(c, options); + chart.render(); + if (window.charts) window.charts.push(chart); + else window.charts = [chart]; } catch (e) { console.log(e) } } diff --git a/src/render.rs b/src/render.rs index 5164db8c..4a9f290a 100644 --- a/src/render.rs +++ b/src/render.rs @@ -50,7 +50,7 @@ impl RenderContext<'_, W> { let component = new_component.unwrap_or(DEFAULT_COMPONENT); self.open_component_with_data(component, &&data)?; } - (Some(current_component), Ok(new_component)) if new_component != current_component => { + (Some(_current_component), Ok(new_component)) => { self.open_component_with_data(new_component, &&data)?; } (Some(_), _) => { From 7e6ddc5c45d110e37970042626bb6014a68ad393 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sun, 21 Aug 2022 12:21:19 +0200 Subject: [PATCH 037/278] preserve column order from sql rows --- Cargo.lock | 1 + Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 819e4ca3..329fd917 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1611,6 +1611,7 @@ version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" dependencies = [ + "indexmap", "itoa", "ryu", "serde", diff --git a/Cargo.toml b/Cargo.toml index 266d2b10..29fca426 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,4 +17,4 @@ tokio = { version = "1.20.1", features = ["sync"] } tokio-stream = "0.1.9" anyhow = "1.0.58" serde = "1.0.140" -serde_json = "1.0.82" \ No newline at end of file +serde_json = { version = "1.0.82", features = ["preserve_order"] } \ No newline at end of file From 62b1cfce7ed979d115fe551f8bda61db928f862f Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sun, 21 Aug 2022 14:47:13 +0200 Subject: [PATCH 038/278] improve form visuals --- Cargo.lock | 177 +++++++++++++++--------------- sqlsite/templates/form.handlebars | 94 ++++++++-------- 2 files changed, 140 insertions(+), 131 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 329fd917..3f4710a2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -247,9 +247,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.58" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704" +checksum = "1485d4d2cc45e7b201ee3767015c96faa5904387c9d87c6efdd0fb511f12d305" [[package]] name = "askama_escape" @@ -333,9 +333,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.10.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" +checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" [[package]] name = "byteorder" @@ -345,9 +345,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" [[package]] name = "bytestring" @@ -414,9 +414,9 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" [[package]] name = "cpufeatures" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +checksum = "1079fb8528d9f9c888b1e8aa651e6e079ade467323d58f75faf1d30b1808f540" dependencies = [ "libc", ] @@ -541,16 +541,19 @@ dependencies = [ ] [[package]] -name = "dotenv" -version = "0.15.0" +name = "dotenvy" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" +checksum = "7e851a83c30366fd01d75b913588e95e74a1705c1ecc5d58b1f8e1a6d556525f" +dependencies = [ + "dirs", +] [[package]] name = "either" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" [[package]] name = "encoding_rs" @@ -650,9 +653,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +checksum = "2bfc52cbddcfd745bf1740338492bb0bd83d76c67b445f91c5fb29fae29ecaa1" dependencies = [ "futures-core", "futures-sink", @@ -660,15 +663,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" +checksum = "d2acedae88d38235936c3922476b10fced7b2b68136f5e3c03c2d5be348a1115" [[package]] name = "futures-executor" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +checksum = "1d11aa21b5b587a64682c0094c2bdd4df0076c5324961a40cc3abd7f37930528" dependencies = [ "futures-core", "futures-task", @@ -688,9 +691,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +checksum = "0db9cce532b0eae2ccf2766ab246f114b56b9cf6d445e00c2549fbc100ca045d" dependencies = [ "proc-macro2", "quote", @@ -699,21 +702,21 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" +checksum = "ca0bae1fe9752cf7fd9b0064c674ae63f97b37bc714d745cbde0afb7ec4e6765" [[package]] name = "futures-task" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" +checksum = "842fc63b931f4056a24d59de13fb1272134ce261816e063e634ad0c15cdc5306" [[package]] name = "futures-util" -version = "0.3.21" +version = "0.3.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +checksum = "f0828a5471e340229c11c77ca80017937ce3c58cb788a17e5f1c2d5c485a9577" dependencies = [ "futures-core", "futures-macro", @@ -726,9 +729,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.5" +version = "0.14.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" dependencies = [ "typenum", "version_check", @@ -747,9 +750,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" +checksum = "5ca32592cf21ac7ccab1825cd87f6c9b3d9022c44d086172ed0966bec8af30be" dependencies = [ "bytes", "fnv", @@ -914,9 +917,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" [[package]] name = "jobserver" @@ -953,15 +956,15 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.126" +version = "0.2.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" +checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" [[package]] name = "libm" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da83a57f3f5ba3680950aa3cbc806fc297bc0b289d42e8942ed528ace71b8145" +checksum = "292a948cd991e376cf75541fe5b97a1081d713c618b4f1b9500f8844e49eb565" [[package]] name = "libsqlite3-sys" @@ -1183,9 +1186,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" +checksum = "074864da206b4973b84eb91683020dbefd6a8c3f0f38e054d93954e891935e4e" [[package]] name = "openssl" @@ -1282,9 +1285,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" +checksum = "9423e2b32f7a043629287a536f21951e8c6a82482d0acb1eeebfc90bc2225b22" [[package]] name = "pem-rfc7468" @@ -1303,9 +1306,9 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pest" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69486e2b8c2d2aeb9762db7b4e00b0331156393555cff467f4163ff06821eef8" +checksum = "4b0560d531d1febc25a3c9398a62a71256c0178f2e3443baedd9ad4bb8c9deb4" dependencies = [ "thiserror", "ucd-trie", @@ -1313,9 +1316,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b13570633aff33c6d22ce47dd566b10a3b9122c2fe9d8e7501895905be532b91" +checksum = "905708f7f674518498c1f8d644481440f476d39ca6ecae83319bba7c6c12da91" dependencies = [ "pest", "pest_generator", @@ -1323,9 +1326,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3c567e5702efdc79fb18859ea74c3eb36e14c43da7b8c1f098a4ed6514ec7a0" +checksum = "5803d8284a629cc999094ecd630f55e91b561a1d1ba75e233b00ae13b91a69ad" dependencies = [ "pest", "pest_meta", @@ -1336,9 +1339,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eb32be5ee3bbdafa8c7a18b0a8a8d962b66cfa2ceee4037f49267a50ee821fe" +checksum = "1538eb784f07615c6d9a8ab061089c6c54a344c5b4301db51990ca1c241e8c04" dependencies = [ "once_cell", "pest", @@ -1347,18 +1350,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260" +checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74" +checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ "proc-macro2", "quote", @@ -1413,18 +1416,18 @@ checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "proc-macro2" -version = "1.0.42" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ "proc-macro2", ] @@ -1536,9 +1539,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" [[package]] name = "schannel" @@ -1558,9 +1561,9 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] name = "security-framework" -version = "2.6.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" dependencies = [ "bitflags", "core-foundation", @@ -1581,24 +1584,24 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1" +checksum = "93f6841e709003d68bb2deee8c343572bf446003ec20a583e76f7b15cebf3711" [[package]] name = "serde" -version = "1.0.140" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" +checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.140" +version = "1.0.144" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da" +checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" dependencies = [ "proc-macro2", "quote", @@ -1607,9 +1610,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.82" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" +checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7" dependencies = [ "indexmap", "itoa", @@ -1752,9 +1755,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f82cbe94f41641d6c410ded25bbf5097c240cefdf8e3b06d04198d0a96af6a4" +checksum = "788841def501aabde58d3666fcea11351ec3962e6ea75dbcd05c84a71d68bcd1" dependencies = [ "sqlx-core", "sqlx-macros", @@ -1762,9 +1765,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b69bf218860335ddda60d6ce85ee39f6cf6e5630e300e19757d1de15886a093" +checksum = "8c21d3b5e7cadfe9ba7cdc1295f72cc556c750b4419c27c219c0693198901f8e" dependencies = [ "ahash", "atoi", @@ -1776,6 +1779,7 @@ dependencies = [ "crossbeam-queue", "digest", "dirs", + "dotenvy", "either", "event-listener", "flume", @@ -1818,11 +1822,11 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40c63177cf23d356b159b60acd27c54af7423f1736988502e36bae9a712118f" +checksum = "4adfd2df3557bddd3b91377fc7893e8fa899e9b4061737cbade4e1bb85f1b45c" dependencies = [ - "dotenv", + "dotenvy", "either", "heck", "once_cell", @@ -1837,11 +1841,10 @@ dependencies = [ [[package]] name = "sqlx-rt" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874e93a365a598dc3dadb197565952cb143ae4aa716f7bcc933a8d836f6bf89f" +checksum = "7be52fc7c96c136cedea840ed54f7d446ff31ad670c9dea95ebcb998530971a3" dependencies = [ - "actix-rt", "native-tls", "once_cell", "tokio", @@ -1866,9 +1869,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" dependencies = [ "proc-macro2", "quote", @@ -1920,9 +1923,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.11" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217" +checksum = "db76ff9fa4b1458b3c7f077f3ff9887394058460d21e634355b273aaf11eea45" dependencies = [ "itoa", "libc", @@ -2008,9 +2011,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.35" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" dependencies = [ "cfg-if", "log", @@ -2056,9 +2059,9 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" [[package]] name = "unicode-normalization" diff --git a/sqlsite/templates/form.handlebars b/sqlsite/templates/form.handlebars index 1f8caba2..a7a3da29 100644 --- a/sqlsite/templates/form.handlebars +++ b/sqlsite/templates/form.handlebars @@ -1,48 +1,54 @@ -
    - {{#each_row}} - {{#if (or (eq type "radio") (eq type "checkbox"))}} -
    -
    {{#delayed}}{{/delayed}} + {{#delay}}{{/delay}} {{/if}} @@ -31,6 +31,7 @@ {{~/each~}} {{~/each_row~}} + {{flush_delayed}}
    - + {{#if ../../sort}} + + {{else}} + {{@key}} + {{/if}}
    {{value}}{{this}}
    diff --git a/sqlsite/templates/text.handlebars b/sqlsite/templates/text.handlebars new file mode 100644 index 00000000..20a55812 --- /dev/null +++ b/sqlsite/templates/text.handlebars @@ -0,0 +1,16 @@ +

    {{title}}

    +

    + {{contents}} + {{#each_row}} + {{#if link}} + {{#delay}}{{/delay}} + {{/if}} + {{contents}} + {{flush_delayed}} + {{/each_row}} +

    \ No newline at end of file diff --git a/src/render.rs b/src/render.rs index 4a9f290a..3afe7857 100644 --- a/src/render.rs +++ b/src/render.rs @@ -35,7 +35,7 @@ impl RenderContext<'_, W> { pub async fn handle_row(&mut self, row: sqlx::any::AnyRow) -> anyhow::Result<()> { let data = SerializeRow(row); - log::debug!("Processing database row: {:?}", json!(data)); + log::debug!("<- Processing database row: {}", serde_json::to_string(&&data).unwrap_or_else(|e|e.to_string())); let new_component = data.0.try_get::<&str, &str>("component"); let current_component = self.current_component.as_ref().map(|c| c.name()); match (current_component, new_component) { @@ -61,7 +61,7 @@ impl RenderContext<'_, W> { } pub async fn finish_query(&mut self, result: sqlx::any::AnyQueryResult) -> anyhow::Result<()> { - log::trace!("finish_query: {:?}", result); + log::debug!("-> Query finished with {:?}", result); Ok(()) } @@ -288,7 +288,7 @@ impl<'reg> SplitTemplateRenderer<'reg> { &mut self, writer: W, data: JsonValue, - ) -> Result<(), handlebars::RenderError> { + ) -> Result<(), RenderError> { if let Some(block_context) = self.block_context.take() { let mut render_context = handlebars::RenderContext::new(None); render_context.push_block(block_context); @@ -312,14 +312,7 @@ impl<'reg> SplitTemplateRenderer<'reg> { } fn render_end(&mut self, mut writer: W) -> Result<(), RenderError> { - if let Some(block_context) = self.block_context.take() { - let delayed = block_context - .get_local_var(DELAYED_CONTENTS) - .and_then(|v| v.as_str()) - .filter(|s| !s.is_empty()); - if let Some(contents) = delayed { - writer.write_all(contents.as_bytes())?; - } + if let Some(mut block_context) = self.block_context.take() { let mut render_context = handlebars::RenderContext::new(None); render_context.push_block(block_context); let ctx = Context::null(); @@ -389,7 +382,7 @@ fn without_top_block<'a, 'reg, 'rc, R>( r } -fn delayed_helper<'reg, 'rc>( +fn delay_helper<'reg, 'rc>( h: &handlebars::Helper<'reg, 'rc>, r: &'reg Handlebars<'reg>, ctx: &'rc Context, @@ -416,6 +409,31 @@ fn delayed_helper<'reg, 'rc>( Ok(()) } + +fn flush_delayed_helper<'reg, 'rc>( + h: &handlebars::Helper<'reg, 'rc>, + r: &'reg Handlebars<'reg>, + ctx: &'rc Context, + rc: &mut handlebars::RenderContext<'reg, 'rc>, + writer: &mut dyn handlebars::Output, +) -> handlebars::HelperResult { + if let Some(block_context) = rc.block_mut() { + let delayed = block_context + .get_local_var(DELAYED_CONTENTS) + .and_then(|v| v.as_str()) + .filter(|s| !s.is_empty()); + if let Some(contents) = delayed { + writer.write(contents)?; + block_context.set_local_var(DELAYED_CONTENTS, JsonValue::Null); + Ok(()) + } else { + without_top_block(rc, |rc| { + flush_delayed_helper(h, r, ctx, rc, writer) + }) + } + } else { Ok(()) } +} + impl AllTemplates { pub fn init() -> Self { let mut handlebars = Handlebars::new(); @@ -436,7 +454,8 @@ impl AllTemplates { _ => vec![] }); handlebars.register_helper("entries", Box::new(entries)); - handlebars.register_helper("delayed", Box::new(delayed_helper)); + handlebars.register_helper("delay", Box::new(delay_helper)); + handlebars.register_helper("flush_delayed", Box::new(flush_delayed_helper)); let split_templates = HashMap::new(); let mut this = Self { handlebars, From 6f4222346b2bddb33c7560a773e4a5bcf0ab16be Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sun, 21 Aug 2022 19:23:38 +0200 Subject: [PATCH 040/278] improve text component --- sqlsite/templates/text.handlebars | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sqlsite/templates/text.handlebars b/sqlsite/templates/text.handlebars index 20a55812..4297fff7 100644 --- a/sqlsite/templates/text.handlebars +++ b/sqlsite/templates/text.handlebars @@ -1,5 +1,5 @@ -

    {{title}}

    -

    +

    {{title}}

    +

    {{contents}} {{#each_row}} {{#if link}} From bdb30478f76c72efd982506bcf6f439b92f85e60 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sun, 21 Aug 2022 19:24:20 +0200 Subject: [PATCH 041/278] component=NULL in a row is now ignored instead of throwing an error --- src/render.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/render.rs b/src/render.rs index 3afe7857..5a24dba1 100644 --- a/src/render.rs +++ b/src/render.rs @@ -36,10 +36,10 @@ impl RenderContext<'_, W> { pub async fn handle_row(&mut self, row: sqlx::any::AnyRow) -> anyhow::Result<()> { let data = SerializeRow(row); log::debug!("<- Processing database row: {}", serde_json::to_string(&&data).unwrap_or_else(|e|e.to_string())); - let new_component = data.0.try_get::<&str, &str>("component"); + let new_component = data.0.try_get::, &str>("component").ok().flatten(); let current_component = self.current_component.as_ref().map(|c| c.name()); match (current_component, new_component) { - (None, Ok("head")) | (None, Err(_)) => { + (None, Some("head")) | (None, None) => { self.shell_renderer .render_start(&mut self.writer, json!(&&data))?; self.open_component_with_data(DEFAULT_COMPONENT, &&data)?; @@ -50,7 +50,7 @@ impl RenderContext<'_, W> { let component = new_component.unwrap_or(DEFAULT_COMPONENT); self.open_component_with_data(component, &&data)?; } - (Some(_current_component), Ok(new_component)) => { + (Some(_current_component), Some(new_component)) => { self.open_component_with_data(new_component, &&data)?; } (Some(_), _) => { From 16772f15e1373b3b9328a168b30ff677ff9a7ae2 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 22 Aug 2022 21:48:01 +0200 Subject: [PATCH 042/278] Improve documentation and base components --- documentation.sql | 102 ++++++++++++++++++++++++++--- sqlsite/templates/card.handlebars | 13 ++-- sqlsite/templates/form.handlebars | 4 +- sqlsite/templates/list.handlebars | 28 ++++++++ sqlsite/templates/shell.handlebars | 13 ++-- sqlsite/templates/text.handlebars | 11 +++- sqlsite/templates/title.handlebars | 8 +-- src/render.rs | 4 +- 8 files changed, 148 insertions(+), 35 deletions(-) create mode 100644 sqlsite/templates/list.handlebars diff --git a/documentation.sql b/documentation.sql index df6aa7f6..e411ba5d 100644 --- a/documentation.sql +++ b/documentation.sql @@ -1,23 +1,83 @@ +DROP TABLE IF EXISTS example_value; +DROP TABLE IF EXISTS parameter; DROP TABLE IF EXISTS component; + CREATE TABLE component( name TEXT PRIMARY KEY, - description TEXT + description TEXT, + icon TEXT -- icon name from tabler icon ); -DROP TABLE IF EXISTS parameter; CREATE TABLE parameter( - name TEXT PRIMARY KEY, - component TEXT REFERENCES component(name), + top_level BOOLEAN DEFAULT FALSE, + name TEXT, + component TEXT REFERENCES component(name) ON DELETE CASCADE, description TEXT, type TEXT, - optional BOOL DEFAULT FALSE + optional BOOLEAN DEFAULT FALSE, + PRIMARY KEY (component, top_level, name) ); -DROP TABLE IF EXISTS example_value; CREATE TABLE example_value( - component TEXT REFERENCES component(name), - parameter TEXT REFERENCES parameter(name), - value TEXT + component TEXT REFERENCES component(name) ON DELETE CASCADE, + parameter TEXT, + top_level BOOLEAN, + value TEXT, + FOREIGN KEY (component, top_level, parameter) REFERENCES parameter(component, top_level, name) ON DELETE CASCADE +); + +INSERT INTO component(name, icon, description) VALUES + ('list', 'list', 'A vertical list of items. Each item can be clickable and link to another page.'); +INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'list', * FROM (VALUES + -- top level + ('title', 'Text header at the top of the list.', 'TEXT', TRUE, TRUE), + -- item level + ('title', 'Name of the list item, displayed prominently.', 'TEXT', FALSE, FALSE), + ('description', 'A description of the list item, displayed as greyed-out text.', 'TEXT', FALSE, TRUE), + ('link', 'An URL to which the user should be taken when they click on the list item.', 'URL', FALSE, TRUE), + ('icon', 'An icon name (from tabler-icons.io) to display on the left side of the item.', 'TEXT', FALSE, TRUE), + ('color', 'The name of a color, to be displayed as a dot near the list item contents.', 'TEXT', FALSE, TRUE), + ('active', 'Whether this item in the list is considered "active". Active items are displayed more prominently.', 'BOOLEAN', FALSE, TRUE) +); + +INSERT INTO component(name, icon, description) VALUES + ('text', 'align-left', 'A paragraph of text. The entire component will render as a single paragraph, with each item being rendered as a span of text inside it, the styling of which can be customized using parameters.'); + +INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'text', * FROM (VALUES + -- top level + ('title', 'Text header before the paragraph.', 'TEXT', TRUE, TRUE), + ('center', 'Whether to center the title.', 'BOOLEAN', TRUE, TRUE), + ('width', 'How wide the paragraph should be, in characters.', 'INTEGER', TRUE, TRUE), + -- item level + ('contents', 'A span of text to display', 'TEXT', FALSE, FALSE), + ('link', 'An URL to which the user should be taken when they click on this span of text.', 'URL', FALSE, TRUE), + ('color', 'The name of a color for this span of text.', 'TEXT', FALSE, TRUE), + ('underline', 'Whether the span of text should be underlined.', 'BOOLEAN', FALSE, TRUE), + ('bold', 'Whether the span of text should be displayed as bold.', 'BOOLEAN', FALSE, TRUE), + ('code', 'Use a monospace font. Useful to display the text as code.', 'BOOLEAN', FALSE, TRUE), + ('italics', 'Whether the span of text should be displayed as italics.', 'BOOLEAN', FALSE, TRUE) +); + +INSERT INTO component(name, icon, description) VALUES + ('form', 'cursor-text', 'A series of input fields that can be filled in by the user. The form contents can be posted and handled by another SQLPage. The form contents are accessible from the target page as ($1->>''$.form.x'') for a form field named x.'); + +INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'form', * FROM (VALUES + -- top level + ('method', 'Set this to ''GET'' to pass the form contents directly as URL parameters, accessible from the target page as ($1->>''$.form.x'')', 'TEXT', TRUE, TRUE), + ('action', 'An optional link to a target page that will handle the results of the form. By default the target page is the current page.', 'TEXT', TRUE, TRUE), + ('title', 'A name to display at the top of the form.', 'TEXT', TRUE, TRUE), + ('validate', 'The text to display in the button at the bottom of the form that submits the values.', 'TEXT', TRUE, TRUE), + -- item level + ('type', 'The type of input to use: text for a simple text field, number for field that accepts only numbers, checkbox or radio for a button that is part of a group specified in the ''name'' parameter.', 'TEXT', FALSE, FALSE), + ('name', 'The name of the input field, that you can use in the target page to get the value the user entered for the field.', 'TEXT', FALSE, FALSE), + ('label', 'A friendly name for the text field to show to the user.', 'TEXT', FALSE, TRUE), + ('placeholder', 'A placeholder text that will be shown in the field when is is empty.', 'TEXT', FALSE, TRUE), + ('value', 'A default value that will already be present in the field when the user loads the page.', 'TEXT', FALSE, TRUE), + ('required', 'Set this to true to prevent the form contents from being sent if this field is left empty by the user.', 'BOOL', FALSE, TRUE), + ('min', 'The minimum value to accept for an input of type number', 'NUMBER', FALSE, TRUE), + ('max', 'The minimum value to accept for an input of type number', 'NUMBER', FALSE, TRUE), + ('step', 'The increment of values in an input of type number. Set to 1 to allow only integers.', 'NUMBER', FALSE, TRUE), + ('description', 'A helper text to display near the input field.', 'TEXT', FALSE, TRUE) ); select @@ -38,3 +98,27 @@ select 'parameters' as contents, true as bold; select '.' as contents; select 'This page documents all the components that you can use in SQLPage and their parameters. ' || 'Use this as a reference when building your SQL application.' as contents; + +select 'list' as component, 'components' as title; +select + name as title, + description, + icon, + '?component='||name||'#component' as link, + $1->>'$.query.component' = name as active +from component; + +select 'text' as component, + 'The "'||($1->>'$.query.component')||'" component' as title, + 'component' as id; +select description as contents from component where name = $1->>'$.query.component'; + +select 'title' as component, 3 as level, 'Parameters' as contents where $1->>'$.query.component' IS NOT NULL; +select 'card' as component, 3 AS columns where $1->>'$.query.component' IS NOT NULL; +select + name || (CASE WHEN top_level THEN ' (top-level)' ELSE '' END) as title, + (CASE WHEN optional THEN '' ELSE 'REQUIRED. ' END) || description as body, + type as footer, + CASE WHEN top_level THEN 'lime' ELSE 'azure' END || CASE WHEN optional THEN '-lt' ELSE '' END as color +from parameter where component = $1->>'$.query.component' +ORDER BY (NOT top_level), optional, name; diff --git a/sqlsite/templates/card.handlebars b/sqlsite/templates/card.handlebars index f4a80088..fe5323f9 100644 --- a/sqlsite/templates/card.handlebars +++ b/sqlsite/templates/card.handlebars @@ -2,18 +2,21 @@ row row-cols-1 row-cols-sm-2 row-cols-md-{{#if columns}}{{columns}}{{else}}3{{/if}} - gx-2 gy-2"> + gx-2 gy-2 + mb-2"> {{#each_row}}

    - <{{#if link}}a href="{{link}}" {{else}}div{{/if}} class="card"> - {{#if status}} -
    + <{{#if link}}a href="{{link}}" {{else}}div{{/if}} class="card h-100"> + {{#if color}} +
    {{/if}}

    {{title}}

    {{body}}

    - + {{#if footer}} + + {{/if}}
    {{/each_row}} diff --git a/sqlsite/templates/form.handlebars b/sqlsite/templates/form.handlebars index a7a3da29..f5f519d2 100644 --- a/sqlsite/templates/form.handlebars +++ b/sqlsite/templates/form.handlebars @@ -1,4 +1,4 @@ -
    +
    {{#if title}}

    {{title}}

    @@ -27,7 +27,7 @@ {{~#if required}} *{{/if}} + {{#if title}} +
    +

    {{title}}

    +
    + {{/if}} +
    + {{#each_row}} + <{{#if link}}a href="{{link}}" {{else}}div{{/if}} + class="list-group-item list-group-item-action {{#if active}}active{{/if}}"> +
    + {{#if color}} +
    + {{/if}} + {{#if icon}} +
    + +
    + {{/if}} +
    + {{title}} +
    {{description}}
    +
    +
    + + {{/each_row}} +
    +
    \ No newline at end of file diff --git a/sqlsite/templates/shell.handlebars b/sqlsite/templates/shell.handlebars index 4a006c2b..59c19eaf 100644 --- a/sqlsite/templates/shell.handlebars +++ b/sqlsite/templates/shell.handlebars @@ -2,21 +2,20 @@ - {{title}} - - + - diff --git a/sqlsite/templates/text.handlebars b/sqlsite/templates/text.handlebars index 4297fff7..9d11597e 100644 --- a/sqlsite/templates/text.handlebars +++ b/sqlsite/templates/text.handlebars @@ -1,16 +1,21 @@ -

    {{title}}

    -

    +{{#if title}} +

    {{title}}

    +{{/if}} +

    {{contents}} {{#each_row}} {{#if link}} {{#delay}}{{/delay}} {{/if}} + {{#if code}} + {{#delay}}{{/delay}} + {{/if}} {{contents}} - {{flush_delayed}} + {{flush_delayed}} {{/each_row}}

    \ No newline at end of file diff --git a/sqlsite/templates/title.handlebars b/sqlsite/templates/title.handlebars index 76af71b0..c409cb5f 100644 --- a/sqlsite/templates/title.handlebars +++ b/sqlsite/templates/title.handlebars @@ -1,7 +1 @@ -

    - {{~#each (entries this)~}} - {{#unless (eq key "component")}} - {{~value~}} - {{/unless}} - {{~/each~}} -

    \ No newline at end of file +{{contents}} \ No newline at end of file diff --git a/src/render.rs b/src/render.rs index 5a24dba1..6d61f6d5 100644 --- a/src/render.rs +++ b/src/render.rs @@ -311,8 +311,8 @@ impl<'reg> SplitTemplateRenderer<'reg> { Ok(()) } - fn render_end(&mut self, mut writer: W) -> Result<(), RenderError> { - if let Some(mut block_context) = self.block_context.take() { + fn render_end(&mut self, writer: W) -> Result<(), RenderError> { + if let Some(block_context) = self.block_context.take() { let mut render_context = handlebars::RenderContext::new(None); render_context.push_block(block_context); let ctx = Context::null(); From 893411401092ec2918afe8bad6d9bdc9cba34211 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 22 Aug 2022 22:27:42 +0200 Subject: [PATCH 043/278] move row to json conversion logic out of the renderer --- src/http.rs | 54 ++++++++++++++++++++++++++++++++++++++-- src/render.rs | 68 +++++++++------------------------------------------ 2 files changed, 63 insertions(+), 59 deletions(-) diff --git a/src/http.rs b/src/http.rs index 228b2003..db1bc486 100644 --- a/src/http.rs +++ b/src/http.rs @@ -12,10 +12,13 @@ use anyhow::{bail, Context}; use futures_util::StreamExt; use futures_util::TryFutureExt; use sqlx::any::AnyArguments; -use sqlx::Arguments; +use sqlx::{Arguments, Column, Database, Decode, Row}; use std::io::Write; use std::mem; use std::path::Component; +use serde::{Serialize, Serializer}; +use serde::ser::SerializeMap; +use serde_json::json; use tokio::sync::mpsc; /// If the sending queue exceeds this number of outgoing messages, an error will be thrown @@ -98,7 +101,7 @@ async fn stream_response( while let Some(item) = stream.next().await { let render_result = match item { Ok(sqlx::Either::Left(result)) => renderer.finish_query(result).await, - Ok(sqlx::Either::Right(row)) => renderer.handle_row(row).await, + Ok(sqlx::Either::Right(row)) => renderer.handle_row(json!(SerializeRow(row))).await, Err(e) => renderer.handle_error(&e), }; if let Err(e) = render_result { @@ -118,6 +121,53 @@ async fn stream_response( Ok(()) } + +struct SerializeRow(R); + +impl<'r, R: Row> Serialize for &'r SerializeRow + where + usize: sqlx::ColumnIndex, + &'r str: sqlx::Decode<'r, ::Database>, + f64: sqlx::Decode<'r, ::Database>, + i64: sqlx::Decode<'r, ::Database>, + bool: sqlx::Decode<'r, ::Database>, +{ + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + use sqlx::{TypeInfo, ValueRef}; + let columns = self.0.columns(); + let mut map = serializer.serialize_map(Some(columns.len()))?; + for col in columns { + let key = col.name(); + match self.0.try_get_raw(col.ordinal()) { + Ok(raw_value) if !raw_value.is_null() => match raw_value.type_info().name() { + "REAL" | "FLOAT" | "NUMERIC" | "FLOAT4" | "FLOAT8" | "DOUBLE" => { + map_serialize::<_, _, f64>(&mut map, key, raw_value) + } + "INT" | "INTEGER" | "INT8" | "INT2" | "INT4" | "TINYINT" | "SMALLINT" + | "BIGINT" => map_serialize::<_, _, i64>(&mut map, key, raw_value), + "BOOL" | "BOOLEAN" => map_serialize::<_, _, bool>(&mut map, key, raw_value), + // Deserialize as a string by default + _ => map_serialize::<_, _, &str>(&mut map, key, raw_value), + }, + _ => map.serialize_entry(key, &()), // Serialize null + }? + } + map.end() + } +} + +fn map_serialize<'r, M: SerializeMap, DB: Database, T: Decode<'r, DB> + Serialize>( + map: &mut M, + key: &str, + raw_value: >::ValueRef, +) -> Result<(), M::Error> { + let val = T::decode(raw_value).map_err(serde::ser::Error::custom)?; + map.serialize_entry(key, &val) +} + async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> String { let headers: serde_json::Map = req .headers() diff --git a/src/render.rs b/src/render.rs index 6d61f6d5..4d67f64f 100644 --- a/src/render.rs +++ b/src/render.rs @@ -3,10 +3,8 @@ use handlebars::{ handlebars_helper, template::TemplateElement, BlockContext, Context, Handlebars, JsonValue, RenderError, Renderable, Template, TemplateError, }; -use serde::ser::SerializeMap; -use serde::{Serialize, Serializer}; +use serde::Serialize; use serde_json::json; -use sqlx::{Column, Database, Decode, Row}; use std::collections::HashMap; use std::ffi::OsStr; use std::fs::DirEntry; @@ -33,28 +31,29 @@ impl RenderContext<'_, W> { } } - pub async fn handle_row(&mut self, row: sqlx::any::AnyRow) -> anyhow::Result<()> { - let data = SerializeRow(row); - log::debug!("<- Processing database row: {}", serde_json::to_string(&&data).unwrap_or_else(|e|e.to_string())); - let new_component = data.0.try_get::, &str>("component").ok().flatten(); + pub async fn handle_row(&mut self, data: JsonValue) -> anyhow::Result<()> { + log::debug!("<- Processing database row: {}", serde_json::to_string(&data).unwrap_or_else(|e|e.to_string())); + let new_component = data.as_object() + .and_then(|o| o.get("component")) + .and_then(|c| c.as_str()); let current_component = self.current_component.as_ref().map(|c| c.name()); match (current_component, new_component) { (None, Some("head")) | (None, None) => { self.shell_renderer - .render_start(&mut self.writer, json!(&&data))?; - self.open_component_with_data(DEFAULT_COMPONENT, &&data)?; + .render_start(&mut self.writer, json!(&data))?; + self.open_component_with_data(DEFAULT_COMPONENT, &data)?; } (None, new_component) => { self.shell_renderer .render_start(&mut self.writer, json!(null))?; let component = new_component.unwrap_or(DEFAULT_COMPONENT); - self.open_component_with_data(component, &&data)?; + self.open_component_with_data(component, &data)?; } (Some(_current_component), Some(new_component)) => { - self.open_component_with_data(new_component, &&data)?; + self.open_component_with_data(new_component, &data)?; } (Some(_), _) => { - self.render_current_template_with_data(&&data)?; + self.render_current_template_with_data(&data)?; } } Ok(()) @@ -176,51 +175,6 @@ impl RenderContext<'_, W> { } } -struct SerializeRow(R); - -impl<'r, R: Row> Serialize for &'r SerializeRow - where - usize: sqlx::ColumnIndex, - &'r str: sqlx::Decode<'r, ::Database>, - f64: sqlx::Decode<'r, ::Database>, - i64: sqlx::Decode<'r, ::Database>, - bool: sqlx::Decode<'r, ::Database>, -{ - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - use sqlx::{TypeInfo, ValueRef}; - let columns = self.0.columns(); - let mut map = serializer.serialize_map(Some(columns.len()))?; - for col in columns { - let key = col.name(); - match self.0.try_get_raw(col.ordinal()) { - Ok(raw_value) if !raw_value.is_null() => match raw_value.type_info().name() { - "REAL" | "FLOAT" | "NUMERIC" | "FLOAT4" | "FLOAT8" | "DOUBLE" => { - map_serialize::<_, _, f64>(&mut map, key, raw_value) - } - "INT" | "INTEGER" | "INT8" | "INT2" | "INT4" | "TINYINT" | "SMALLINT" - | "BIGINT" => map_serialize::<_, _, i64>(&mut map, key, raw_value), - "BOOL" | "BOOLEAN" => map_serialize::<_, _, bool>(&mut map, key, raw_value), - // Deserialize as a string by default - _ => map_serialize::<_, _, &str>(&mut map, key, raw_value), - }, - _ => map.serialize_entry(key, &()), // Serialize null - }? - } - map.end() - } -} - -fn map_serialize<'r, M: SerializeMap, DB: Database, T: Decode<'r, DB> + Serialize>( - map: &mut M, - key: &str, - raw_value: >::ValueRef, -) -> Result<(), M::Error> { - let val = T::decode(raw_value).map_err(serde::ser::Error::custom)?; - map.serialize_entry(key, &val) -} struct SplitTemplate { before_list: Template, From 1b306c20b534d3ea895f1bd778363a943d9abf73 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Tue, 23 Aug 2022 01:06:53 +0200 Subject: [PATCH 044/278] add a new 'dynamic' component and add examples to the documentation --- documentation.sql | 55 ++++++++++++++++++++++++---- sqlsite/migrations/0_base_schema.sql | 18 --------- sqlsite/templates/code.handlebars | 7 ++++ src/http.rs | 2 +- src/render.rs | 38 ++++++++++++++++++- 5 files changed, 91 insertions(+), 29 deletions(-) create mode 100644 sqlsite/templates/code.handlebars diff --git a/documentation.sql b/documentation.sql index e411ba5d..93bab83e 100644 --- a/documentation.sql +++ b/documentation.sql @@ -1,10 +1,10 @@ -DROP TABLE IF EXISTS example_value; +DROP TABLE IF EXISTS example; DROP TABLE IF EXISTS parameter; DROP TABLE IF EXISTS component; CREATE TABLE component( name TEXT PRIMARY KEY, - description TEXT, + description TEXT NOT NULL, icon TEXT -- icon name from tabler icon ); @@ -12,18 +12,17 @@ CREATE TABLE parameter( top_level BOOLEAN DEFAULT FALSE, name TEXT, component TEXT REFERENCES component(name) ON DELETE CASCADE, - description TEXT, + description TEXT NOT NULL, type TEXT, optional BOOLEAN DEFAULT FALSE, PRIMARY KEY (component, top_level, name) ); -CREATE TABLE example_value( +CREATE TABLE example( component TEXT REFERENCES component(name) ON DELETE CASCADE, - parameter TEXT, - top_level BOOLEAN, - value TEXT, - FOREIGN KEY (component, top_level, parameter) REFERENCES parameter(component, top_level, name) ON DELETE CASCADE + description TEXT, + properties TEXT, + FOREIGN KEY (component) REFERENCES component(name) ON DELETE CASCADE ); INSERT INTO component(name, icon, description) VALUES @@ -58,6 +57,9 @@ INSERT INTO parameter(component, name, description, type, top_level, optional) S ('italics', 'Whether the span of text should be displayed as italics.', 'BOOLEAN', FALSE, TRUE) ); +INSERT INTO example(component, description, properties) VALUES + ('text', 'Rendering a simple text paragraph.', json('[{"component":"text"}, {"contents":"Blah", "bold":true}]')); + INSERT INTO component(name, icon, description) VALUES ('form', 'cursor-text', 'A series of input fields that can be filled in by the user. The form contents can be posted and handled by another SQLPage. The form contents are accessible from the target page as ($1->>''$.form.x'') for a form field named x.'); @@ -80,6 +82,17 @@ INSERT INTO parameter(component, name, description, type, top_level, optional) S ('description', 'A helper text to display near the input field.', 'TEXT', FALSE, TRUE) ); +INSERT INTO component(name, icon, description) VALUES + ('dynamic', 'repeat', 'A special component that can be used to render other components, the number and properties of which are not known in advance.'); + +INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'dynamic', * FROM (VALUES + -- top level + ('properties', 'A json object or array that contains the names and properties of other components', 'JSON', TRUE, TRUE) +); + +INSERT INTO example(component, description, properties) VALUES + ('dynamic', 'Rendering a text paragraph dynamically.', json('[{"component":"dynamic", "properties": "[{\"component\":\"text\"}, {\"contents\":\"Blah\", \"bold\":true}]"}]')); + select 'SQLPage documentation' as title, '/' as link, @@ -122,3 +135,29 @@ select CASE WHEN top_level THEN 'lime' ELSE 'azure' END || CASE WHEN optional THEN '-lt' ELSE '' END as color from parameter where component = $1->>'$.query.component' ORDER BY (NOT top_level), optional, name; + +select + 'dynamic' as component, + json_array( + json_object('component', 'code'), + json_object( + 'title', 'Example', + 'description', description, + 'contents', ( + select + group_concat( + 'SELECT ' || x'0A' || + ( + select group_concat( + ' ' || quote(value) || ' as ' || key, ',' || x'0A' + ) from json_each(top.value) + ) || ';', + x'0A' + ) + from json_each(properties) top + ) + ), + json_object('component', 'title', 'level', 3, 'contents', 'Result'), + json_object('component', 'dynamic', 'properties', properties) + ) as properties +from example where component = $1->>'$.query.component'; \ No newline at end of file diff --git a/sqlsite/migrations/0_base_schema.sql b/sqlsite/migrations/0_base_schema.sql index f29761b0..e69de29b 100644 --- a/sqlsite/migrations/0_base_schema.sql +++ b/sqlsite/migrations/0_base_schema.sql @@ -1,18 +0,0 @@ -CREATE TABLE component( - name TEXT PRIMARY KEY, - description TEXT -); - -CREATE TABLE parameter( - name TEXT PRIMARY KEY, - component TEXT REFERENCES component(name), - description TEXT, - type TEXT, - optional BOOL DEFAULT FALSE -); - -CREATE TABLE example_value( - component TEXT REFERENCES component(name), - parameter TEXT REFERENCES parameter(name), - value TEXT -); \ No newline at end of file diff --git a/sqlsite/templates/code.handlebars b/sqlsite/templates/code.handlebars new file mode 100644 index 00000000..2b95d8e4 --- /dev/null +++ b/sqlsite/templates/code.handlebars @@ -0,0 +1,7 @@ +
    + {{#each_row}} +

    {{title}}

    +

    {{description}}

    +
    {{contents}}
    + {{/each_row}} +
    diff --git a/src/http.rs b/src/http.rs index db1bc486..f6acecad 100644 --- a/src/http.rs +++ b/src/http.rs @@ -101,7 +101,7 @@ async fn stream_response( while let Some(item) = stream.next().await { let render_result = match item { Ok(sqlx::Either::Left(result)) => renderer.finish_query(result).await, - Ok(sqlx::Either::Right(row)) => renderer.handle_row(json!(SerializeRow(row))).await, + Ok(sqlx::Either::Right(row)) => renderer.handle_row(&json!(SerializeRow(row))), Err(e) => renderer.handle_error(&e), }; if let Err(e) = render_result { diff --git a/src/render.rs b/src/render.rs index 4d67f64f..27dcd58a 100644 --- a/src/render.rs +++ b/src/render.rs @@ -1,23 +1,27 @@ +use std::borrow:: Cow; use crate::{AppState, TEMPLATES_DIR}; use handlebars::{ handlebars_helper, template::TemplateElement, BlockContext, Context, Handlebars, JsonValue, RenderError, Renderable, Template, TemplateError, }; use serde::Serialize; -use serde_json::json; +use serde_json::{json, Value}; use std::collections::HashMap; use std::ffi::OsStr; use std::fs::DirEntry; +use anyhow::{Context as AnyhowContext}; pub struct RenderContext<'a, W: std::io::Write> { app_state: &'a AppState, pub writer: W, current_component: Option>, shell_renderer: SplitTemplateRenderer<'a>, + recursion_depth: usize, } const DEFAULT_COMPONENT: &str = "default"; const DELAYED_CONTENTS: &str = "_delayed_contents"; +const MAX_RECURSION_DEPTH: usize = 256; impl RenderContext<'_, W> { pub fn new(app_state: &AppState, writer: W) -> RenderContext { @@ -28,10 +32,11 @@ impl RenderContext<'_, W> { writer, current_component: None, shell_renderer, + recursion_depth: 0, } } - pub async fn handle_row(&mut self, data: JsonValue) -> anyhow::Result<()> { + pub fn handle_row(&mut self, data: &JsonValue) -> anyhow::Result<()> { log::debug!("<- Processing database row: {}", serde_json::to_string(&data).unwrap_or_else(|e|e.to_string())); let new_component = data.as_object() .and_then(|o| o.get("component")) @@ -49,6 +54,9 @@ impl RenderContext<'_, W> { let component = new_component.unwrap_or(DEFAULT_COMPONENT); self.open_component_with_data(component, &data)?; } + (Some(_current_component), Some("dynamic")) => { + self.render_dynamic(data)?; + } (Some(_current_component), Some(new_component)) => { self.open_component_with_data(new_component, &data)?; } @@ -59,6 +67,32 @@ impl RenderContext<'_, W> { Ok(()) } + fn render_dynamic(&mut self, data: &Value) -> anyhow::Result<()> { + anyhow::ensure!(self.recursion_depth <= MAX_RECURSION_DEPTH, "Maximum recursion depth exceeded in the dynamic component."); + let properties: Vec> = data.get("properties") + .and_then(|props| { + match props { + Value::String(s) => { + match serde_json::from_str::(s).ok()? { + Value::Array(values) => Some(values.into_iter().map(Cow::Owned).collect()), + obj @ Value::Object(_) => Some(vec![Cow::Owned(obj)]), + _ => None + } + } + obj @ Value::Object(_) => Some(vec![Cow::Borrowed(obj)]), + _ => None, + } + }) + .context("The dynamic component requires a parameter called 'parameters' that is a json ")?; + for p in properties { + self.recursion_depth += 1; + let res = self.handle_row(&p); + self.recursion_depth -= 1; + res?; + } + Ok(()) + } + pub async fn finish_query(&mut self, result: sqlx::any::AnyQueryResult) -> anyhow::Result<()> { log::debug!("-> Query finished with {:?}", result); Ok(()) From 2654136efaa4515517f84ec82b76a7a69a76eb5f Mon Sep 17 00:00:00 2001 From: lovasoa Date: Wed, 24 Aug 2022 23:22:44 +0200 Subject: [PATCH 045/278] Improve documentation further --- documentation.sql | 57 ++++++++++++++++++++++++++++-- sqlsite/templates/chart.handlebars | 1 + sqlsite/templates/chart.js | 11 ++++-- sqlsite/templates/error.handlebars | 5 +++ sqlsite/templates/text.handlebars | 15 ++++---- 5 files changed, 77 insertions(+), 12 deletions(-) diff --git a/documentation.sql b/documentation.sql index 93bab83e..e534e846 100644 --- a/documentation.sql +++ b/documentation.sql @@ -39,6 +39,13 @@ INSERT INTO parameter(component, name, description, type, top_level, optional) S ('active', 'Whether this item in the list is considered "active". Active items are displayed more prominently.', 'BOOLEAN', FALSE, TRUE) ); +INSERT INTO example(component, description, properties) VALUES + ('list', 'The most basic list', json('[{"component":"list"},{"title":"A"},{"title":"B"},{"title":"C"}]')), + ('list', 'A beautiful list with bells and whistles.', + json('[{"component":"list", "title":"Popular websites"}, '|| + '{"title":"Google", "link":"https://google.com", "description": "A search engine", "color": "red", "icon":"brand-google", "active": true}, '|| + '{"title":"Wikipedia", "link":"https://wikipedia.org", "description": "An encyclopedia", "color": "blue", "icon":"world"}]')); + INSERT INTO component(name, icon, description) VALUES ('text', 'align-left', 'A paragraph of text. The entire component will render as a single paragraph, with each item being rendered as a span of text inside it, the styling of which can be customized using parameters.'); @@ -47,6 +54,7 @@ INSERT INTO parameter(component, name, description, type, top_level, optional) S ('title', 'Text header before the paragraph.', 'TEXT', TRUE, TRUE), ('center', 'Whether to center the title.', 'BOOLEAN', TRUE, TRUE), ('width', 'How wide the paragraph should be, in characters.', 'INTEGER', TRUE, TRUE), + ('html', 'Raw html code to include on the page. Don''t use that if you are not sure what you are doing, it may have security implications.', 'TEXT', TRUE, TRUE), -- item level ('contents', 'A span of text to display', 'TEXT', FALSE, FALSE), ('link', 'An URL to which the user should be taken when they click on this span of text.', 'URL', FALSE, TRUE), @@ -58,7 +66,14 @@ INSERT INTO parameter(component, name, description, type, top_level, optional) S ); INSERT INTO example(component, description, properties) VALUES - ('text', 'Rendering a simple text paragraph.', json('[{"component":"text"}, {"contents":"Blah", "bold":true}]')); + ('text', 'Rendering a simple text paragraph.', json('[{"component":"text", "contents":"Hello, world ! <3"}]')), + ('text', 'Rendering a paragraph with links and styling.', + json('[{"component":"text", "title":"About SQL"}, '|| + '{"contents":"SQL", "bold":true, "italics": true}, '|| + '{"contents":" is a domain-specific language used in programming and designed for managing data held in a "},'|| + '{"contents": "relational database management system", "link": "https://en.wikipedia.org/wiki/Relational_database"},'|| + '{"contents": ". It is particularly useful in handling structured data."}]') +); INSERT INTO component(name, icon, description) VALUES ('form', 'cursor-text', 'A series of input fields that can be filled in by the user. The form contents can be posted and handled by another SQLPage. The form contents are accessible from the target page as ($1->>''$.form.x'') for a form field named x.'); @@ -81,6 +96,44 @@ INSERT INTO parameter(component, name, description, type, top_level, optional) S ('step', 'The increment of values in an input of type number. Set to 1 to allow only integers.', 'NUMBER', FALSE, TRUE), ('description', 'A helper text to display near the input field.', 'TEXT', FALSE, TRUE) ); +INSERT INTO example(component, description, properties) VALUES + ('form', 'A user registration form.', json('[{"component":"form", "title": "User", "validate": "Create new user"}, '|| + '{"name": "First name", "placeholder": "John"}, '|| + '{"name": "Last name", "required": true, "description": "We need your last name for legal purposes."},'|| + '{"name": "Birth date", "type": "date", "max": "2010-01-01"}]')); + +INSERT INTO component(name, icon, description) VALUES + ('chart', 'timeline', 'A component that plots data. Line, area, bar, and pie charts are all supported. Each item in the component is a data point in the graph.'); + +INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'chart', * FROM (VALUES + -- top level + ('title', 'The name of the chart.', 'TEXT', TRUE, TRUE), + ('type', 'The type of chart: "line", "area", "bar", "column", or "pie".', 'TEXT', TRUE, FALSE), + ('time', 'Whether the x-axis represents time. If set to true, the values will be formatted as dates for the user.', 'BOOLEAN', TRUE, TRUE), + ('ymin', 'The minimal value for the y-axis.', 'NUMBER', TRUE, TRUE), + ('ymax', 'The maximum value for the y-axis.', 'NUMBER', TRUE, TRUE), + ('labels', 'Whether to show the data labels on the chart or not.', 'BOOLEAN', TRUE, TRUE), + ('stacked', 'Whether to cumulate values from different series.', 'BOOLEAN', TRUE, TRUE), + ('logarithmic', 'Display the y-axis in logarithmic scale..', 'BOOLEAN', TRUE, TRUE), + -- item level + ('x', 'The value of the point on the horizontal axis', 'NUMBER', FALSE, FALSE), + ('y', 'The value of the point on the vertical axis', 'NUMBER', FALSE, FALSE), + ('label', 'An alias for parameter "x"', 'NUMBER', FALSE, TRUE), + ('value', 'An alias for parameter "y"', 'NUMBER', FALSE, TRUE), + ('series', 'If multiple series are represented and share the same y-axis, this parameter can be used to distinguish between them.', 'TEXT', FALSE, TRUE) +); +INSERT INTO example(component, description, properties) VALUES + ('chart', 'A pie chart.', json('[{"component":"chart", "title": "Answers", "type": "pie", "labels": true}, '|| + '{"label": "Yes", "value": 65}, '|| + '{"label": "No", "value": 35}]')), + ('chart', 'An area chart', json('[{"component":"chart", "title": "Syracuse", "type": "area"}, '|| + '{"x":0,"y":15},{"x":1,"y":46},{"x":2,"y":23},{"x":3,"y":70},{"x":4,"y":35},{"x":5,"y":106}]')), + ('chart', 'A bar chart with multiple series.', json('[{"component":"chart", "title": "Expenses", "type": "bar", "stacked": true}, '|| + '{"series": "Marketing", "x": 2021, "value": 35}, '|| + '{"series": "Marketing", "x": 2022, "value": 15}, '|| + '{"series": "Human resources", "x": 2021, "value": 30}, '|| + '{"series": "Human resources", "x": 2022, "value": 55}]')); + INSERT INTO component(name, icon, description) VALUES ('dynamic', 'repeat', 'A special component that can be used to render other components, the number and properties of which are not known in advance.'); @@ -141,7 +194,7 @@ select json_array( json_object('component', 'code'), json_object( - 'title', 'Example', + 'title', 'Example ' || (row_number() OVER ()), 'description', description, 'contents', ( select diff --git a/sqlsite/templates/chart.handlebars b/sqlsite/templates/chart.handlebars index 50dc36b5..8fa30908 100644 --- a/sqlsite/templates/chart.handlebars +++ b/sqlsite/templates/chart.handlebars @@ -13,6 +13,7 @@ { "type": {{stringify type}}, "time": {{stringify time}}, + "labels": {{stringify labels}}, "marker": {{stringify marker}}, "xtitle": {{stringify xtitle}}, "ytitle": {{stringify ytitle}}, diff --git a/sqlsite/templates/chart.js b/sqlsite/templates/chart.js index d94e2a73..57dd998a 100644 --- a/sqlsite/templates/chart.js +++ b/sqlsite/templates/chart.js @@ -44,8 +44,12 @@ for (const c of document.getElementsByClassName("chart")) { const tickAmount = data.xticks || Math.min(30, Math.max(...series.map(s => s.data.length - 1))); + let labels; const categories = typeof data.points[0][1] === "string"; - if (categories) series = align_categories(series); + if (data.type === "pie") { + labels = data.points.map(([name, x, y]) => x || name); + series = data.points.map(([name, x, y]) => y); + } else if (categories) series = align_categories(series); const options = { chart: { @@ -68,7 +72,7 @@ for (const c of document.getElementsByClassName("chart")) { palette: 'palette4', }, dataLabels: { - enabled: false, + enabled: !!data.labels, }, fill: { opacity: .7, @@ -111,8 +115,9 @@ for (const c of document.getElementsByClassName("chart")) { enabled: true, } }, - series + series, }; + if (labels) options.labels = labels; c.innerHTML = ""; const chart = new ApexCharts(c, options); chart.render(); diff --git a/sqlsite/templates/error.handlebars b/sqlsite/templates/error.handlebars index b0f2eb21..3d8792e5 100644 --- a/sqlsite/templates/error.handlebars +++ b/sqlsite/templates/error.handlebars @@ -7,6 +7,11 @@ You should contact the site's administrator.

    {{#each_row}} +

    + {{#if query_number}} + Error in query number {{query_number}}: + {{/if}} +

    {{description}}
    {{#if backtrace}}
    diff --git a/sqlsite/templates/text.handlebars b/sqlsite/templates/text.handlebars index 9d11597e..cac8ca20 100644 --- a/sqlsite/templates/text.handlebars +++ b/sqlsite/templates/text.handlebars @@ -1,21 +1,22 @@ +{{{~html~}}} {{#if title}}

    {{title}}

    {{/if}}

    {{contents}} - {{#each_row}} - {{#if link}} + {{~#each_row~}} + {{~#if link~}} {{#delay}}{{/delay}} - {{/if}} - {{#if code}} + {{~/if~}} + {{~#if code~}} {{#delay}}{{/delay}} - {{/if}} + {{~/if~}} {{contents}} - {{flush_delayed}} - {{/each_row}} + {{~flush_delayed~}} + {{~/each_row~}}

    \ No newline at end of file From 89138bc4974b133cb5da9510cc17b5dccd9d5f8d Mon Sep 17 00:00:00 2001 From: lovasoa Date: Wed, 24 Aug 2022 23:24:31 +0200 Subject: [PATCH 046/278] Add current query number to error messages --- src/render.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/render.rs b/src/render.rs index 27dcd58a..ca5a8e61 100644 --- a/src/render.rs +++ b/src/render.rs @@ -17,6 +17,7 @@ pub struct RenderContext<'a, W: std::io::Write> { current_component: Option>, shell_renderer: SplitTemplateRenderer<'a>, recursion_depth: usize, + current_statement: usize, } const DEFAULT_COMPONENT: &str = "default"; @@ -33,6 +34,7 @@ impl RenderContext<'_, W> { current_component: None, shell_renderer, recursion_depth: 0, + current_statement: 1, } } @@ -94,7 +96,8 @@ impl RenderContext<'_, W> { } pub async fn finish_query(&mut self, result: sqlx::any::AnyQueryResult) -> anyhow::Result<()> { - log::debug!("-> Query finished with {:?}", result); + log::debug!("-> Query {} finished with {:?}", self.current_statement, result); + self.current_statement += 1; Ok(()) } @@ -113,6 +116,7 @@ impl RenderContext<'_, W> { source = s.source() } self.render_current_template_with_data(&json!({ + "query_number": self.current_statement, "description": description, "backtrace": backtrace }))?; From 764350490db5eab7d96d51bf3c10a458b15e5764 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Thu, 25 Aug 2022 00:25:55 +0200 Subject: [PATCH 047/278] document and add features to the card component --- documentation.sql | 25 ++++++++++++++++++++++++- sqlsite/templates/card.handlebars | 12 ++++++++++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/documentation.sql b/documentation.sql index e534e846..e2f30190 100644 --- a/documentation.sql +++ b/documentation.sql @@ -46,6 +46,29 @@ INSERT INTO example(component, description, properties) VALUES '{"title":"Google", "link":"https://google.com", "description": "A search engine", "color": "red", "icon":"brand-google", "active": true}, '|| '{"title":"Wikipedia", "link":"https://wikipedia.org", "description": "An encyclopedia", "color": "blue", "icon":"world"}]')); +INSERT INTO component(name, icon, description) VALUES + ('card', 'credit-card', 'A grid where each element is a small card that displays a piece of data.'); +INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'card', * FROM (VALUES + -- top level + ('title', 'Text header at the top of the list of cards.', 'TEXT', TRUE, TRUE), + ('columns', 'The number of columns in the grid of cards. This is just a hint, the grid will adjust dynamically to the user''s screen size, rendering fewer columns if needed to fit the contents.', 'INTEGER', TRUE, TRUE), + -- item level + ('title', 'Name of the card, displayed at the top.', 'TEXT', FALSE, FALSE), + ('description', 'The body of the card.', 'TEXT', FALSE, TRUE), + ('footer', 'Muted text to display at the bottom of the card.', 'TEXT', FALSE, TRUE), + ('link', 'An URL to which the user should be taken when they click on the card.', 'URL', FALSE, TRUE), + ('icon', 'An icon name (from tabler-icons.io) to display on the left side of the card.', 'TEXT', FALSE, TRUE), + ('color', 'The name of a color, to be displayed on the left of the card to highlight it.', 'TEXT', FALSE, TRUE), + ('active', 'Whether this item in the grid is considered "active". Active items are displayed more prominently.', 'BOOLEAN', FALSE, TRUE) +); + +INSERT INTO example(component, description, properties) VALUES + ('card', 'The most basic card', json('[{"component":"card"},{"title":"A"},{"title":"B"},{"title":"C"}]')), + ('card', 'A beautiful card grid with bells and whistles.', + json('[{"component":"card", "title":"Popular websites", "columns": 2}, '|| + '{"title":"Google", "link":"https://google.com", "description": "A search engine", "color": "red", "icon":"brand-google", "footer": "Owned by Alphabet Inc."}, '|| + '{"title":"Wikipedia", "link":"https://wikipedia.org", "description": "An encyclopedia", "color": "blue", "icon":"world", "active": true, "footer": "Owned by the Wikimedia Foundation"}]')); + INSERT INTO component(name, icon, description) VALUES ('text', 'align-left', 'A paragraph of text. The entire component will render as a single paragraph, with each item being rendered as a span of text inside it, the styling of which can be customized using parameters.'); @@ -183,7 +206,7 @@ select 'title' as component, 3 as level, 'Parameters' as contents where $1->>'$. select 'card' as component, 3 AS columns where $1->>'$.query.component' IS NOT NULL; select name || (CASE WHEN top_level THEN ' (top-level)' ELSE '' END) as title, - (CASE WHEN optional THEN '' ELSE 'REQUIRED. ' END) || description as body, + (CASE WHEN optional THEN '' ELSE 'REQUIRED. ' END) || description as description, type as footer, CASE WHEN top_level THEN 'lime' ELSE 'azure' END || CASE WHEN optional THEN '-lt' ELSE '' END as color from parameter where component = $1->>'$.query.component' diff --git a/sqlsite/templates/card.handlebars b/sqlsite/templates/card.handlebars index fe5323f9..0cf475b8 100644 --- a/sqlsite/templates/card.handlebars +++ b/sqlsite/templates/card.handlebars @@ -1,3 +1,6 @@ +{{#if title}} +

    {{title}}

    +{{/if}}
    {{#each_row}}
    - <{{#if link}}a href="{{link}}" {{else}}div{{/if}} class="card h-100"> + <{{#if link}}a href="{{link}}" {{else}}div{{/if}} class="card h-100 {{#if active}}card-active{{/if}}"> {{#if color}}
    {{/if}}

    {{title}}

    -

    {{body}}

    +

    {{description}}

    {{#if footer}} {{/if}} + {{#if icon}} +
    + +
    + {{/if}}
    {{/each_row}} From 1d3e0f595a45933b329fa1b58ee6fb036444a96b Mon Sep 17 00:00:00 2001 From: lovasoa Date: Thu, 25 Aug 2022 21:20:52 +0200 Subject: [PATCH 048/278] Add a component to download data as csv --- documentation.sql | 54 ++++++++++++++++++++++++++++-- sqlsite/templates/csv.handlebars | 24 +++++++++++++ sqlsite/templates/shell.handlebars | 10 +++--- src/http.rs | 5 ++- 4 files changed, 84 insertions(+), 9 deletions(-) create mode 100644 sqlsite/templates/csv.handlebars diff --git a/documentation.sql b/documentation.sql index e2f30190..4e50c61f 100644 --- a/documentation.sql +++ b/documentation.sql @@ -157,6 +157,40 @@ INSERT INTO example(component, description, properties) VALUES '{"series": "Human resources", "x": 2021, "value": 30}, '|| '{"series": "Human resources", "x": 2022, "value": 55}]')); +INSERT INTO component(name, icon, description) VALUES + ('table', 'table', 'A table with optional filtering and sorting. Unlike most others, this component does not have a fixed set of item properties, any property that is used will be rendered directly as a column in the table.'); + +INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'table', * FROM (VALUES + -- top level + ('sort', 'Make the columns clickable to let the user sort by the value contained in the column.', 'BOOLEAN', TRUE, TRUE), + ('search', 'Add a search bar at the top of the table, letting users easily filter table rows by value.', 'BOOLEAN', TRUE, TRUE) +); + +INSERT INTO example(component, description, properties) VALUES + ('table', 'A table of users with filtering and sorting.', + json('[{"component":"table", "sort":true, "search":true}, '|| + '{"Forename": "Ophir", "Surname": "Lojkine", "Pseudonym": "lovasoa"},' || + '{"Forename": "Linus", "Surname": "Torvalds", "Pseudonym": "torvalds"}]')); + + +INSERT INTO component(name, icon, description) VALUES + ('csv', 'download', 'A button that lets the user download data as a CSV file. Each column from the items in the component will map to a column in the resulting CSV.'); + +INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'csv', * FROM (VALUES + -- top level + ('separator', 'How individual values should be separated in the CSV. "," by default, set it to "\t" for tab-separated values.', 'TEXT', TRUE, TRUE), + ('title', 'The text displayed on the download button.', 'TEXT', TRUE, FALSE), + ('filename', 'The name of the file that should be downloaded (without the extension).', 'TEXT', TRUE, TRUE), + ('icon', 'Name of the icon (from tabler-icons.io) to display in the button.', 'TEXT', TRUE, TRUE), + ('color', 'Color of the button', 'TEXT', TRUE, TRUE) +); + +INSERT INTO example(component, description, properties) VALUES + ('csv', 'CSV download button', + json('[{"component":"csv", "title": "Download my data", "filename": "people", "icon": "file-download", "color": "green"}, '|| + '{"Forename": "Ophir", "Surname": "Lojkine", "Pseudonym": "lovasoa"},' || + '{"Forename": "Linus", "Surname": "Torvalds", "Pseudonym": "torvalds"}]')); + INSERT INTO component(name, icon, description) VALUES ('dynamic', 'repeat', 'A special component that can be used to render other components, the number and properties of which are not known in advance.'); @@ -169,11 +203,27 @@ INSERT INTO parameter(component, name, description, type, top_level, optional) S INSERT INTO example(component, description, properties) VALUES ('dynamic', 'Rendering a text paragraph dynamically.', json('[{"component":"dynamic", "properties": "[{\"component\":\"text\"}, {\"contents\":\"Blah\", \"bold\":true}]"}]')); +INSERT INTO component(name, icon, description) VALUES + ('shell', 'file-dots', 'Personalize the "shell" surrounding your page contents. You can set properties that relate to the entire page instead of a single component in it. This component should never be manually selected with "SELECT ''shell'' as component". Instead, its top-level properties should be included in the very first select statement in your SQL file.'); + +INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'shell', * FROM (VALUES + -- top level + ('title', 'The title of your page. Will be shown in a top bar above the page contents. Also usually displayed by web browsers as the name of the web page''s tab.', 'TEXT', TRUE, TRUE), + ('description', 'A description of the page. It can be displayed by search engines when your page appears in their results.', 'TEXT', TRUE, TRUE), + ('link', 'The target of the link in the top navigation bar.', 'URL', TRUE, TRUE), + ('image', 'The URL of an image to display next to the page title.', 'URL', TRUE, TRUE), + ('norobot', 'Forbid robots to save this page in their database and follow the links on this page. This will prevent this page to appear in Google search results for any query, for instance.', 'BOOLEAN', TRUE, TRUE) +); + +INSERT INTO example(component, description, properties) VALUES + ('shell', 'This example contains the values used for the shell of the page you are currently viewing.', + json('[{"title": "SQLPage documentation", "link": "/", "lang": "en-US", "description": "Documentation for the SQLPage low-code web application framework."}]')); + select 'SQLPage documentation' as title, '/' as link, - 'en' as lang, - 'SQLPage documentation' as description; + 'en-US' as lang, + 'Documentation for the SQLPage low-code web application framework.' as description; select 'text' as component, 'SQLPage documentation' as title; diff --git a/sqlsite/templates/csv.handlebars b/sqlsite/templates/csv.handlebars new file mode 100644 index 00000000..b813946c --- /dev/null +++ b/sqlsite/templates/csv.handlebars @@ -0,0 +1,24 @@ + \ No newline at end of file diff --git a/sqlsite/templates/shell.handlebars b/sqlsite/templates/shell.handlebars index 59c19eaf..7c50c2ec 100644 --- a/sqlsite/templates/shell.handlebars +++ b/sqlsite/templates/shell.handlebars @@ -1,10 +1,11 @@ - + - {{title}} + {{default title "SQLPage"}} + {{#if norobot}}{{/if}} - + @@ -27,7 +29,7 @@
    {{#if icon}} - {{/if}} {{title}} diff --git a/src/http.rs b/src/http.rs index f6acecad..ef64ac63 100644 --- a/src/http.rs +++ b/src/http.rs @@ -187,13 +187,12 @@ async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> Strin .await .map(|form| form.into_inner()) .unwrap_or_default(); - serde_json::json!({ + json!({ "headers": headers, "client_ip": client_ip, "query": query, "form": form - }) - .to_string() + }).to_string() } async fn render_sql( From ddb47f5614cdfbc6d303f41f588b6988d3d165cc Mon Sep 17 00:00:00 2001 From: lovasoa Date: Thu, 25 Aug 2022 22:36:27 +0200 Subject: [PATCH 049/278] split template engine initialization and template rendering --- src/http.rs | 26 ++--- src/main.rs | 3 +- src/render.rs | 278 ++++++----------------------------------------- src/templates.rs | 224 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 272 insertions(+), 259 deletions(-) create mode 100644 src/templates.rs diff --git a/src/http.rs b/src/http.rs index ef64ac63..a3611146 100644 --- a/src/http.rs +++ b/src/http.rs @@ -11,14 +11,14 @@ use actix_web::{ use anyhow::{bail, Context}; use futures_util::StreamExt; use futures_util::TryFutureExt; +use serde::ser::SerializeMap; +use serde::{Serialize, Serializer}; +use serde_json::json; use sqlx::any::AnyArguments; use sqlx::{Arguments, Column, Database, Decode, Row}; use std::io::Write; use std::mem; use std::path::Component; -use serde::{Serialize, Serializer}; -use serde::ser::SerializeMap; -use serde_json::json; use tokio::sync::mpsc; /// If the sending queue exceeds this number of outgoing messages, an error will be thrown @@ -121,20 +121,19 @@ async fn stream_response( Ok(()) } - struct SerializeRow(R); impl<'r, R: Row> Serialize for &'r SerializeRow - where - usize: sqlx::ColumnIndex, - &'r str: sqlx::Decode<'r, ::Database>, - f64: sqlx::Decode<'r, ::Database>, - i64: sqlx::Decode<'r, ::Database>, - bool: sqlx::Decode<'r, ::Database>, +where + usize: sqlx::ColumnIndex, + &'r str: sqlx::Decode<'r, ::Database>, + f64: sqlx::Decode<'r, ::Database>, + i64: sqlx::Decode<'r, ::Database>, + bool: sqlx::Decode<'r, ::Database>, { fn serialize(&self, serializer: S) -> Result - where - S: Serializer, + where + S: Serializer, { use sqlx::{TypeInfo, ValueRef}; let columns = self.0.columns(); @@ -192,7 +191,8 @@ async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> Strin "client_ip": client_ip, "query": query, "form": form - }).to_string() + }) + .to_string() } async fn render_sql( diff --git a/src/main.rs b/src/main.rs index d9eb1be4..f4323bd2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,11 +1,12 @@ mod http; mod render; +mod templates; -use render::AllTemplates; use sqlx::any::AnyConnectOptions; use sqlx::migrate::Migrator; use sqlx::{AnyPool, ConnectOptions}; use std::path::Path; +use templates::AllTemplates; const WEB_ROOT: &str = "."; const CONFIG_DIR: &str = "sqlsite"; diff --git a/src/render.rs b/src/render.rs index ca5a8e61..ba528de1 100644 --- a/src/render.rs +++ b/src/render.rs @@ -1,15 +1,10 @@ -use std::borrow:: Cow; -use crate::{AppState, TEMPLATES_DIR}; -use handlebars::{ - handlebars_helper, template::TemplateElement, BlockContext, Context, Handlebars, JsonValue, - RenderError, Renderable, Template, TemplateError, -}; +use crate::templates::SplitTemplate; +use crate::AppState; +use anyhow::Context as AnyhowContext; +use handlebars::{BlockContext, Context, Handlebars, JsonValue, RenderError, Renderable}; use serde::Serialize; use serde_json::{json, Value}; -use std::collections::HashMap; -use std::ffi::OsStr; -use std::fs::DirEntry; -use anyhow::{Context as AnyhowContext}; +use std::borrow::Cow; pub struct RenderContext<'a, W: std::io::Write> { app_state: &'a AppState, @@ -21,7 +16,6 @@ pub struct RenderContext<'a, W: std::io::Write> { } const DEFAULT_COMPONENT: &str = "default"; -const DELAYED_CONTENTS: &str = "_delayed_contents"; const MAX_RECURSION_DEPTH: usize = 256; impl RenderContext<'_, W> { @@ -39,8 +33,12 @@ impl RenderContext<'_, W> { } pub fn handle_row(&mut self, data: &JsonValue) -> anyhow::Result<()> { - log::debug!("<- Processing database row: {}", serde_json::to_string(&data).unwrap_or_else(|e|e.to_string())); - let new_component = data.as_object() + log::debug!( + "<- Processing database row: {}", + serde_json::to_string(&data).unwrap_or_else(|e| e.to_string()) + ); + let new_component = data + .as_object() .and_then(|o| o.get("component")) .and_then(|c| c.as_str()); let current_component = self.current_component.as_ref().map(|c| c.name()); @@ -70,22 +68,24 @@ impl RenderContext<'_, W> { } fn render_dynamic(&mut self, data: &Value) -> anyhow::Result<()> { - anyhow::ensure!(self.recursion_depth <= MAX_RECURSION_DEPTH, "Maximum recursion depth exceeded in the dynamic component."); - let properties: Vec> = data.get("properties") - .and_then(|props| { - match props { - Value::String(s) => { - match serde_json::from_str::(s).ok()? { - Value::Array(values) => Some(values.into_iter().map(Cow::Owned).collect()), - obj @ Value::Object(_) => Some(vec![Cow::Owned(obj)]), - _ => None - } - } - obj @ Value::Object(_) => Some(vec![Cow::Borrowed(obj)]), + anyhow::ensure!( + self.recursion_depth <= MAX_RECURSION_DEPTH, + "Maximum recursion depth exceeded in the dynamic component." + ); + let properties: Vec> = data + .get("properties") + .and_then(|props| match props { + Value::String(s) => match serde_json::from_str::(s).ok()? { + Value::Array(values) => Some(values.into_iter().map(Cow::Owned).collect()), + obj @ Value::Object(_) => Some(vec![Cow::Owned(obj)]), _ => None, - } + }, + obj @ Value::Object(_) => Some(vec![Cow::Borrowed(obj)]), + _ => None, }) - .context("The dynamic component requires a parameter called 'parameters' that is a json ")?; + .context( + "The dynamic component requires a parameter called 'parameters' that is a json ", + )?; for p in properties { self.recursion_depth += 1; let res = self.handle_row(&p); @@ -96,7 +96,11 @@ impl RenderContext<'_, W> { } pub async fn finish_query(&mut self, result: sqlx::any::AnyQueryResult) -> anyhow::Result<()> { - log::debug!("-> Query {} finished with {:?}", self.current_statement, result); + log::debug!( + "-> Query {} finished with {:?}", + self.current_statement, + result + ); self.current_statement += 1; Ok(()) } @@ -213,13 +217,6 @@ impl RenderContext<'_, W> { } } - -struct SplitTemplate { - before_list: Template, - list_content: Template, - after_list: Template, -} - struct HandlebarWriterOutput(W); impl handlebars::Output for HandlebarWriterOutput { @@ -228,7 +225,7 @@ impl handlebars::Output for HandlebarWriterOutput { } } -struct SplitTemplateRenderer<'registry> { +pub struct SplitTemplateRenderer<'registry> { split_template: &'registry SplitTemplate, block_context: Option>, registry: &'registry Handlebars<'registry>, @@ -320,215 +317,6 @@ impl<'reg> SplitTemplateRenderer<'reg> { } } -fn split_template(mut original: Template) -> SplitTemplate { - let mut elements_after = Vec::new(); - let mut mapping_after = Vec::new(); - let mut items_template = None; - let found = original.elements.iter().position(is_template_list_item); - if let Some(idx) = found { - elements_after = original.elements.split_off(idx + 1); - mapping_after = original.mapping.split_off(idx + 1); - if let Some(TemplateElement::HelperBlock(tpl)) = original.elements.pop() { - original.mapping.pop(); - items_template = tpl.template - } - } - let mut list_content = items_template.unwrap_or_default(); - list_content.name = original.name.clone(); - SplitTemplate { - before_list: Template { - name: original.name.clone(), - elements: original.elements, - mapping: original.mapping, - }, - list_content, - after_list: Template { - name: original.name, - elements: elements_after, - mapping: mapping_after, - }, - } -} - -fn is_template_list_item(element: &TemplateElement) -> bool { - use handlebars::template::*; - use Parameter::*; - matches!(element, - TemplateElement::HelperBlock(tpl) - if matches!(&tpl.name, Name(name) if name == "each_row")) -} - -pub struct AllTemplates { - handlebars: Handlebars<'static>, - split_templates: HashMap, -} - -fn without_top_block<'a, 'reg, 'rc, R>( - rc: &'a mut handlebars::RenderContext<'reg, 'rc>, - action: impl FnOnce(&mut handlebars::RenderContext<'reg, 'rc>) -> R, -) -> R { - let top = rc.block_mut().map(std::mem::take).unwrap_or_default(); - rc.pop_block(); - let r = action(rc); - rc.push_block(top); - r -} - -fn delay_helper<'reg, 'rc>( - h: &handlebars::Helper<'reg, 'rc>, - r: &'reg Handlebars<'reg>, - ctx: &'rc Context, - rc: &mut handlebars::RenderContext<'reg, 'rc>, - _out: &mut dyn handlebars::Output, -) -> handlebars::HelperResult { - let inner = h - .template() - .ok_or_else(|| RenderError::new("missing delayed contents"))?; - let mut str_out = handlebars::StringOutput::new(); - inner.render(r, ctx, rc, &mut str_out)?; - without_top_block(rc, move |rc| { - let block = rc - .block_mut() - .ok_or_else(|| RenderError::new("Cannot use delayed output without a block context"))?; - let old_delayed_render = block - .get_local_var(DELAYED_CONTENTS) - .and_then(|v| v.as_str()) - .unwrap_or_default(); - let delayed_render = str_out.into_string()? + old_delayed_render; - block.set_local_var(DELAYED_CONTENTS, JsonValue::String(delayed_render)); - Ok::<_, RenderError>(()) - })?; - Ok(()) -} - - -fn flush_delayed_helper<'reg, 'rc>( - h: &handlebars::Helper<'reg, 'rc>, - r: &'reg Handlebars<'reg>, - ctx: &'rc Context, - rc: &mut handlebars::RenderContext<'reg, 'rc>, - writer: &mut dyn handlebars::Output, -) -> handlebars::HelperResult { - if let Some(block_context) = rc.block_mut() { - let delayed = block_context - .get_local_var(DELAYED_CONTENTS) - .and_then(|v| v.as_str()) - .filter(|s| !s.is_empty()); - if let Some(contents) = delayed { - writer.write(contents)?; - block_context.set_local_var(DELAYED_CONTENTS, JsonValue::Null); - Ok(()) - } else { - without_top_block(rc, |rc| { - flush_delayed_helper(h, r, ctx, rc, writer) - }) - } - } else { Ok(()) } -} - -impl AllTemplates { - pub fn init() -> Self { - let mut handlebars = Handlebars::new(); - handlebars_helper!(stringify: |v: Json| v.to_string()); - handlebars.register_helper("stringify", Box::new(stringify)); - handlebars_helper!(default: |a: Json, b:Json| if a.is_null() {b} else {a}.clone()); - handlebars.register_helper("default", Box::new(default)); - handlebars_helper!(entries: |v: Json | match v { - serde_json::value::Value::Object(map) => - map.into_iter() - .map(|(k, v)| serde_json::json!({"key": k, "value": v})) - .collect(), - serde_json::value::Value::Array(values) => - values.iter() - .enumerate() - .map(|(k, v)| serde_json::json!({"key": k, "value": v})) - .collect(), - _ => vec![] - }); - handlebars.register_helper("entries", Box::new(entries)); - handlebars.register_helper("delay", Box::new(delay_helper)); - handlebars.register_helper("flush_delayed", Box::new(flush_delayed_helper)); - let split_templates = HashMap::new(); - let mut this = Self { - handlebars, - split_templates, - }; - this.register_split( - "shell", - include_str!("../sqlsite/templates/shell.handlebars"), - ) - .expect("Embedded shell template contains an error"); - this.register_split( - "error", - include_str!("../sqlsite/templates/error.handlebars"), - ) - .expect("Embedded shell template contains an error"); - this.register_dir(); - this - } - - fn register_split(&mut self, name: S, tpl_str: &str) -> Result<(), TemplateError> { - let mut tpl = Template::compile(tpl_str)?; - tpl.name = Some(name.to_string()); - let split = split_template(tpl); - self.split_templates.insert(name.to_string(), split); - Ok(()) - } - - fn register_dir(&mut self) { - let mut errors = vec![]; - match std::fs::read_dir(TEMPLATES_DIR) { - Ok(dir) => { - for f in dir { - errors.extend(self.register_dir_entry(f).err()); - } - } - Err(e) => errors.push(Box::new(e)), - } - for err in errors { - log::error!("Unable to register a template: {}", err); - } - } - - fn register_dir_entry( - &mut self, - entry: std::io::Result, - ) -> Result<(), Box> { - let path = entry?.path(); - let tpl_str = std::fs::read_to_string(&path)?; - let name = path.file_stem().unwrap().to_string_lossy(); - if path.extension() == Some(OsStr::new("handlebars")) { - self.register_split(&name, &tpl_str)?; - } else { - self.handlebars.register_partial(&name, &tpl_str)?; - } - Ok(()) - } -} - -#[test] -fn test_split_template() { - let template = Template::compile( - "Hello {{name}} ! \ - {{#each_row}}
  • {{this}}
  • {{/each_row}}\ - end", - ) - .unwrap(); - let split = split_template(template); - assert_eq!( - split.before_list.elements, - Template::compile("Hello {{name}} ! ").unwrap().elements - ); - assert_eq!( - split.list_content.elements, - Template::compile("
  • {{this}}
  • ").unwrap().elements - ); - assert_eq!( - split.after_list.elements, - Template::compile("end").unwrap().elements - ); -} - #[test] fn test_split_template_render() -> anyhow::Result<()> { let reg = Handlebars::new(); diff --git a/src/templates.rs b/src/templates.rs new file mode 100644 index 00000000..fa00f1af --- /dev/null +++ b/src/templates.rs @@ -0,0 +1,224 @@ +use crate::TEMPLATES_DIR; +use handlebars::{ + handlebars_helper, template::TemplateElement, Context, Handlebars, JsonValue, RenderError, + Renderable, Template, TemplateError, +}; +use std::collections::HashMap; +use std::ffi::OsStr; +use std::fs::DirEntry; + +pub(crate) const DELAYED_CONTENTS: &str = "_delayed_contents"; + +pub struct SplitTemplate { + pub before_list: Template, + pub list_content: Template, + pub after_list: Template, +} + +pub fn split_template(mut original: Template) -> SplitTemplate { + let mut elements_after = Vec::new(); + let mut mapping_after = Vec::new(); + let mut items_template = None; + let found = original.elements.iter().position(is_template_list_item); + if let Some(idx) = found { + elements_after = original.elements.split_off(idx + 1); + mapping_after = original.mapping.split_off(idx + 1); + if let Some(TemplateElement::HelperBlock(tpl)) = original.elements.pop() { + original.mapping.pop(); + items_template = tpl.template + } + } + let mut list_content = items_template.unwrap_or_default(); + list_content.name = original.name.clone(); + SplitTemplate { + before_list: Template { + name: original.name.clone(), + elements: original.elements, + mapping: original.mapping, + }, + list_content, + after_list: Template { + name: original.name, + elements: elements_after, + mapping: mapping_after, + }, + } +} + +fn is_template_list_item(element: &TemplateElement) -> bool { + use handlebars::template::*; + use Parameter::*; + matches!(element, + TemplateElement::HelperBlock(tpl) + if matches!(&tpl.name, Name(name) if name == "each_row")) +} + +pub struct AllTemplates { + pub handlebars: Handlebars<'static>, + pub split_templates: HashMap, +} + +fn without_top_block<'a, 'reg, 'rc, R>( + rc: &'a mut handlebars::RenderContext<'reg, 'rc>, + action: impl FnOnce(&mut handlebars::RenderContext<'reg, 'rc>) -> R, +) -> R { + let top = rc.block_mut().map(std::mem::take).unwrap_or_default(); + rc.pop_block(); + let r = action(rc); + rc.push_block(top); + r +} + +fn delay_helper<'reg, 'rc>( + h: &handlebars::Helper<'reg, 'rc>, + r: &'reg Handlebars<'reg>, + ctx: &'rc Context, + rc: &mut handlebars::RenderContext<'reg, 'rc>, + _out: &mut dyn handlebars::Output, +) -> handlebars::HelperResult { + let inner = h + .template() + .ok_or_else(|| RenderError::new("missing delayed contents"))?; + let mut str_out = handlebars::StringOutput::new(); + inner.render(r, ctx, rc, &mut str_out)?; + without_top_block(rc, move |rc| { + let block = rc + .block_mut() + .ok_or_else(|| RenderError::new("Cannot use delayed output without a block context"))?; + let old_delayed_render = block + .get_local_var(DELAYED_CONTENTS) + .and_then(|v| v.as_str()) + .unwrap_or_default(); + let delayed_render = str_out.into_string()? + old_delayed_render; + block.set_local_var(DELAYED_CONTENTS, JsonValue::String(delayed_render)); + Ok::<_, RenderError>(()) + })?; + Ok(()) +} + +fn flush_delayed_helper<'reg, 'rc>( + h: &handlebars::Helper<'reg, 'rc>, + r: &'reg Handlebars<'reg>, + ctx: &'rc Context, + rc: &mut handlebars::RenderContext<'reg, 'rc>, + writer: &mut dyn handlebars::Output, +) -> handlebars::HelperResult { + if let Some(block_context) = rc.block_mut() { + let delayed = block_context + .get_local_var(DELAYED_CONTENTS) + .and_then(|v| v.as_str()) + .filter(|s| !s.is_empty()); + if let Some(contents) = delayed { + writer.write(contents)?; + block_context.set_local_var(DELAYED_CONTENTS, JsonValue::Null); + Ok(()) + } else { + without_top_block(rc, |rc| flush_delayed_helper(h, r, ctx, rc, writer)) + } + } else { + Ok(()) + } +} + +impl AllTemplates { + pub fn init() -> Self { + let mut handlebars = Handlebars::new(); + handlebars_helper!(stringify: |v: Json| v.to_string()); + handlebars.register_helper("stringify", Box::new(stringify)); + handlebars_helper!(default: |a: Json, b:Json| if a.is_null() {b} else {a}.clone()); + handlebars.register_helper("default", Box::new(default)); + handlebars_helper!(entries: |v: Json | match v { + serde_json::value::Value::Object(map) => + map.into_iter() + .map(|(k, v)| serde_json::json!({"key": k, "value": v})) + .collect(), + serde_json::value::Value::Array(values) => + values.iter() + .enumerate() + .map(|(k, v)| serde_json::json!({"key": k, "value": v})) + .collect(), + _ => vec![] + }); + handlebars.register_helper("entries", Box::new(entries)); + handlebars.register_helper("delay", Box::new(delay_helper)); + handlebars.register_helper("flush_delayed", Box::new(flush_delayed_helper)); + let split_templates = HashMap::new(); + let mut this = Self { + handlebars, + split_templates, + }; + this.register_split( + "shell", + include_str!("../sqlsite/templates/shell.handlebars"), + ) + .expect("Embedded shell template contains an error"); + this.register_split( + "error", + include_str!("../sqlsite/templates/error.handlebars"), + ) + .expect("Embedded shell template contains an error"); + this.register_dir(); + this + } + + fn register_split(&mut self, name: S, tpl_str: &str) -> Result<(), TemplateError> { + let mut tpl = Template::compile(tpl_str)?; + tpl.name = Some(name.to_string()); + let split = split_template(tpl); + self.split_templates.insert(name.to_string(), split); + Ok(()) + } + + fn register_dir(&mut self) { + let mut errors = vec![]; + match std::fs::read_dir(TEMPLATES_DIR) { + Ok(dir) => { + for f in dir { + errors.extend(self.register_dir_entry(f).err()); + } + } + Err(e) => errors.push(Box::new(e)), + } + for err in errors { + log::error!("Unable to register a template: {}", err); + } + } + + fn register_dir_entry( + &mut self, + entry: std::io::Result, + ) -> Result<(), Box> { + let path = entry?.path(); + let tpl_str = std::fs::read_to_string(&path)?; + let name = path.file_stem().unwrap().to_string_lossy(); + if path.extension() == Some(OsStr::new("handlebars")) { + self.register_split(&name, &tpl_str)?; + } else { + self.handlebars.register_partial(&name, &tpl_str)?; + } + Ok(()) + } +} + +#[test] +fn test_split_template() { + let template = Template::compile( + "Hello {{name}} ! \ + {{#each_row}}
  • {{this}}
  • {{/each_row}}\ + end", + ) + .unwrap(); + let split = split_template(template); + assert_eq!( + split.before_list.elements, + Template::compile("Hello {{name}} ! ").unwrap().elements + ); + assert_eq!( + split.list_content.elements, + Template::compile("
  • {{this}}
  • ").unwrap().elements + ); + assert_eq!( + split.after_list.elements, + Template::compile("end").unwrap().elements + ); +} From d72cc3f5cc490006aab9ee3341c863bc73dd038e Mon Sep 17 00:00:00 2001 From: lovasoa Date: Thu, 25 Aug 2022 22:38:57 +0200 Subject: [PATCH 050/278] fix tests --- src/render.rs | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/src/render.rs b/src/render.rs index ba528de1..5d276aae 100644 --- a/src/render.rs +++ b/src/render.rs @@ -317,21 +317,28 @@ impl<'reg> SplitTemplateRenderer<'reg> { } } -#[test] -fn test_split_template_render() -> anyhow::Result<()> { - let reg = Handlebars::new(); - let template = Template::compile( - "Hello {{name}} !\ +#[cfg(test)] +mod tests { + use super::*; + use crate::templates::split_template; + use handlebars::Template; + + #[test] + fn test_split_template_render() -> anyhow::Result<()> { + let reg = Handlebars::new(); + let template = Template::compile( + "Hello {{name}} !\ {{#each_row}} ({{x}} : {{../name}}) {{/each_row}}\ Goodbye {{name}}", - )?; - let split = split_template(template); - let mut output = Vec::new(); - let mut rdr = SplitTemplateRenderer::new(&split, ®); - rdr.render_start(&mut output, json!({"name": "SQL"}))?; - rdr.render_item(&mut output, json!({"x": 1}))?; - rdr.render_item(&mut output, json!({"x": 2}))?; - rdr.render_end(&mut output)?; - assert_eq!(output, b"Hello SQL ! (1 : SQL) (2 : SQL) Goodbye SQL"); - Ok(()) + )?; + let split = split_template(template); + let mut output = Vec::new(); + let mut rdr = SplitTemplateRenderer::new(&split, ®); + rdr.render_start(&mut output, json!({"name": "SQL"}))?; + rdr.render_item(&mut output, json!({"x": 1}))?; + rdr.render_item(&mut output, json!({"x": 2}))?; + rdr.render_end(&mut output)?; + assert_eq!(output, b"Hello SQL ! (1 : SQL) (2 : SQL) Goodbye SQL"); + Ok(()) + } } From ddaa35d4234fe5a45f49886fb6d61dddc836d1de Mon Sep 17 00:00:00 2001 From: lovasoa Date: Thu, 25 Aug 2022 22:46:42 +0200 Subject: [PATCH 051/278] Improve documentation for the "shell" component --- documentation.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation.sql b/documentation.sql index 4e50c61f..e99d8595 100644 --- a/documentation.sql +++ b/documentation.sql @@ -204,7 +204,7 @@ INSERT INTO example(component, description, properties) VALUES ('dynamic', 'Rendering a text paragraph dynamically.', json('[{"component":"dynamic", "properties": "[{\"component\":\"text\"}, {\"contents\":\"Blah\", \"bold\":true}]"}]')); INSERT INTO component(name, icon, description) VALUES - ('shell', 'file-dots', 'Personalize the "shell" surrounding your page contents. You can set properties that relate to the entire page instead of a single component in it. This component should never be manually selected with "SELECT ''shell'' as component". Instead, its top-level properties should be included in the very first select statement in your SQL file.'); + ('shell', 'file-dots', 'Personalize the "shell" surrounding your page contents. Used to set properties for the entire page. This component should never be manually selected with "SELECT ''shell'' as component". Instead, its top-level properties should be included directly in the very first SELECT statement in your SQL file.'); INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'shell', * FROM (VALUES -- top level From ad1238de3096c6b6aee64f4e53b20dcae929b8ed Mon Sep 17 00:00:00 2001 From: lovasoa Date: Fri, 26 Aug 2022 01:29:24 +0200 Subject: [PATCH 052/278] move database logic to its own file --- src/database.rs | 81 +++++++++++++++++++++++++++++++++++++++++++++++++ src/http.rs | 75 +++++++++------------------------------------ src/main.rs | 1 + 3 files changed, 96 insertions(+), 61 deletions(-) create mode 100644 src/database.rs diff --git a/src/database.rs b/src/database.rs new file mode 100644 index 00000000..3739eeeb --- /dev/null +++ b/src/database.rs @@ -0,0 +1,81 @@ +use futures_util::stream::{self, Stream}; +use futures_util::StreamExt; +use serde::ser::SerializeMap; +use serde::{Serialize, Serializer}; +use std::future::ready; + +use sqlx::any::{AnyArguments, AnyQueryResult, AnyRow}; +use sqlx::{Arguments, Column, Database, Decode, Either, Row}; + +pub fn stream_query_results<'a>( + db: &'a sqlx::AnyPool, + sql_source: &'a [u8], + argument: &'a str, +) -> impl Stream + 'a { + let mut arguments = AnyArguments::default(); + arguments.add(argument); + match std::str::from_utf8(sql_source) { + Ok(sql) => sqlx::query_with(sql, arguments).fetch_many(db), + Err(e) => { + let error = sqlx::Error::Decode(Box::new(e)); + stream::once(ready(Err(error))).boxed() + } + } + .map(|res| match res { + Ok(Either::Right(r)) => DbItem::Row(r), + Ok(Either::Left(r)) => DbItem::FinishedQuery(r), + Err(e) => DbItem::Error(e), + }) +} + +pub enum DbItem { + Row(AnyRow), + FinishedQuery(AnyQueryResult), + Error(sqlx::Error), +} + +pub struct SerializeRow(pub R); + +impl<'r, R: Row> Serialize for &'r SerializeRow +where + usize: sqlx::ColumnIndex, + &'r str: sqlx::Decode<'r, ::Database>, + f64: sqlx::Decode<'r, ::Database>, + i64: sqlx::Decode<'r, ::Database>, + bool: sqlx::Decode<'r, ::Database>, +{ + fn serialize(&self, serializer: S) -> Result + where + S: Serializer, + { + use sqlx::{TypeInfo, ValueRef}; + let columns = self.0.columns(); + let mut map = serializer.serialize_map(Some(columns.len()))?; + for col in columns { + let key = col.name(); + match self.0.try_get_raw(col.ordinal()) { + Ok(raw_value) if !raw_value.is_null() => match raw_value.type_info().name() { + "REAL" | "FLOAT" | "NUMERIC" | "FLOAT4" | "FLOAT8" | "DOUBLE" => { + map_serialize::<_, _, f64>(&mut map, key, raw_value) + } + "INT" | "INTEGER" | "INT8" | "INT2" | "INT4" | "TINYINT" | "SMALLINT" + | "BIGINT" => map_serialize::<_, _, i64>(&mut map, key, raw_value), + "BOOL" | "BOOLEAN" => map_serialize::<_, _, bool>(&mut map, key, raw_value), + // Deserialize as a string by default + _ => map_serialize::<_, _, &str>(&mut map, key, raw_value), + }, + _ => map.serialize_entry(key, &()), // Serialize null + }? + } + map.end() + } +} + +fn map_serialize<'r, M: SerializeMap, DB: Database, T: Decode<'r, DB> + Serialize>( + map: &mut M, + key: &str, + raw_value: >::ValueRef, +) -> Result<(), M::Error> { + let val = T::decode(raw_value).map_err(serde::ser::Error::custom)?; + map.serialize_entry(key, &val) +} diff --git a/src/http.rs b/src/http.rs index a3611146..0dc0cc2c 100644 --- a/src/http.rs +++ b/src/http.rs @@ -1,3 +1,4 @@ +use crate::database::{stream_query_results, DbItem, SerializeRow}; use crate::render::RenderContext; use crate::{AppState, CONFIG_DIR, WEB_ROOT}; use actix_web::dev::Payload; @@ -11,11 +12,7 @@ use actix_web::{ use anyhow::{bail, Context}; use futures_util::StreamExt; use futures_util::TryFutureExt; -use serde::ser::SerializeMap; -use serde::{Serialize, Serializer}; use serde_json::json; -use sqlx::any::AnyArguments; -use sqlx::{Arguments, Column, Database, Decode, Row}; use std::io::Write; use std::mem; use std::path::Component; @@ -38,12 +35,13 @@ impl ResponseWriter { buffer: Vec::new(), } } - fn close_with_error(&mut self, msg: String) { + async fn close_with_error(&mut self, msg: String) { if !self.response_bytes.is_closed() { - let _ = self.flush(); + let _ = self.async_flush().await; let _ = self .response_bytes - .try_send(Err(ErrorInternalServerError(msg))); + .send(Err(ErrorInternalServerError(msg))) + .await; } } @@ -92,21 +90,22 @@ async fn stream_response( response_bytes: ResponseWriter, ) -> anyhow::Result<()> { let app_state: &web::Data = req.app_data().context("no app data in render")?; - let sql = std::str::from_utf8(&sql_bytes)?; - let mut arguments = AnyArguments::default(); - arguments.add(request_argument_json(&req, payload).await); - let mut stream = sqlx::query_with(sql, arguments).fetch_many(&app_state.db); + let req_param = request_argument_json(&req, payload).await; + let mut stream = stream_query_results(&app_state.db, &sql_bytes, &req_param); let mut renderer = RenderContext::new(app_state, response_bytes); while let Some(item) = stream.next().await { let render_result = match item { - Ok(sqlx::Either::Left(result)) => renderer.finish_query(result).await, - Ok(sqlx::Either::Right(row)) => renderer.handle_row(&json!(SerializeRow(row))), - Err(e) => renderer.handle_error(&e), + DbItem::FinishedQuery(result) => renderer.finish_query(result).await, + DbItem::Row(row) => renderer.handle_row(&json!(SerializeRow(row))), + DbItem::Error(e) => renderer.handle_error(&e), }; if let Err(e) = render_result { if let Err(nested_err) = renderer.handle_error(&e.root_cause()) { - renderer.close().close_with_error(nested_err.to_string()); + renderer + .close() + .close_with_error(nested_err.to_string()) + .await; bail!( "An error occurred while trying to display an other error. \ \nRoot error: {e}\n @@ -121,52 +120,6 @@ async fn stream_response( Ok(()) } -struct SerializeRow(R); - -impl<'r, R: Row> Serialize for &'r SerializeRow -where - usize: sqlx::ColumnIndex, - &'r str: sqlx::Decode<'r, ::Database>, - f64: sqlx::Decode<'r, ::Database>, - i64: sqlx::Decode<'r, ::Database>, - bool: sqlx::Decode<'r, ::Database>, -{ - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - use sqlx::{TypeInfo, ValueRef}; - let columns = self.0.columns(); - let mut map = serializer.serialize_map(Some(columns.len()))?; - for col in columns { - let key = col.name(); - match self.0.try_get_raw(col.ordinal()) { - Ok(raw_value) if !raw_value.is_null() => match raw_value.type_info().name() { - "REAL" | "FLOAT" | "NUMERIC" | "FLOAT4" | "FLOAT8" | "DOUBLE" => { - map_serialize::<_, _, f64>(&mut map, key, raw_value) - } - "INT" | "INTEGER" | "INT8" | "INT2" | "INT4" | "TINYINT" | "SMALLINT" - | "BIGINT" => map_serialize::<_, _, i64>(&mut map, key, raw_value), - "BOOL" | "BOOLEAN" => map_serialize::<_, _, bool>(&mut map, key, raw_value), - // Deserialize as a string by default - _ => map_serialize::<_, _, &str>(&mut map, key, raw_value), - }, - _ => map.serialize_entry(key, &()), // Serialize null - }? - } - map.end() - } -} - -fn map_serialize<'r, M: SerializeMap, DB: Database, T: Decode<'r, DB> + Serialize>( - map: &mut M, - key: &str, - raw_value: >::ValueRef, -) -> Result<(), M::Error> { - let val = T::decode(raw_value).map_err(serde::ser::Error::custom)?; - map.serialize_entry(key, &val) -} - async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> String { let headers: serde_json::Map = req .headers() diff --git a/src/main.rs b/src/main.rs index f4323bd2..94f133e7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +mod database; mod http; mod render; mod templates; From 60a18c977f4b31a9e32dda405046059f66fb647f Mon Sep 17 00:00:00 2001 From: lovasoa Date: Fri, 26 Aug 2022 02:40:07 +0200 Subject: [PATCH 053/278] Implement direct row to json serialization --- src/database.rs | 90 +++++++++++++++++++++---------------------------- src/http.rs | 4 +-- 2 files changed, 41 insertions(+), 53 deletions(-) diff --git a/src/database.rs b/src/database.rs index 3739eeeb..2d5637ee 100644 --- a/src/database.rs +++ b/src/database.rs @@ -1,17 +1,15 @@ use futures_util::stream::{self, Stream}; use futures_util::StreamExt; -use serde::ser::SerializeMap; -use serde::{Serialize, Serializer}; use std::future::ready; use sqlx::any::{AnyArguments, AnyQueryResult, AnyRow}; -use sqlx::{Arguments, Column, Database, Decode, Either, Row}; +use sqlx::{Arguments, Column, Decode, Either, Row}; pub fn stream_query_results<'a>( db: &'a sqlx::AnyPool, sql_source: &'a [u8], argument: &'a str, -) -> impl Stream + 'a { +) -> impl Stream + 'a { let mut arguments = AnyArguments::default(); arguments.add(argument); match std::str::from_utf8(sql_source) { @@ -21,11 +19,11 @@ pub fn stream_query_results<'a>( stream::once(ready(Err(error))).boxed() } } - .map(|res| match res { - Ok(Either::Right(r)) => DbItem::Row(r), - Ok(Either::Left(r)) => DbItem::FinishedQuery(r), - Err(e) => DbItem::Error(e), - }) + .map(|res| match res { + Ok(Either::Right(r)) => DbItem::Row(r), + Ok(Either::Left(r)) => DbItem::FinishedQuery(r), + Err(e) => DbItem::Error(e), + }) } pub enum DbItem { @@ -34,48 +32,38 @@ pub enum DbItem { Error(sqlx::Error), } -pub struct SerializeRow(pub R); -impl<'r, R: Row> Serialize for &'r SerializeRow -where - usize: sqlx::ColumnIndex, - &'r str: sqlx::Decode<'r, ::Database>, - f64: sqlx::Decode<'r, ::Database>, - i64: sqlx::Decode<'r, ::Database>, - bool: sqlx::Decode<'r, ::Database>, -{ - fn serialize(&self, serializer: S) -> Result - where - S: Serializer, - { - use sqlx::{TypeInfo, ValueRef}; - let columns = self.0.columns(); - let mut map = serializer.serialize_map(Some(columns.len()))?; - for col in columns { - let key = col.name(); - match self.0.try_get_raw(col.ordinal()) { - Ok(raw_value) if !raw_value.is_null() => match raw_value.type_info().name() { - "REAL" | "FLOAT" | "NUMERIC" | "FLOAT4" | "FLOAT8" | "DOUBLE" => { - map_serialize::<_, _, f64>(&mut map, key, raw_value) - } - "INT" | "INTEGER" | "INT8" | "INT2" | "INT4" | "TINYINT" | "SMALLINT" - | "BIGINT" => map_serialize::<_, _, i64>(&mut map, key, raw_value), - "BOOL" | "BOOLEAN" => map_serialize::<_, _, bool>(&mut map, key, raw_value), - // Deserialize as a string by default - _ => map_serialize::<_, _, &str>(&mut map, key, raw_value), - }, - _ => map.serialize_entry(key, &()), // Serialize null - }? - } - map.end() - } -} +pub fn row_to_json(row: AnyRow) -> serde_json::Value { + use sqlx::{TypeInfo, ValueRef}; + use serde_json::{Value, Map}; + use Value::{Null, Object}; -fn map_serialize<'r, M: SerializeMap, DB: Database, T: Decode<'r, DB> + Serialize>( - map: &mut M, - key: &str, - raw_value: >::ValueRef, -) -> Result<(), M::Error> { - let val = T::decode(raw_value).map_err(serde::ser::Error::custom)?; - map.serialize_entry(key, &val) + let columns = row.columns(); + let mut map = Map::new(); + for col in columns { + let key = col.name().to_string(); + let value: Value = match row.try_get_raw(col.ordinal()) { + Ok(raw_value) if !raw_value.is_null() => match raw_value.type_info().name() { + "REAL" | "FLOAT" | "NUMERIC" | "FLOAT4" | "FLOAT8" | "DOUBLE" => { + >::decode(raw_value).unwrap_or(f64::NAN).into() + } + "INT" | "INTEGER" | "INT8" | "INT2" | "INT4" | "TINYINT" | "SMALLINT" | "BIGINT" => { + >::decode(raw_value).unwrap_or_default().into() + } + "BOOL" | "BOOLEAN" => >::decode(raw_value).unwrap_or_default().into(), + "JSON" | "JSON[]" | "JSONB" | "JSONB[]" => <&[u8] as Decode>::decode(raw_value) + .and_then(|rv| serde_json::from_slice::(rv).map_err(|e| Box::new(e) as Box)) + .unwrap_or_default(), + // Deserialize as a string by default + _ => >::decode(raw_value).unwrap_or_default().into(), + }, + Ok(_null) => Null, + Err(e) => { + log::warn!("Unable to extract value from row: {:?}", e); + Null + } + }; + map.insert(key, value); + } + Object(map) } diff --git a/src/http.rs b/src/http.rs index 0dc0cc2c..506fec10 100644 --- a/src/http.rs +++ b/src/http.rs @@ -1,4 +1,4 @@ -use crate::database::{stream_query_results, DbItem, SerializeRow}; +use crate::database::{stream_query_results, DbItem, row_to_json}; use crate::render::RenderContext; use crate::{AppState, CONFIG_DIR, WEB_ROOT}; use actix_web::dev::Payload; @@ -97,7 +97,7 @@ async fn stream_response( while let Some(item) = stream.next().await { let render_result = match item { DbItem::FinishedQuery(result) => renderer.finish_query(result).await, - DbItem::Row(row) => renderer.handle_row(&json!(SerializeRow(row))), + DbItem::Row(row) => renderer.handle_row(&row_to_json(row)), DbItem::Error(e) => renderer.handle_error(&e), }; if let Err(e) = render_result { From a16d334d0cacaf85e8bf6286cb3ae2868ec9a214 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Fri, 26 Aug 2022 02:46:07 +0200 Subject: [PATCH 054/278] add support for arrays by selecting a value with the same name multiple times --- src/database.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/database.rs b/src/database.rs index 2d5637ee..ba9dc804 100644 --- a/src/database.rs +++ b/src/database.rs @@ -63,7 +63,11 @@ pub fn row_to_json(row: AnyRow) -> serde_json::Value { Null } }; - map.insert(key, value); + let entry = map.entry(key).or_insert(Value::Array(Vec::with_capacity(1))); + match entry { + Value::Array(x) => { x.push(value) } + old => *old = Value::Array(vec![old.take(), value]) + } } Object(map) } From e41b585f2e217c6b5251027e127554618f9f6ad7 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Fri, 26 Aug 2022 14:51:43 +0200 Subject: [PATCH 055/278] Correct handling of multiple columns with the same name --- src/database.rs | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/src/database.rs b/src/database.rs index ba9dc804..95ce674e 100644 --- a/src/database.rs +++ b/src/database.rs @@ -36,7 +36,7 @@ pub enum DbItem { pub fn row_to_json(row: AnyRow) -> serde_json::Value { use sqlx::{TypeInfo, ValueRef}; use serde_json::{Value, Map}; - use Value::{Null, Object}; + use Value::{Null, Object, Array}; let columns = row.columns(); let mut map = Map::new(); @@ -63,11 +63,36 @@ pub fn row_to_json(row: AnyRow) -> serde_json::Value { Null } }; - let entry = map.entry(key).or_insert(Value::Array(Vec::with_capacity(1))); - match entry { - Value::Array(x) => { x.push(value) } - old => *old = Value::Array(vec![old.take(), value]) + use serde_json::map::Entry::*; + match map.entry(key) { + Vacant(vacant) => { vacant.insert(value); } + Occupied(mut old_entry) => match old_entry.get_mut() { + Array(old_array) => { old_array.push(value) } + old_scalar => { + *old_scalar = Array(vec![old_scalar.take(), value]) + } + } } } Object(map) } + +#[actix_web::test] +async fn test_row_to_json() -> anyhow::Result<()> { + use sqlx::Connection; + let mut c = sqlx::AnyConnection::connect("sqlite://:memory:").await?; + let row = sqlx::query("SELECT \ + 3.14159 as one_value, \ + 1 as two_values, \ + 2 as two_values, \ + 'x' as three_values, \ + 'y' as three_values, \ + 'z' as three_values \ + ").fetch_one(&mut c).await?; + assert_eq!(row_to_json(row), serde_json::json!({ + "one_value": 3.14159, + "two_values": [1,2], + "three_values": ["x","y","z"], + })); + Ok(()) +} \ No newline at end of file From bbfc44b8848418228fe5e0ac72cd5505e2d1ae24 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Fri, 26 Aug 2022 15:26:43 +0200 Subject: [PATCH 056/278] Add support for form elements with multiple values --- src/database.rs | 30 ++++++++++++++++++------------ src/http.rs | 10 ++++++---- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/database.rs b/src/database.rs index 95ce674e..5ca71ae2 100644 --- a/src/database.rs +++ b/src/database.rs @@ -1,6 +1,7 @@ use futures_util::stream::{self, Stream}; use futures_util::StreamExt; use std::future::ready; +use serde_json::{Map, Value}; use sqlx::any::{AnyArguments, AnyQueryResult, AnyRow}; use sqlx::{Arguments, Column, Decode, Either, Row}; @@ -33,10 +34,9 @@ pub enum DbItem { } -pub fn row_to_json(row: AnyRow) -> serde_json::Value { +pub fn row_to_json(row: AnyRow) -> Value { use sqlx::{TypeInfo, ValueRef}; - use serde_json::{Value, Map}; - use Value::{Null, Object, Array}; + use Value::{Null, Object}; let columns = row.columns(); let mut map = Map::new(); @@ -63,18 +63,24 @@ pub fn row_to_json(row: AnyRow) -> serde_json::Value { Null } }; - use serde_json::map::Entry::*; - match map.entry(key) { - Vacant(vacant) => { vacant.insert(value); } - Occupied(mut old_entry) => match old_entry.get_mut() { - Array(old_array) => { old_array.push(value) } - old_scalar => { - *old_scalar = Array(vec![old_scalar.take(), value]) - } + map = add_value_to_map(map, (key, value)); + } + Object(map) +} + +pub fn add_value_to_map(mut map: Map, (key, value): (String, Value)) -> Map { + use Value::{Array}; + use serde_json::map::Entry::*; + match map.entry(key) { + Vacant(vacant) => { vacant.insert(value); } + Occupied(mut old_entry) => match old_entry.get_mut() { + Array(old_array) => { old_array.push(value) } + old_scalar => { + *old_scalar = Array(vec![old_scalar.take(), value]) } } } - Object(map) + map } #[actix_web::test] diff --git a/src/http.rs b/src/http.rs index 506fec10..6a6b059b 100644 --- a/src/http.rs +++ b/src/http.rs @@ -1,4 +1,4 @@ -use crate::database::{stream_query_results, DbItem, row_to_json}; +use crate::database::{stream_query_results, DbItem, row_to_json, add_value_to_map}; use crate::render::RenderContext; use crate::{AppState, CONFIG_DIR, WEB_ROOT}; use actix_web::dev::Payload; @@ -135,17 +135,19 @@ async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> Strin .map(|q| q.into_inner()) .unwrap_or_default(); let client_ip = req.peer_addr().map(|addr| addr.ip()); - let form = Form::::from_request(req, &mut payload) + let form = Form::>::from_request(req, &mut payload) .await .map(|form| form.into_inner()) - .unwrap_or_default(); + .unwrap_or_default() + .into_iter() + .fold(serde_json::Map::new(), add_value_to_map); json!({ "headers": headers, "client_ip": client_ip, "query": query, "form": form }) - .to_string() + .to_string() } async fn render_sql( From 21498509afb64f67f0ca96f7b49ce078039f0c4a Mon Sep 17 00:00:00 2001 From: lovasoa Date: Fri, 26 Aug 2022 15:32:02 +0200 Subject: [PATCH 057/278] Handle arrays in form elements --- src/http.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/http.rs b/src/http.rs index 6a6b059b..dc513331 100644 --- a/src/http.rs +++ b/src/http.rs @@ -140,6 +140,9 @@ async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> Strin .map(|form| form.into_inner()) .unwrap_or_default() .into_iter() + .map(|(key, value)| + if key.ends_with("[]") { (key, vec![value].into()) } else { (key, value) } + ) .fold(serde_json::Map::new(), add_value_to_map); json!({ "headers": headers, From 993b04e7b727b7383f171c7c6451e5556385a156 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sat, 27 Aug 2022 11:27:28 +0200 Subject: [PATCH 058/278] Add a data grid component --- documentation.sql | 29 ++++++++++++++++++++++- sqlsite/templates/datagrid.handlebars | 34 +++++++++++++++++++++++++++ sqlsite/templates/shell.handlebars | 7 +++--- 3 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 sqlsite/templates/datagrid.handlebars diff --git a/documentation.sql b/documentation.sql index e99d8595..d923edbc 100644 --- a/documentation.sql +++ b/documentation.sql @@ -69,6 +69,33 @@ INSERT INTO example(component, description, properties) VALUES '{"title":"Google", "link":"https://google.com", "description": "A search engine", "color": "red", "icon":"brand-google", "footer": "Owned by Alphabet Inc."}, '|| '{"title":"Wikipedia", "link":"https://wikipedia.org", "description": "An encyclopedia", "color": "blue", "icon":"world", "active": true, "footer": "Owned by the Wikimedia Foundation"}]')); + +INSERT INTO component(name, icon, description) VALUES + ('datagrid', 'grid-dots', 'Display small pieces of information in a clear and readable way.'); +INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'datagrid', * FROM (VALUES + -- top level + ('title', 'Text header at the top of the list of cards.', 'TEXT', TRUE, TRUE), + -- item level + ('title', 'Name of the card, displayed at the top.', 'TEXT', FALSE, FALSE), + ('description', 'The body of the card.', 'TEXT', FALSE, TRUE), + ('footer', 'Muted text to display at the bottom of the card.', 'TEXT', FALSE, TRUE), + ('link', 'An URL to which the user should be taken when they click on the card.', 'URL', FALSE, TRUE), + ('icon', 'An icon name (from tabler-icons.io) to display on the left side of the card.', 'TEXT', FALSE, TRUE), + ('color', 'The name of a color, to be displayed on the left of the card to highlight it.', 'TEXT', FALSE, TRUE), + ('active', 'Whether this item in the grid is considered "active". Active items are displayed more prominently.', 'BOOLEAN', FALSE, TRUE) +); + +INSERT INTO example(component, description, properties) VALUES + ('datagrid', 'Just some sections of information.', json('[{"component":"datagrid"},{"title":"Language","description":"SQL"},{"title":"Creation date","description":"1974"}, {"title":"Language family","description":"Query language"}]')), + ('datagrid', 'A beautiful data grid with nice colors and icons.', + json('[{"component":"datagrid", "title":"User"}, '|| + '{"title": "Pseudo", "description": "lovasoa"},' || + '{"title": "Status", "description": "Active", "color": "green"},' || + '{"title": "Email Status", "description": "Validated", "icon": "check"},' || + '{"title": "Personal page", "description": "ophir.dev", "link": "https://ophir.dev/"},' || + '{"title":"Search engine", "link":"https://google.com", "description": "Google", "color": "red", "icon":"brand-google", "footer": "Owned by Alphabet Inc."}, '|| + '{"title":"Encyclopedia", "link":"https://wikipedia.org", "description": "Wikipedia", "color": "blue", "icon":"world", "active": true, "footer": "Owned by the Wikimedia Foundation"}]')); + INSERT INTO component(name, icon, description) VALUES ('text', 'align-left', 'A paragraph of text. The entire component will render as a single paragraph, with each item being rendered as a span of text inside it, the styling of which can be customized using parameters.'); @@ -204,7 +231,7 @@ INSERT INTO example(component, description, properties) VALUES ('dynamic', 'Rendering a text paragraph dynamically.', json('[{"component":"dynamic", "properties": "[{\"component\":\"text\"}, {\"contents\":\"Blah\", \"bold\":true}]"}]')); INSERT INTO component(name, icon, description) VALUES - ('shell', 'file-dots', 'Personalize the "shell" surrounding your page contents. Used to set properties for the entire page. This component should never be manually selected with "SELECT ''shell'' as component". Instead, its top-level properties should be included directly in the very first SELECT statement in your SQL file.'); + ('shell', 'layout-navbar', 'Personalize the "shell" surrounding your page contents. Used to set properties for the entire page. This component should never be manually selected with "SELECT ''shell'' as component". Instead, its top-level properties should be included directly in the very first SELECT statement in your SQL file.'); INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'shell', * FROM (VALUES -- top level diff --git a/sqlsite/templates/datagrid.handlebars b/sqlsite/templates/datagrid.handlebars new file mode 100644 index 00000000..caf2e221 --- /dev/null +++ b/sqlsite/templates/datagrid.handlebars @@ -0,0 +1,34 @@ + diff --git a/sqlsite/templates/shell.handlebars b/sqlsite/templates/shell.handlebars index 7c50c2ec..0f301198 100644 --- a/sqlsite/templates/shell.handlebars +++ b/sqlsite/templates/shell.handlebars @@ -2,10 +2,11 @@ - + {{default title "SQLPage"}} - {{#if norobot}}{{/if}} + {{#if norobot}} + {{/if}} - + From 2222e0498ada934ecef5bbcb1a7d51ed0bb380b0 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sun, 28 Aug 2022 01:04:10 +0200 Subject: [PATCH 060/278] rename sqlsite to sqlpage --- Cargo.lock | 2 +- Cargo.toml | 2 +- README.md | 2 +- {sqlsite => sqlpage}/migrations/0_base_schema.sql | 0 {sqlsite => sqlpage}/templates/card.handlebars | 0 {sqlsite => sqlpage}/templates/chart.handlebars | 0 {sqlsite => sqlpage}/templates/chart.js | 0 {sqlsite => sqlpage}/templates/code.handlebars | 0 {sqlsite => sqlpage}/templates/csv.handlebars | 0 {sqlsite => sqlpage}/templates/datagrid.handlebars | 0 {sqlsite => sqlpage}/templates/debug.handlebars | 0 {sqlsite => sqlpage}/templates/default.handlebars | 0 {sqlsite => sqlpage}/templates/error.handlebars | 0 {sqlsite => sqlpage}/templates/form.handlebars | 0 {sqlsite => sqlpage}/templates/list.handlebars | 0 {sqlsite => sqlpage}/templates/shell.handlebars | 0 {sqlsite => sqlpage}/templates/table.handlebars | 0 {sqlsite => sqlpage}/templates/table.js | 0 {sqlsite => sqlpage}/templates/text.handlebars | 0 {sqlsite => sqlpage}/templates/title.handlebars | 0 src/main.rs | 6 +++--- src/templates.rs | 4 ++-- 22 files changed, 8 insertions(+), 8 deletions(-) rename {sqlsite => sqlpage}/migrations/0_base_schema.sql (100%) rename {sqlsite => sqlpage}/templates/card.handlebars (100%) rename {sqlsite => sqlpage}/templates/chart.handlebars (100%) rename {sqlsite => sqlpage}/templates/chart.js (100%) rename {sqlsite => sqlpage}/templates/code.handlebars (100%) rename {sqlsite => sqlpage}/templates/csv.handlebars (100%) rename {sqlsite => sqlpage}/templates/datagrid.handlebars (100%) rename {sqlsite => sqlpage}/templates/debug.handlebars (100%) rename {sqlsite => sqlpage}/templates/default.handlebars (100%) rename {sqlsite => sqlpage}/templates/error.handlebars (100%) rename {sqlsite => sqlpage}/templates/form.handlebars (100%) rename {sqlsite => sqlpage}/templates/list.handlebars (100%) rename {sqlsite => sqlpage}/templates/shell.handlebars (100%) rename {sqlsite => sqlpage}/templates/table.handlebars (100%) rename {sqlsite => sqlpage}/templates/table.js (100%) rename {sqlsite => sqlpage}/templates/text.handlebars (100%) rename {sqlsite => sqlpage}/templates/title.handlebars (100%) diff --git a/Cargo.lock b/Cargo.lock index 3f4710a2..7b662cae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1736,7 +1736,7 @@ dependencies = [ ] [[package]] -name = "sqlsite" +name = "sqlpage" version = "0.1.0" dependencies = [ "actix-files", diff --git a/Cargo.toml b/Cargo.toml index 29fca426..66581631 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "sqlsite" +name = "sqlpage" version = "0.1.0" edition = "2021" diff --git a/README.md b/README.md index 630270a5..bec38b70 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# sqlsite +# sqlpage diff --git a/sqlsite/migrations/0_base_schema.sql b/sqlpage/migrations/0_base_schema.sql similarity index 100% rename from sqlsite/migrations/0_base_schema.sql rename to sqlpage/migrations/0_base_schema.sql diff --git a/sqlsite/templates/card.handlebars b/sqlpage/templates/card.handlebars similarity index 100% rename from sqlsite/templates/card.handlebars rename to sqlpage/templates/card.handlebars diff --git a/sqlsite/templates/chart.handlebars b/sqlpage/templates/chart.handlebars similarity index 100% rename from sqlsite/templates/chart.handlebars rename to sqlpage/templates/chart.handlebars diff --git a/sqlsite/templates/chart.js b/sqlpage/templates/chart.js similarity index 100% rename from sqlsite/templates/chart.js rename to sqlpage/templates/chart.js diff --git a/sqlsite/templates/code.handlebars b/sqlpage/templates/code.handlebars similarity index 100% rename from sqlsite/templates/code.handlebars rename to sqlpage/templates/code.handlebars diff --git a/sqlsite/templates/csv.handlebars b/sqlpage/templates/csv.handlebars similarity index 100% rename from sqlsite/templates/csv.handlebars rename to sqlpage/templates/csv.handlebars diff --git a/sqlsite/templates/datagrid.handlebars b/sqlpage/templates/datagrid.handlebars similarity index 100% rename from sqlsite/templates/datagrid.handlebars rename to sqlpage/templates/datagrid.handlebars diff --git a/sqlsite/templates/debug.handlebars b/sqlpage/templates/debug.handlebars similarity index 100% rename from sqlsite/templates/debug.handlebars rename to sqlpage/templates/debug.handlebars diff --git a/sqlsite/templates/default.handlebars b/sqlpage/templates/default.handlebars similarity index 100% rename from sqlsite/templates/default.handlebars rename to sqlpage/templates/default.handlebars diff --git a/sqlsite/templates/error.handlebars b/sqlpage/templates/error.handlebars similarity index 100% rename from sqlsite/templates/error.handlebars rename to sqlpage/templates/error.handlebars diff --git a/sqlsite/templates/form.handlebars b/sqlpage/templates/form.handlebars similarity index 100% rename from sqlsite/templates/form.handlebars rename to sqlpage/templates/form.handlebars diff --git a/sqlsite/templates/list.handlebars b/sqlpage/templates/list.handlebars similarity index 100% rename from sqlsite/templates/list.handlebars rename to sqlpage/templates/list.handlebars diff --git a/sqlsite/templates/shell.handlebars b/sqlpage/templates/shell.handlebars similarity index 100% rename from sqlsite/templates/shell.handlebars rename to sqlpage/templates/shell.handlebars diff --git a/sqlsite/templates/table.handlebars b/sqlpage/templates/table.handlebars similarity index 100% rename from sqlsite/templates/table.handlebars rename to sqlpage/templates/table.handlebars diff --git a/sqlsite/templates/table.js b/sqlpage/templates/table.js similarity index 100% rename from sqlsite/templates/table.js rename to sqlpage/templates/table.js diff --git a/sqlsite/templates/text.handlebars b/sqlpage/templates/text.handlebars similarity index 100% rename from sqlsite/templates/text.handlebars rename to sqlpage/templates/text.handlebars diff --git a/sqlsite/templates/title.handlebars b/sqlpage/templates/title.handlebars similarity index 100% rename from sqlsite/templates/title.handlebars rename to sqlpage/templates/title.handlebars diff --git a/src/main.rs b/src/main.rs index 94f133e7..54723582 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,9 +10,9 @@ use std::path::Path; use templates::AllTemplates; const WEB_ROOT: &str = "."; -const CONFIG_DIR: &str = "sqlsite"; -const TEMPLATES_DIR: &str = "sqlsite/templates"; -const MIGRATIONS_DIR: &str = "sqlsite/migrations"; +const CONFIG_DIR: &str = "sqlpage"; +const TEMPLATES_DIR: &str = "sqlpage/templates"; +const MIGRATIONS_DIR: &str = "sqlpage/migrations"; pub struct AppState { db: AnyPool, diff --git a/src/templates.rs b/src/templates.rs index fa00f1af..7452bd02 100644 --- a/src/templates.rs +++ b/src/templates.rs @@ -149,12 +149,12 @@ impl AllTemplates { }; this.register_split( "shell", - include_str!("../sqlsite/templates/shell.handlebars"), + include_str!("../sqlpage/templates/shell.handlebars"), ) .expect("Embedded shell template contains an error"); this.register_split( "error", - include_str!("../sqlsite/templates/error.handlebars"), + include_str!("../sqlpage/templates/error.handlebars"), ) .expect("Embedded shell template contains an error"); this.register_dir(); From 9862be28ce1d6f6a90e82066f1312a458bf8c1ed Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sun, 28 Aug 2022 01:21:08 +0200 Subject: [PATCH 061/278] finish the datagrid component --- documentation.sql | 20 ++++++++++---------- sqlpage/templates/datagrid.handlebars | 7 +++++-- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/documentation.sql b/documentation.sql index d923edbc..87deb3d6 100644 --- a/documentation.sql +++ b/documentation.sql @@ -71,17 +71,17 @@ INSERT INTO example(component, description, properties) VALUES INSERT INTO component(name, icon, description) VALUES - ('datagrid', 'grid-dots', 'Display small pieces of information in a clear and readable way.'); + ('datagrid', 'grid-dots', 'Display small pieces of information in a clear and readable way. Each item has a name and is associated with a value.'); INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'datagrid', * FROM (VALUES -- top level - ('title', 'Text header at the top of the list of cards.', 'TEXT', TRUE, TRUE), + ('title', 'Text header at the top of the data grid.', 'TEXT', TRUE, TRUE), -- item level - ('title', 'Name of the card, displayed at the top.', 'TEXT', FALSE, FALSE), - ('description', 'The body of the card.', 'TEXT', FALSE, TRUE), - ('footer', 'Muted text to display at the bottom of the card.', 'TEXT', FALSE, TRUE), - ('link', 'An URL to which the user should be taken when they click on the card.', 'URL', FALSE, TRUE), - ('icon', 'An icon name (from tabler-icons.io) to display on the left side of the card.', 'TEXT', FALSE, TRUE), - ('color', 'The name of a color, to be displayed on the left of the card to highlight it.', 'TEXT', FALSE, TRUE), + ('title', 'Name of the piece of information.', 'TEXT', FALSE, FALSE), + ('description', 'Value to display below the name.', 'TEXT', FALSE, TRUE), + ('footer', 'Muted text to display below the value.', 'TEXT', FALSE, TRUE), + ('link', 'A target URL to which the user should be taken when they click on the value.', 'URL', FALSE, TRUE), + ('icon', 'An icon name (from tabler-icons.io) to display on the left side of the value.', 'TEXT', FALSE, TRUE), + ('color', 'If set to a color name, the value will be displayed in a pill of that color.', 'TEXT', FALSE, TRUE), ('active', 'Whether this item in the grid is considered "active". Active items are displayed more prominently.', 'BOOLEAN', FALSE, TRUE) ); @@ -91,10 +91,10 @@ INSERT INTO example(component, description, properties) VALUES json('[{"component":"datagrid", "title":"User"}, '|| '{"title": "Pseudo", "description": "lovasoa"},' || '{"title": "Status", "description": "Active", "color": "green"},' || - '{"title": "Email Status", "description": "Validated", "icon": "check"},' || + '{"title": "Email Status", "description": "Validated", "icon": "check", "active": true},' || '{"title": "Personal page", "description": "ophir.dev", "link": "https://ophir.dev/"},' || '{"title":"Search engine", "link":"https://google.com", "description": "Google", "color": "red", "icon":"brand-google", "footer": "Owned by Alphabet Inc."}, '|| - '{"title":"Encyclopedia", "link":"https://wikipedia.org", "description": "Wikipedia", "color": "blue", "icon":"world", "active": true, "footer": "Owned by the Wikimedia Foundation"}]')); + '{"title":"Encyclopedia", "link":"https://wikipedia.org", "description": "Wikipedia", "color": "blue", "icon":"world", "footer": "Owned by the Wikimedia Foundation"}]')); INSERT INTO component(name, icon, description) VALUES ('text', 'align-left', 'A paragraph of text. The entire component will render as a single paragraph, with each item being rendered as a span of text inside it, the styling of which can be customized using parameters.'); diff --git a/sqlpage/templates/datagrid.handlebars b/sqlpage/templates/datagrid.handlebars index caf2e221..0ab70bb0 100644 --- a/sqlpage/templates/datagrid.handlebars +++ b/sqlpage/templates/datagrid.handlebars @@ -9,10 +9,10 @@ {{#each_row}}
    {{title}}
    -
    +
    {{#if link}}{{/if}} {{#if color}} - + {{/if}} {{#if icon}} @@ -26,6 +26,9 @@ {{/if}} {{#if link}}{{/if}} + {{#if footer}} + {{footer}} + {{/if}}
    {{/each_row}} From b61532caa67cb9571c94e5a14865955724593152 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sun, 28 Aug 2022 10:46:11 +0200 Subject: [PATCH 062/278] README.md --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index bec38b70..1635f9f3 100644 --- a/README.md +++ b/README.md @@ -1 +1,6 @@ -# sqlpage +# SQLpage + +SQLPage is a full-**SQL** webapp builder. +It is meant for data scientists, analysts, and business intelligence teams +to build powerful data-centric applications quickly, +without worrying about any of the traditional web programming languages and concepts. From aff8b6c9722e8e1fe7ed068ac2cd7f2d56eda6d2 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Sun, 28 Aug 2022 19:43:11 +0200 Subject: [PATCH 063/278] initial basic README.md --- README.md | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1635f9f3..2ef8d7a8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,35 @@ # SQLpage -SQLPage is a full-**SQL** webapp builder. +SQLPage is a full-[**SQL**](https://en.wikipedia.org/wiki/SQL) webapp builder. It is meant for data scientists, analysts, and business intelligence teams to build powerful data-centric applications quickly, without worrying about any of the traditional web programming languages and concepts. + +With SQLPage, you write simple `.sql` files containing queries to your database +to select, group, update, insert, and delete your data, and you get good-looking clean webpages +displaying your data as text, lists, grids, plots, and forms. + +## Supported databases + + - [sqlite](https://www.sqlite.org/index.html) + - [PostgreSQL](https://www.postgresql.org/), and other compatible databases such as *CockroachDB* and *Aurora*. + - [MySQL](https://www.mysql.com/), and other compatible databases such as *MariaDB* and *TiDB*. + +## How it works + +SQLPage is a [web server](https://en.wikipedia.org/wiki/Web_server) written in +[rust](https://en.wikipedia.org/wiki/Rust_(programming_language)). +When it receives a request to a URL ending in `.sql`, it finds the corresponding +SQL file, runs it on the database, +passing it information from the web request as an SQL statement parameter. +When the database starts returning rows for the query, +SQLPage maps each piece of information in the row to a parameter +in one of its pre-defined components' templates, and streams the result back +to the browser. + +### Technologies and libraries used + + - [actix web](https://actix.rs/) handles HTTP requests at an incredible speed, + - [tabler](https://preview.tabler.io) handles the styling for professional-looking clean components, + - [tabler icons](https://tabler-icons.io) is a large set of icons you can select directly from your SQL, + - [handlebars](https://handlebarsjs.com/guide/) render HTML pages from readable templates for each component. \ No newline at end of file From 34625da314c899854795600401601583250e8fec Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 29 Aug 2022 19:19:49 +0200 Subject: [PATCH 064/278] add dockerfile --- .dockerignore | 2 ++ .gitignore | 1 + Dockerfile | 13 +++++++++++++ 3 files changed, 16 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..af1c791a --- /dev/null +++ b/.dockerignore @@ -0,0 +1,2 @@ +/target +site.db \ No newline at end of file diff --git a/.gitignore b/.gitignore index ea8c4bf7..af1c791a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /target +site.db \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..7beea074 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM rust:1.63 as builder +WORKDIR /usr/src/sqlpage +RUN cargo init . +COPY Cargo.toml Cargo.lock . +RUN cargo build --release +COPY . . +RUN cargo install --path . + +FROM debian:buster-slim +RUN rm -rf /var/lib/apt/lists/* +COPY --from=builder /usr/local/cargo/bin/sqlpage /usr/local/bin/sqlpage +USER sqlpage +CMD ["sqlpage"] \ No newline at end of file From 03fc4914155b3e0c4260097fa9482b038f373855 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 29 Aug 2022 19:20:03 +0200 Subject: [PATCH 065/278] add steps component --- documentation.sql | 25 +++++++++++++++++++++++++ sqlpage/templates/steps.handlebars | 17 +++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 sqlpage/templates/steps.handlebars diff --git a/documentation.sql b/documentation.sql index 87deb3d6..665e4b58 100644 --- a/documentation.sql +++ b/documentation.sql @@ -96,6 +96,31 @@ INSERT INTO example(component, description, properties) VALUES '{"title":"Search engine", "link":"https://google.com", "description": "Google", "color": "red", "icon":"brand-google", "footer": "Owned by Alphabet Inc."}, '|| '{"title":"Encyclopedia", "link":"https://wikipedia.org", "description": "Wikipedia", "color": "blue", "icon":"world", "footer": "Owned by the Wikimedia Foundation"}]')); + +INSERT INTO component(name, icon, description) VALUES + ('steps', 'dots-circle-horizontal', 'Guide users through multi-stage processes, displaying a clear list of previous and future steps.'); +INSERT INTO parameter(component, name, description, type, top_level, optional) SELECT 'steps', * FROM (VALUES + -- top level + ('color', 'Color of the bars displayed between steps.', 'TEXT', TRUE, TRUE), + ('counter', 'Display the number of the step on top of its name.', 'TEXT', TRUE, TRUE), + -- item level + ('title', 'Name of the step.', 'TEXT', FALSE, TRUE), + ('description', 'Tooltip to display when the user passes their mouse over the step''s name.', 'TEXT', FALSE, TRUE), + ('link', 'A target URL to which the user should be taken when they click on the step.', 'URL', FALSE, TRUE), + ('icon', 'An icon name (from tabler-icons.io) to display on the left side of the step name.', 'TEXT', FALSE, TRUE), + ('active', 'Whether this item in the grid is considered "active". Active items are displayed more prominently.', 'BOOLEAN', FALSE, TRUE) +); + +INSERT INTO example(component, description, properties) VALUES + ('steps', 'Online store checkout steps.', json('[{"component":"steps"},{"title":"Shopping"},{"title":"Store pickup"}, {"title":"Payment","active":true},{"title":"Review & Order"}]')), + ('steps', 'A progress indicator with custom color, auto-generated step numbers, icons, and description tooltips.', + json('[{"component":"steps", "counter": true, "color":"purple"}, '|| + '{"title": "Registration form", "icon":"forms", "link": "https://github.com/lovasoa/sqlpage", "description": "Initial account data creation."},' || + '{"title": "Email confirmation", "icon": "mail", "link": "https://sql.ophir.dev", "description": "Confirm your email by clicking on a link in a validation email."},' || + '{"title": "ID verification", "description": "Checking personal information", "icon": "user", "link": "#"},' || + '{"title": "Final account approval", "description": "ophir.dev", "link": "https://ophir.dev/", "icon":"eye-check", "active": true},' || + '{"title":"Account creation", "icon":"check"}]')); + INSERT INTO component(name, icon, description) VALUES ('text', 'align-left', 'A paragraph of text. The entire component will render as a single paragraph, with each item being rendered as a span of text inside it, the styling of which can be customized using parameters.'); diff --git a/sqlpage/templates/steps.handlebars b/sqlpage/templates/steps.handlebars new file mode 100644 index 00000000..5e6632f0 --- /dev/null +++ b/sqlpage/templates/steps.handlebars @@ -0,0 +1,17 @@ +
    + {{#each_row}} + {{#if link}} + + {{#if icon}} + + {{/if}} + {{title}} + {{#if link}}{{else}}{{/if}} + {{/each_row}} +
    \ No newline at end of file From 33a274e15bbfd620383699f300c293706de74270 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 29 Aug 2022 21:32:06 +0200 Subject: [PATCH 066/278] better separation between http server and database --- src/database.rs | 71 ++++++++++++++++++++++++++----------------------- src/http.rs | 19 ++++++++----- src/main.rs | 13 ++++----- src/utils.rs | 19 +++++++++++++ 4 files changed, 76 insertions(+), 46 deletions(-) create mode 100644 src/utils.rs diff --git a/src/database.rs b/src/database.rs index 5ca71ae2..24f24636 100644 --- a/src/database.rs +++ b/src/database.rs @@ -1,10 +1,11 @@ use futures_util::stream::{self, Stream}; use futures_util::StreamExt; -use std::future::ready; use serde_json::{Map, Value}; +use std::future::ready; use sqlx::any::{AnyArguments, AnyQueryResult, AnyRow}; use sqlx::{Arguments, Column, Decode, Either, Row}; +use crate::utils::add_value_to_map; pub fn stream_query_results<'a>( db: &'a sqlx::AnyPool, @@ -33,7 +34,6 @@ pub enum DbItem { Error(sqlx::Error), } - pub fn row_to_json(row: AnyRow) -> Value { use sqlx::{TypeInfo, ValueRef}; use Value::{Null, Object}; @@ -45,17 +45,30 @@ pub fn row_to_json(row: AnyRow) -> Value { let value: Value = match row.try_get_raw(col.ordinal()) { Ok(raw_value) if !raw_value.is_null() => match raw_value.type_info().name() { "REAL" | "FLOAT" | "NUMERIC" | "FLOAT4" | "FLOAT8" | "DOUBLE" => { - >::decode(raw_value).unwrap_or(f64::NAN).into() + >::decode(raw_value) + .unwrap_or(f64::NAN) + .into() } - "INT" | "INTEGER" | "INT8" | "INT2" | "INT4" | "TINYINT" | "SMALLINT" | "BIGINT" => { - >::decode(raw_value).unwrap_or_default().into() + "INT" | "INTEGER" | "INT8" | "INT2" | "INT4" | "TINYINT" | "SMALLINT" + | "BIGINT" => >::decode(raw_value) + .unwrap_or_default() + .into(), + "BOOL" | "BOOLEAN" => >::decode(raw_value) + .unwrap_or_default() + .into(), + "JSON" | "JSON[]" | "JSONB" | "JSONB[]" => { + <&[u8] as Decode>::decode(raw_value) + .and_then(|rv| { + serde_json::from_slice::(rv).map_err(|e| { + Box::new(e) as Box + }) + }) + .unwrap_or_default() } - "BOOL" | "BOOLEAN" => >::decode(raw_value).unwrap_or_default().into(), - "JSON" | "JSON[]" | "JSONB" | "JSONB[]" => <&[u8] as Decode>::decode(raw_value) - .and_then(|rv| serde_json::from_slice::(rv).map_err(|e| Box::new(e) as Box)) - .unwrap_or_default(), // Deserialize as a string by default - _ => >::decode(raw_value).unwrap_or_default().into(), + _ => >::decode(raw_value) + .unwrap_or_default() + .into(), }, Ok(_null) => Null, Err(e) => { @@ -68,37 +81,29 @@ pub fn row_to_json(row: AnyRow) -> Value { Object(map) } -pub fn add_value_to_map(mut map: Map, (key, value): (String, Value)) -> Map { - use Value::{Array}; - use serde_json::map::Entry::*; - match map.entry(key) { - Vacant(vacant) => { vacant.insert(value); } - Occupied(mut old_entry) => match old_entry.get_mut() { - Array(old_array) => { old_array.push(value) } - old_scalar => { - *old_scalar = Array(vec![old_scalar.take(), value]) - } - } - } - map -} - #[actix_web::test] async fn test_row_to_json() -> anyhow::Result<()> { use sqlx::Connection; let mut c = sqlx::AnyConnection::connect("sqlite://:memory:").await?; - let row = sqlx::query("SELECT \ + let row = sqlx::query( + "SELECT \ 3.14159 as one_value, \ 1 as two_values, \ 2 as two_values, \ 'x' as three_values, \ 'y' as three_values, \ 'z' as three_values \ - ").fetch_one(&mut c).await?; - assert_eq!(row_to_json(row), serde_json::json!({ - "one_value": 3.14159, - "two_values": [1,2], - "three_values": ["x","y","z"], - })); + ", + ) + .fetch_one(&mut c) + .await?; + assert_eq!( + row_to_json(row), + serde_json::json!({ + "one_value": 3.14159, + "two_values": [1,2], + "three_values": ["x","y","z"], + }) + ); Ok(()) -} \ No newline at end of file +} diff --git a/src/http.rs b/src/http.rs index dc513331..63ec18cb 100644 --- a/src/http.rs +++ b/src/http.rs @@ -1,6 +1,7 @@ -use crate::database::{stream_query_results, DbItem, row_to_json, add_value_to_map}; +use crate::database::{row_to_json, stream_query_results, DbItem}; use crate::render::RenderContext; -use crate::{AppState, CONFIG_DIR, WEB_ROOT}; +use crate::utils::add_value_to_map; +use crate::{AppState, Config, CONFIG_DIR, WEB_ROOT}; use actix_web::dev::Payload; use actix_web::error::ErrorInternalServerError; use actix_web::http::Method; @@ -140,9 +141,13 @@ async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> Strin .map(|form| form.into_inner()) .unwrap_or_default() .into_iter() - .map(|(key, value)| - if key.ends_with("[]") { (key, vec![value].into()) } else { (key, value) } - ) + .map(|(key, value)| { + if key.ends_with("[]") { + (key, vec![value].into()) + } else { + (key, value) + } + }) .fold(serde_json::Map::new(), add_value_to_map); json!({ "headers": headers, @@ -187,8 +192,8 @@ async fn postprocess_response( Ok(ServiceResponse::new(req, new_resp)) } -pub async fn run_server(state: AppState) -> std::io::Result<()> { - let listen_on = state.listen_on; +pub async fn run_server(config: Config, state: AppState) -> std::io::Result<()> { + let listen_on = config.listen_on; let app_state = web::Data::new(state); HttpServer::new(move || { diff --git a/src/main.rs b/src/main.rs index 54723582..995e37dd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,7 @@ mod database; mod http; mod render; mod templates; +mod utils; use sqlx::any::AnyConnectOptions; use sqlx::migrate::Migrator; @@ -17,6 +18,9 @@ const MIGRATIONS_DIR: &str = "sqlpage/migrations"; pub struct AppState { db: AnyPool, all_templates: AllTemplates, +} + +pub struct Config { listen_on: std::net::SocketAddr, } @@ -59,12 +63,9 @@ async fn main() -> std::io::Result<()> { log::info!("Starting server on {}", listen_on); let all_templates = AllTemplates::init(); - let state = AppState { - db, - listen_on, - all_templates, - }; - http::run_server(state).await + let state = AppState { db, all_templates }; + let config = Config { listen_on }; + http::run_server(config, state).await } async fn apply_migrations(db: &AnyPool) -> anyhow::Result<()> { diff --git a/src/utils.rs b/src/utils.rs new file mode 100644 index 00000000..cf201d0e --- /dev/null +++ b/src/utils.rs @@ -0,0 +1,19 @@ +use serde_json::{Map, Value}; + +pub fn add_value_to_map( + mut map: Map, + (key, value): (String, Value), +) -> Map { + use serde_json::map::Entry::*; + use Value::Array; + match map.entry(key) { + Vacant(vacant) => { + vacant.insert(value); + } + Occupied(mut old_entry) => match old_entry.get_mut() { + Array(old_array) => old_array.push(value), + old_scalar => *old_scalar = Array(vec![old_scalar.take(), value]), + }, + } + map +} \ No newline at end of file From d296075ca8ddd2dc9e2370e3a380004d9c96236a Mon Sep 17 00:00:00 2001 From: Ophir LOJKINE Date: Mon, 29 Aug 2022 21:38:14 +0200 Subject: [PATCH 067/278] Add ci --- .github/workflows/rust.yml | 64 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 .github/workflows/rust.yml diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 00000000..2875c7be --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,64 @@ +on: [push, pull_request] + +name: Continuous integration + +jobs: + check: + name: Check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + - uses: actions-rs/cargo@v1 + with: + command: check + + test: + name: Test Suite + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + - uses: actions-rs/cargo@v1 + with: + command: test + + fmt: + name: Rustfmt + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + - run: rustup component add rustfmt + - uses: actions-rs/cargo@v1 + with: + command: fmt + args: --all -- --check + + clippy: + name: Clippy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + profile: minimal + toolchain: stable + override: true + - run: rustup component add clippy + - uses: actions-rs/cargo@v1 + with: + command: clippy + args: -- -D warnings From 1bf047463baeae12a1e90edcf55080521824a1d2 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 29 Aug 2022 21:40:51 +0200 Subject: [PATCH 068/278] cargo fmt --all --- src/database.rs | 18 +++++++++--------- src/http.rs | 2 +- src/utils.rs | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/database.rs b/src/database.rs index 24f24636..ff3d79b6 100644 --- a/src/database.rs +++ b/src/database.rs @@ -3,15 +3,15 @@ use futures_util::StreamExt; use serde_json::{Map, Value}; use std::future::ready; +use crate::utils::add_value_to_map; use sqlx::any::{AnyArguments, AnyQueryResult, AnyRow}; use sqlx::{Arguments, Column, Decode, Either, Row}; -use crate::utils::add_value_to_map; pub fn stream_query_results<'a>( db: &'a sqlx::AnyPool, sql_source: &'a [u8], argument: &'a str, -) -> impl Stream + 'a { +) -> impl Stream + 'a { let mut arguments = AnyArguments::default(); arguments.add(argument); match std::str::from_utf8(sql_source) { @@ -21,11 +21,11 @@ pub fn stream_query_results<'a>( stream::once(ready(Err(error))).boxed() } } - .map(|res| match res { - Ok(Either::Right(r)) => DbItem::Row(r), - Ok(Either::Left(r)) => DbItem::FinishedQuery(r), - Err(e) => DbItem::Error(e), - }) + .map(|res| match res { + Ok(Either::Right(r)) => DbItem::Row(r), + Ok(Either::Left(r)) => DbItem::FinishedQuery(r), + Err(e) => DbItem::Error(e), + }) } pub enum DbItem { @@ -95,8 +95,8 @@ async fn test_row_to_json() -> anyhow::Result<()> { 'z' as three_values \ ", ) - .fetch_one(&mut c) - .await?; + .fetch_one(&mut c) + .await?; assert_eq!( row_to_json(row), serde_json::json!({ diff --git a/src/http.rs b/src/http.rs index 63ec18cb..6974fe32 100644 --- a/src/http.rs +++ b/src/http.rs @@ -155,7 +155,7 @@ async fn request_argument_json(req: &HttpRequest, mut payload: Payload) -> Strin "query": query, "form": form }) - .to_string() + .to_string() } async fn render_sql( diff --git a/src/utils.rs b/src/utils.rs index cf201d0e..9dfeb5bb 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -16,4 +16,4 @@ pub fn add_value_to_map( }, } map -} \ No newline at end of file +} From e9be113ee09dd560d1cc68cea839ec040ad63df4 Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 29 Aug 2022 23:24:44 +0200 Subject: [PATCH 069/278] prevent building docker image when code is incorrect --- Dockerfile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7beea074..32716b7a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,10 +1,14 @@ FROM rust:1.63 as builder +RUN rustup component add clippy rustfmt WORKDIR /usr/src/sqlpage RUN cargo init . COPY Cargo.toml Cargo.lock . RUN cargo build --release COPY . . -RUN cargo install --path . +RUN cargo check --release && \ + cargo clippy --release && \ + cargo fmt --all -- --check && \ + cargo install --path . FROM debian:buster-slim RUN rm -rf /var/lib/apt/lists/* From 0301fd185ea96e2caf3e2caec8cb439be9098e7e Mon Sep 17 00:00:00 2001 From: lovasoa Date: Mon, 29 Aug 2022 23:56:54 +0200 Subject: [PATCH 070/278] add instructions and video to README --- README.md | 19 ++++++++++++++----- docs/sqlpage.gif | Bin 0 -> 6108473 bytes docs/sqlpage.mp4 | Bin 0 -> 949091 bytes 3 files changed, 14 insertions(+), 5 deletions(-) create mode 100644 docs/sqlpage.gif create mode 100644 docs/sqlpage.mp4 diff --git a/README.md b/README.md index 2ef8d7a8..009c4142 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ -# SQLpage +#
    SQLpage
    -SQLPage is a full-[**SQL**](https://en.wikipedia.org/wiki/SQL) webapp builder. +[![A short video explaining the concept of sqlpage](./docs/sqlpage.gif)](./docs/sqlpage.mp4) + +SQLPage is an [**SQL**](https://en.wikipedia.org/wiki/SQL)-only webapp builder. It is meant for data scientists, analysts, and business intelligence teams to build powerful data-centric applications quickly, without worrying about any of the traditional web programming languages and concepts. @@ -21,13 +23,20 @@ SQLPage is a [web server](https://en.wikipedia.org/wiki/Web_server) written in [rust](https://en.wikipedia.org/wiki/Rust_(programming_language)). When it receives a request to a URL ending in `.sql`, it finds the corresponding SQL file, runs it on the database, -passing it information from the web request as an SQL statement parameter. +passing it information from the web request as SQL statement parameters. When the database starts returning rows for the query, SQLPage maps each piece of information in the row to a parameter in one of its pre-defined components' templates, and streams the result back -to the browser. +to the user's browser. + +## Get started + + - [Install docker](https://docs.docker.com/get-docker/) + - In a terminal, run the following command: `docker run -it --name sqlpage lovasoa/sqlpage --port 8080:8080 --volume "$(pwd):/var/www"` + - Create a file called index.sql with the contents from [this example](./index.sql) + - Open https://localhost:8080 in your browser -### Technologies and libraries used +## Technologies and libraries used - [actix web](https://actix.rs/) handles HTTP requests at an incredible speed, - [tabler](https://preview.tabler.io) handles the styling for professional-looking clean components, diff --git a/docs/sqlpage.gif b/docs/sqlpage.gif new file mode 100644 index 0000000000000000000000000000000000000000..f965331eca2cb30c7bd55b24488c3b51a1292b08 GIT binary patch literal 6108473 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ⅆ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

    k*9A=k#sP=Ec-=__vJfeN}ynU9u9>2_kv*?Dv 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

    Vj3NG88Y|#|0<7W=!Y#s$uAO)G8 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 fW+@0rnhp0XW{EeH9{(5BXx1>~Eh(&y~F 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∈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

    c<9(2^H(w%H<0r1DzRD;J$d9({p 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

    eM;J}{-kuJFU)aFYx<2S06C{8%lXb<@1dX< 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