71 lines
2.3 KiB
Rust
71 lines
2.3 KiB
Rust
use std::time::Duration;
|
|
|
|
use actix_web::web::Data;
|
|
use actix_web::{middleware, App, HttpServer};
|
|
use sea_orm::ConnectOptions;
|
|
|
|
#[actix_web::main]
|
|
async fn main() -> std::io::Result<()> {
|
|
{
|
|
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();
|
|
}
|
|
|
|
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()
|
|
};
|
|
|
|
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,
|
|
)
|
|
};
|
|
|
|
let mut l10n = oswilno_view::TranslationStorage::new();
|
|
let session_config = oswilno_session::SessionConfigurator::new(redis.clone());
|
|
session_config.translations(&mut l10n);
|
|
|
|
HttpServer::new(move || {
|
|
let session_config = session_config.clone();
|
|
let session_factory = session_config.factory();
|
|
App::new()
|
|
.wrap(middleware::Logger::default())
|
|
.app_data(Data::new(session_factory.storage()))
|
|
.wrap(session_factory)
|
|
.app_data(Data::new(conn.clone()))
|
|
.app_data(Data::new(redis.clone()))
|
|
.app_data(Data::new(l10n.clone()))
|
|
.configure(oswilno_parking_space::mount)
|
|
.configure(oswilno_admin::mount)
|
|
.configure(web_assets::mount)
|
|
.configure(oswilno_view::mount)
|
|
.configure(|c| session_config.app_data(c))
|
|
})
|
|
.bind(("0.0.0.0", 8080))?
|
|
.run()
|
|
.await
|
|
}
|