oswilno/crates/oswilno-server/src/main.rs

71 lines
2.3 KiB
Rust
Raw Normal View History

2023-07-27 17:36:30 +02:00
use std::time::Duration;
use actix_web::web::Data;
2023-08-01 16:29:03 +02:00
use actix_web::{middleware, App, HttpServer};
2023-07-27 17:36:30 +02:00
use sea_orm::ConnectOptions;
2023-07-26 11:16:29 +02:00
#[actix_web::main]
async fn main() -> std::io::Result<()> {
2023-07-27 17:36:30 +02:00
{
use tracing_subscriber::prelude::*;
use tracing_subscriber::{fmt, EnvFilter};
let fmt_layer = fmt::layer().with_target(false);
let filter_layer = EnvFilter::try_from_default_env()
.or_else(|_| EnvFilter::try_new("info"))
.unwrap();
tracing_subscriber::registry()
.with(filter_layer)
.with(fmt_layer)
.init();
}
2023-08-14 17:21:18 +02:00
let conn: sea_orm::DatabaseConnection = {
let mut db_opts = ConnectOptions::new("postgres://postgres@localhost/oswilno".to_string());
db_opts
.max_connections(100)
.min_connections(5)
.connect_timeout(Duration::from_secs(8))
.idle_timeout(Duration::from_secs(8))
.sqlx_logging(true);
sea_orm::Database::connect(db_opts).await.unwrap()
};
2023-08-09 15:42:29 +02:00
let redis = {
use redis_async_pool::{RedisConnectionManager, RedisPool};
RedisPool::new(
RedisConnectionManager::new(
redis::Client::open("redis://localhost:6379").expect("Fail to connect to redis"),
true,
None,
),
5,
)
};
2023-08-04 22:39:04 +02:00
let mut l10n = oswilno_view::TranslationStorage::new();
2023-08-09 15:42:29 +02:00
let session_config = oswilno_session::SessionConfigurator::new(redis.clone());
2023-08-04 22:39:04 +02:00
session_config.translations(&mut l10n);
2023-08-02 16:37:03 +02:00
2023-07-27 17:36:30 +02:00
HttpServer::new(move || {
2023-08-01 22:06:04 +02:00
let session_config = session_config.clone();
2023-08-14 12:30:32 +02:00
let session_factory = session_config.factory();
2023-07-26 11:16:29 +02:00
App::new()
2023-07-27 17:36:30 +02:00
.wrap(middleware::Logger::default())
2023-08-14 12:30:32 +02:00
.app_data(Data::new(session_factory.storage()))
.wrap(session_factory)
2023-07-27 17:36:30 +02:00
.app_data(Data::new(conn.clone()))
2023-08-09 15:42:29 +02:00
.app_data(Data::new(redis.clone()))
2023-08-02 16:37:03 +02:00
.app_data(Data::new(l10n.clone()))
2023-07-26 11:16:29 +02:00
.configure(oswilno_parking_space::mount)
.configure(oswilno_admin::mount)
2023-08-16 08:48:39 +02:00
.configure(web_assets::mount)
.configure(oswilno_view::mount)
2023-08-01 22:06:04 +02:00
.configure(|c| session_config.app_data(c))
2023-07-26 11:16:29 +02:00
})
.bind(("0.0.0.0", 8080))?
.run()
.await
}