1 extern crate lemmy_server;
3 extern crate diesel_migrations;
6 use diesel::r2d2::{ConnectionManager, Pool};
7 use diesel::PgConnection;
8 use lemmy_server::routes::{federation, feeds, index, nodeinfo, webfinger, websocket};
9 use lemmy_server::settings::Settings;
15 async fn main() -> io::Result<()> {
17 let settings = Settings::get();
19 // Set up the r2d2 connection pool
20 let manager = ConnectionManager::<PgConnection>::new(&settings.get_database_url());
21 let pool = Pool::builder()
22 .max_size(settings.database.pool_size)
24 .unwrap_or_else(|_| panic!("Error connecting to {}", settings.get_database_url()));
26 // Run the migrations from code
27 let conn = pool.get().unwrap();
28 embedded_migrations::run(&conn).unwrap();
31 "Starting http server at {}:{}",
32 settings.bind, settings.port
35 // Create Http server with websocket support
36 HttpServer::new(move || {
38 .wrap(middleware::Logger::default())
41 .configure(federation::config)
42 .configure(feeds::config)
43 .configure(index::config)
44 .configure(nodeinfo::config)
45 .configure(webfinger::config)
46 .configure(websocket::config)
48 .service(actix_files::Files::new(
50 settings.front_end_dir.to_owned(),
52 .service(actix_files::Files::new(
54 settings.front_end_dir.to_owned() + "/documentation",
57 .bind((settings.bind, settings.port))?