refactor: restructure project

This commit is contained in:
Sandro Eiler 2023-12-30 22:21:57 +01:00
parent 699f8733e2
commit 89ea0995bb
9 changed files with 57 additions and 44 deletions

24
Cargo.lock generated
View file

@ -468,7 +468,7 @@ dependencies = [
"http-body 1.0.0",
"hyper 1.1.0",
"pin-project-lite",
"socket2 0.5.4",
"socket2 0.5.5",
"tokio",
"tower",
"tower-service",
@ -566,9 +566,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.147"
version = "0.2.151"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
[[package]]
name = "linux-raw-sys"
@ -621,9 +621,9 @@ dependencies = [
[[package]]
name = "mio"
version = "0.8.8"
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2"
checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09"
dependencies = [
"libc",
"wasi",
@ -1006,9 +1006,9 @@ dependencies = [
[[package]]
name = "socket2"
version = "0.5.4"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e"
checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
dependencies = [
"libc",
"windows-sys 0.48.0",
@ -1062,9 +1062,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
[[package]]
name = "tokio"
version = "1.32.0"
version = "1.35.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9"
checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104"
dependencies = [
"backtrace",
"bytes",
@ -1074,16 +1074,16 @@ dependencies = [
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
"socket2 0.5.4",
"socket2 0.5.5",
"tokio-macros",
"windows-sys 0.48.0",
]
[[package]]
name = "tokio-macros"
version = "2.1.0"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [
"proc-macro2",
"quote",

0
src/configuration.rs Normal file
View file

View file

@ -1,29 +1,3 @@
#![allow(unused)]
use axum::extract::{Path, Query};
use axum::http::{Method, Uri};
use axum::response::{Html, IntoResponse, Response};
use axum::routing::{get, get_service, post, IntoMakeService};
use axum::serve::Serve;
use axum::{middleware, Json, Router};
use serde::Deserialize;
use serde_json::{json, Value};
use std::net::SocketAddr;
use tokio::net::TcpListener;
#[derive(Deserialize)]
struct FormData {
email: String,
name: String,
}
/// API routing
pub fn app() -> Router {
Router::new()
.route("/health_check", get(|| async {}))
.route("/subscriptions", post(|| async {}))
}
/// Start the server
pub fn run(listener: TcpListener) -> Serve<IntoMakeService<Router>, Router> {
axum::serve(listener, app().into_make_service())
}
pub mod configuration;
pub mod routes;
pub mod startup;

View file

@ -1,9 +1,9 @@
use learn_axum::run;
use tokio::net::TcpListener;
use learn_axum::startup;
#[tokio::main]
async fn main() {
let addr = format!("127.0.0.1:{}", "3000");
let listener = TcpListener::bind(addr).await.unwrap(); //.expect("Unable to bind to port");
run(listener).await.unwrap();
startup::run(listener).await.unwrap();
}

View file

@ -0,0 +1,6 @@
use axum::routing::get;
use axum::Router;
pub fn routes_health_check() -> Router {
Router::new().route("/health_check", get(|| async {}))
}

5
src/routes/mod.rs Normal file
View file

@ -0,0 +1,5 @@
mod health_check;
mod subscriptions;
pub use health_check::*;
pub use subscriptions::*;

View file

@ -0,0 +1,12 @@
use axum::routing::get;
use axum::Router;
use serde::Deserialize;
#[derive(Deserialize)]
struct FormData {
email: String,
name: String,
}
pub fn routes_subscriptions() -> Router {
Router::new().route("/subscriptions", get(|| async {}))
}

16
src/startup.rs Normal file
View file

@ -0,0 +1,16 @@
use axum::routing::IntoMakeService;
use axum::serve::Serve;
use axum::Router;
use tokio::net::TcpListener;
/// API routing
pub fn app() -> Router {
Router::new()
.merge(crate::routes::routes_health_check())
.merge(crate::routes::routes_subscriptions())
}
/// Start the server
pub fn run(listener: TcpListener) -> Serve<IntoMakeService<Router>, Router> {
axum::serve(listener, app().into_make_service())
}

View file

@ -78,7 +78,7 @@ async fn spawn_app() -> TestApp {
let listener = TcpListener::bind("127.0.0.1:0").await.unwrap();
let addr = listener.local_addr().unwrap();
tokio::spawn(async move {
axum::serve(listener, learn_axum::app()).await.unwrap();
axum::serve(listener, learn_axum::startup::app()).await.unwrap();
});
TestApp { addr }
}