Add base layout

This commit is contained in:
2022-07-14 21:44:19 +02:00
commit 625e21c115
11 changed files with 939 additions and 0 deletions

1
src/cmd/prae/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target

15
src/cmd/prae/Cargo.toml Normal file
View File

@@ -0,0 +1,15 @@
[package]
name = "prae"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
tokio = { version = "1.0", features = ["full"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
anyhow = {version = "1.0.58"}
prae_api = { path = "../../lib/prae_api" }
prae_core = { path = "../../lib/prae_core" }

15
src/cmd/prae/src/main.rs Normal file
View File

@@ -0,0 +1,15 @@
use tracing::{info, Level};
use tracing_subscriber::FmtSubscriber;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let subscriber = FmtSubscriber::builder()
.with_max_level(Level::INFO)
.finish();
tracing::subscriber::set_global_default(subscriber)?;
info!("Starting prae");
prae_api::Server::new().start().await
}

View File

@@ -0,0 +1,15 @@
[package]
name = "prae_api"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
axum = { version = "0.4" }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0.68"
tokio = { version = "1.0", features = ["full"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3" }
anyhow = { version = "1.0.58" }

View File

@@ -0,0 +1,34 @@
use std::net::SocketAddr;
use axum::{routing, Router};
pub struct Server {
app: Router,
addr: SocketAddr,
}
impl Server {
pub fn new() -> Server {
let app = Router::new().route("/", routing::get(root));
let addr = SocketAddr::from(([127, 0, 0, 1], 3000));
return Server { app, addr };
}
pub async fn start(self) -> anyhow::Result<()> {
tracing::info!("listening on {}", self.addr);
match axum::Server::bind(&self.addr)
.serve(self.app.into_make_service())
.await
{
Ok(_) => Ok(()),
Err(e) => Err(e.into()),
}
}
}
async fn root() -> &'static str {
tracing::info!("some prae");
return "PRAE";
}

2
src/lib/prae_core/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
/target
/Cargo.lock

View File

@@ -0,0 +1,8 @@
[package]
name = "prae_core"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]

View File

@@ -0,0 +1,12 @@
#[cfg(test)]
mod tests {
#[test]
fn it_works() {
let result = 2 + 2;
assert_eq!(result, 4);
}
}
pub fn something() -> String {
"".into()
}