initial commit, figuring out axum & sqlx
commit
753a01a750
@ -0,0 +1 @@
|
||||
/target
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,12 @@
|
||||
[package]
|
||||
name = "ttc_backend"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
axum = "0.6.18"
|
||||
tokio = { version = "1.29.1", features = ["full"] }
|
||||
rand = { version = "0.8.5", features = ["std"] }
|
||||
sqlx = { version = "0.7.1", features = ["runtime-tokio", "sqlite"] }
|
@ -0,0 +1,39 @@
|
||||
use std::{sync::Arc, env};
|
||||
|
||||
use axum::{
|
||||
routing::get,
|
||||
Router,
|
||||
extract::Path,
|
||||
};
|
||||
use sqlx::{SqlitePool, sqlite::SqlitePoolOptions};
|
||||
|
||||
struct AppState {
|
||||
pub db_pool: SqlitePool,
|
||||
}
|
||||
|
||||
async fn user_pronouns(
|
||||
Path(user): Path<String>,
|
||||
) -> String {
|
||||
user
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() {
|
||||
let app = Router::new()
|
||||
.route("/api/ttc/hello", get(|| async { "hello world!" }))
|
||||
.route("/api/ttc/pronouns/:user", get(user_pronouns))
|
||||
.with_state(Arc::new(AppState {
|
||||
db_pool: SqlitePoolOptions::new()
|
||||
.max_connections(5)
|
||||
.connect(env::var("TTC_DATABASE_URL")
|
||||
.unwrap_or("sqlite:ttc.db".into())
|
||||
.as_ref())
|
||||
.await
|
||||
.unwrap()
|
||||
}));
|
||||
|
||||
axum::Server::bind(&"0.0.0.0:3000".parse().unwrap())
|
||||
.serve(app.into_make_service())
|
||||
.await
|
||||
.unwrap();
|
||||
}
|
Loading…
Reference in New Issue