summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index 36ef319..b1979b1 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -2,6 +2,7 @@ use std::env;
mod database;
mod routes;
+mod utils;
use axum::{
routing::{get, post},
@@ -13,7 +14,7 @@ use routes::user::{create_user, me};
use routes::auth::{login, logout};
use tower_http::services::ServeDir;
-use crate::database::Database;
+use crate::{database::Database, utils::register_admin};
#[derive(Clone)]
struct AppState {
@@ -24,13 +25,31 @@ struct AppState {
#[tokio::main]
async fn main() {
+ let database = Database::new_in_memory().unwrap();
+ database.initialize().unwrap();
+
+ // TODO: generically load environment variables, this is tedious
let Ok(secret) = env::var("JWT_SECRET") else {
eprintln!("missing environment variable JWT_SECRET");
return;
};
-
- let database = Database::new_in_memory().unwrap();
- database.initialize().unwrap();
+ let Ok(admin_email) = env::var("ADMIN_EMAIL") else {
+ eprintln!("missing environment variable ADMIN_EMAIL");
+ return;
+ };
+ let Ok(admin_username) = env::var("ADMIN_USERNAME") else {
+ eprintln!("missing environment variable ADMIN_USERNAME");
+ return;
+ };
+ let Ok(admin_password) = env::var("ADMIN_PASSWORD") else {
+ eprintln!("missing environment variable ADMIN_PASSWORD");
+ return;
+ };
+
+ let Ok(()) = register_admin(&database, &admin_email, &admin_username, &admin_password) else {
+ eprintln!("failed to register admin user");
+ return;
+ };
let state = AppState {
secret: secret,