MCPcopy Create free account
hub / github.com/SeaQL/sea-orm / start

Function start

examples/axum_example/api/src/lib.rs:24–69  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

22
23#[tokio::main]
24async fn start() -> anyhow::Result<()> {
25 env::set_var("RUST_LOG", "debug");
26 tracing_subscriber::fmt::init();
27
28 dotenvy::dotenv().ok();
29 let db_url = env::var("DATABASE_URL").expect("DATABASE_URL is not set in .env file");
30 let host = env::var("HOST").expect("HOST is not set in .env file");
31 let port = env::var("PORT").expect("PORT is not set in .env file");
32 let server_url = format!("{host}:{port}");
33
34 let conn = Database::connect(db_url)
35 .await
36 .expect("Database connection failed");
37 Migrator::up(&conn, None).await.unwrap();
38
39 let templates = Tera::new(concat!(env!("CARGO_MANIFEST_DIR"), "/templates/**/*"))
40 .expect("Tera initialization failed");
41
42 let state = AppState { templates, conn };
43
44 let app = Router::new()
45 .route("/", get(list_posts).post(create_post))
46 .route("/{id}", get(edit_post).post(update_post))
47 .route("/new", get(new_post))
48 .route("/delete/{id}", post(delete_post))
49 .nest_service(
50 "/static",
51 get_service(ServeDir::new(concat!(
52 env!("CARGO_MANIFEST_DIR"),
53 "/static"
54 )))
55 .handle_error(|error| async move {
56 (
57 StatusCode::INTERNAL_SERVER_ERROR,
58 format!("Unhandled internal error: {error}"),
59 )
60 }),
61 )
62 .layer(CookieManagerLayer::new())
63 .with_state(state);
64
65 let listener = tokio::net::TcpListener::bind(&server_url).await.unwrap();
66 axum::serve(listener, app).await?;
67
68 Ok(())
69}
70
71#[derive(Clone)]
72struct AppState {

Callers 1

mainFunction · 0.70

Calls 3

initFunction · 0.85
unwrapMethod · 0.80
newFunction · 0.50

Tested by

no test coverage detected