postgres via sqlx - workable?
This commit is contained in:
17
src/main.rs
17
src/main.rs
@@ -1,6 +1,8 @@
|
||||
use std::error::Error;
|
||||
|
||||
use axum::Router;
|
||||
use dotenvy::var;
|
||||
use sqlx::PgPool;
|
||||
use tokio::net::TcpListener;
|
||||
|
||||
mod api;
|
||||
@@ -20,6 +22,11 @@ const DEFAULT_PORT: u16 = 0x9999; // 39321
|
||||
/// The string to be returned alongside HTTP 500
|
||||
const ISE_MSG: &str = "Internal server error";
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct MnemoState {
|
||||
pool: PgPool,
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn Error>> {
|
||||
if let Err(e) = dotenvy::dotenv()
|
||||
@@ -29,13 +36,16 @@ async fn main() -> Result<(), Box<dyn Error>> {
|
||||
}
|
||||
env_logger::builder()
|
||||
.filter_level(log::LevelFilter::Info)
|
||||
.filter_module("sqlx", log::LevelFilter::Warn)
|
||||
.parse_default_env()
|
||||
.format(config::envlogger_write_format)
|
||||
.init();
|
||||
|
||||
database::migrations()?;
|
||||
let pool = PgPool::connect(var("DATABASE_URL")?.as_str()).await?;
|
||||
sqlx::migrate!("src/database/migrations").run(&pool).await?;
|
||||
log::info!("Migrations applied successfully.");
|
||||
users::auth::init_password_dummies();
|
||||
users::setup::initialise_reserved_users_if_needed()?;
|
||||
users::setup::initialise_reserved_users_if_needed(&pool).await?;
|
||||
|
||||
let port = match std::env::var("PORT") {
|
||||
Ok(p) => p.parse::<u16>()?,
|
||||
@@ -46,7 +56,8 @@ async fn main() -> Result<(), Box<dyn Error>> {
|
||||
};
|
||||
let r = Router::new()
|
||||
.merge(api::api_router())
|
||||
.merge(web::web_router());
|
||||
.merge(web::web_router())
|
||||
.with_state(MnemoState { pool });
|
||||
let l = TcpListener::bind(format!("0.0.0.0:{port}")).await?;
|
||||
log::info!("Listener bound to {}", l.local_addr()?);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user