basic/
basic.rs

1extern crate pongo;
2
3use ::starstraw::{Database as SRDatabase, ServerOptions as SRServerOptions};
4use axum::{routing::get_service, Router};
5use pongo::*;
6use std::env::{set_var, var};
7use tower_http::services::ServeDir;
8
9#[tokio::main]
10async fn main() {
11    dotenv::dotenv().ok(); // load .env
12
13    let port: u16 = match var("PORT") {
14        Ok(v) => v.parse::<u16>().unwrap(),
15        Err(_) => 8080,
16    };
17
18    set_var("PO_STATIC_DIR", "/static");
19    set_var("PO_NESTED", "@pongo");
20    set_var("PO_STARSTRAW", "/star");
21
22    // create database
23    let database = Database::new(Database::env_options(), ServerOptions::truthy()).await;
24    database.init().await;
25
26    let starstraw_database =
27        SRDatabase::new(Database::env_options(), SRServerOptions::truthy()).await;
28    starstraw_database.init().await;
29
30    // create app
31    let app = Router::new()
32        .nest("/star", starstraw::routes(starstraw_database.clone()))
33        .nest("/@pongo", pongo::dashboard::routes(database.clone()))
34        .nest_service("/static", get_service(ServeDir::new("./static")))
35        .fallback(pongo::api::not_found);
36
37    let listener = tokio::net::TcpListener::bind(format!("127.0.0.1:{port}"))
38        .await
39        .unwrap();
40
41    println!("Starting server at http://localhost:{port}!");
42    axum::serve(listener, app).await.unwrap();
43}