summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-10-07 08:49:39 -0400
committerKjetil Orbekk <kj@orbekk.com>2022-10-07 08:49:39 -0400
commitdf75a5df706dcd6a309b23ce2444336fdf24f63c (patch)
tree58cf6bb9070988788e0eed556ee1c1129e27fd01
parent6eeea26f281c67f3f1fbe3bffe839b4163b9d048 (diff)
Add shared library message passing between frontend and backend
-rw-r--r--Cargo.lock10
-rw-r--r--Cargo.toml1
-rw-r--r--data/Cargo.toml10
-rw-r--r--data/src/lib.rs6
-rw-r--r--server/.env2
-rw-r--r--server/Cargo.toml1
-rw-r--r--server/src/main.rs9
-rw-r--r--webapp/Cargo.toml1
-rw-r--r--webapp/Trunk.toml8
-rw-r--r--webapp/src/main.rs18
10 files changed, 49 insertions, 17 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 89d55bb..935591a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -210,6 +210,14 @@ dependencies = [
]
[[package]]
+name = "data"
+version = "0.1.0"
+dependencies = [
+ "serde",
+ "serde_json",
+]
+
+[[package]]
name = "dotenv"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -948,6 +956,7 @@ name = "server"
version = "0.1.0"
dependencies = [
"axum",
+ "data",
"dotenv",
"serde",
"serde_json",
@@ -1392,6 +1401,7 @@ version = "0.1.0"
dependencies = [
"anyhow",
"console_error_panic_hook",
+ "data",
"dotenv",
"env_logger",
"getrandom",
diff --git a/Cargo.toml b/Cargo.toml
index f2a82ec..bcf8e4d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,5 +1,6 @@
[workspace]
members = [
+ "data",
"server",
"webapp",
]
diff --git a/data/Cargo.toml b/data/Cargo.toml
new file mode 100644
index 0000000..58c5ba3
--- /dev/null
+++ b/data/Cargo.toml
@@ -0,0 +1,10 @@
+[package]
+name = "data"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+serde = { version = "1.0.145", features = ["derive"] }
+serde_json = "1.0.85"
diff --git a/data/src/lib.rs b/data/src/lib.rs
new file mode 100644
index 0000000..7a11e59
--- /dev/null
+++ b/data/src/lib.rs
@@ -0,0 +1,6 @@
+use serde::{Deserialize, Serialize};
+
+#[derive(Serialize, Deserialize)]
+pub struct MyMessage {
+ pub message: String,
+}
diff --git a/server/.env b/server/.env
index 5914598..720d4c7 100644
--- a/server/.env
+++ b/server/.env
@@ -1,4 +1,4 @@
RUST_LOG=info,tower_http=trace
-BIND_ADDRESS=[::]:11120
+BIND_ADDRESS=[::]:11121
WEBAPP_PATH=../webapp/dist/
RUST_BACKTRACE=1 \ No newline at end of file
diff --git a/server/Cargo.toml b/server/Cargo.toml
index 943f20f..88dee76 100644
--- a/server/Cargo.toml
+++ b/server/Cargo.toml
@@ -14,3 +14,4 @@ tokio = { version = "1.21.2", features = ["full"] }
tower-http = { version = "0.3.4", features = ["full"] }
tracing = "0.1.37"
tracing-subscriber = { version = "0.3.16", features = ["env-filter"] }
+data = { path = "../data" }
diff --git a/server/src/main.rs b/server/src/main.rs
index dfbb4ef..aaa5798 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -1,7 +1,7 @@
use std::env;
use axum::{routing::get, Json, Router};
-use serde::{Deserialize, Serialize};
+use data::MyMessage;
use tracing::info;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
use tower_http::{trace::TraceLayer};
@@ -30,13 +30,8 @@ async fn main() {
.unwrap();
}
-#[derive(Serialize, Deserialize)]
-struct MyMessage {
- message: String,
-}
-
async fn test() -> Json<MyMessage> {
Json(MyMessage {
- message: "Hello!".to_string(),
+ message: "Hello, ,World!".to_string(),
})
}
diff --git a/webapp/Cargo.toml b/webapp/Cargo.toml
index 13a7e6a..39995a9 100644
--- a/webapp/Cargo.toml
+++ b/webapp/Cargo.toml
@@ -18,6 +18,7 @@ regex = "1.0"
lazy_static = "1.4"
gloo-net = "0.2.4"
wasm-bindgen-futures = "0.4.33"
+data = { path = "../data" }
[dev-dependencies]
env_logger = "0.8.4"
diff --git a/webapp/Trunk.toml b/webapp/Trunk.toml
index 842cc2f..8c891da 100644
--- a/webapp/Trunk.toml
+++ b/webapp/Trunk.toml
@@ -1,3 +1,11 @@
[build]
target = "index.html"
dist = "dist"
+
+[serve]
+address = "::"
+port = 11120
+watch = ["src"]
+
+[[proxy]]
+backend = "http://localhost:11121/api/" \ No newline at end of file
diff --git a/webapp/src/main.rs b/webapp/src/main.rs
index 8b77ea2..ef394a6 100644
--- a/webapp/src/main.rs
+++ b/webapp/src/main.rs
@@ -1,3 +1,4 @@
+use data::MyMessage;
#[allow(unused_imports)]
use log::{debug, error, info, warn};
use yew::prelude::*;
@@ -26,15 +27,14 @@ pub fn app() -> Html {
use_effect_with_deps(
move |_| {
wasm_bindgen_futures::spawn_local(async move {
- msg.set(
- Request::get("/api/test")
- .send()
- .await
- .unwrap()
- .json()
- .await
- .unwrap(),
- )
+ let m: MyMessage = Request::get("/api/test")
+ .send()
+ .await
+ .unwrap()
+ .json()
+ .await
+ .unwrap();
+ msg.set(m.message)
});
|| ()
},