basic/
basic.rs

1extern crate starstraw;
2
3use axum::Router;
4use starstraw::*;
5use std::env::var;
6
7#[tokio::main]
8async fn main() {
9    dotenv::dotenv().ok(); // load .env
10
11    let port: u16 = match var("PORT") {
12        Ok(v) => v.parse::<u16>().unwrap(),
13        Err(_) => 8080,
14    };
15
16    // create database
17    let database = Database::new(Database::env_options(), ServerOptions::truthy()).await;
18    database.init().await;
19
20    // create app
21    let app = Router::new()
22        .nest("/", starstraw::api::routes(database.clone()))
23        .fallback(starstraw::api::not_found);
24
25    let listener = tokio::net::TcpListener::bind(format!("127.0.0.1:{port}"))
26        .await
27        .unwrap();
28
29    println!("Starting server at http://localhost:{port}!");
30    axum::serve(listener, app).await.unwrap();
31}