36 lines
955 B
Rust
36 lines
955 B
Rust
#![allow(unused_imports)]
|
|
mod handlers;
|
|
mod models;
|
|
mod router;
|
|
use std::sync::Arc;
|
|
|
|
use axum::{Router, routing};
|
|
use dotenv::dotenv;
|
|
use models::*;
|
|
use router::create_router;
|
|
use serde::{Deserialize, Serialize};
|
|
use sqlx::{PgPool, postgres::PgPoolOptions};
|
|
|
|
pub struct AppState {
|
|
db: PgPool,
|
|
}
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
dotenv().ok();
|
|
let database_url = std::env::var("DATABASE_URL").expect("DATABASE_URL variable not set");
|
|
let pool = match PgPoolOptions::new().connect(&database_url).await {
|
|
Ok(pool) => {
|
|
println!("Database connection successful");
|
|
pool
|
|
}
|
|
Err(err) => {
|
|
println!("Failed to connect to database: {:?}", err);
|
|
std::process::exit(1);
|
|
}
|
|
};
|
|
let app = create_router(Arc::new(AppState { db: pool.clone() }));
|
|
let listener = tokio::net::TcpListener::bind("0.0.0.0:8001").await.unwrap();
|
|
axum::serve(listener, app).await;
|
|
}
|