tab_spaces = 2
+edition="2018"
#[macro_use]
extern crate diesel_migrations;
+use actix::prelude::*;
use actix_web::*;
use diesel::r2d2::{ConnectionManager, Pool};
use diesel::PgConnection;
use lemmy_server::routes::{federation, feeds, index, nodeinfo, webfinger, websocket};
use lemmy_server::settings::Settings;
+use lemmy_server::websocket::server::*;
use std::io;
embed_migrations!();
let conn = pool.get().unwrap();
embedded_migrations::run(&conn).unwrap();
+ // Set up websocket server
+ let server = ChatServer::startup(pool.clone()).start();
+
println!(
"Starting http server at {}:{}",
settings.bind, settings.port
App::new()
.wrap(middleware::Logger::default())
.data(pool.clone())
+ .data(server.clone())
// The routes
.configure(federation::config)
.configure(feeds::config)
use crate::websocket::server::*;
-use crate::Settings;
use actix::prelude::*;
use actix_web::web;
use actix_web::*;
use actix_web_actors::ws;
-use diesel::r2d2::{ConnectionManager, Pool};
-use diesel::PgConnection;
use std::time::{Duration, Instant};
pub fn config(cfg: &mut web::ServiceConfig) {
- // TODO couldn't figure out how to get this method to recieve the other pool
- let settings = Settings::get();
- let manager = ConnectionManager::<PgConnection>::new(&settings.get_database_url());
- let pool = Pool::builder()
- .max_size(settings.database.pool_size)
- .build(manager)
- .unwrap_or_else(|_| panic!("Error connecting to {}", settings.get_database_url()));
-
- // Start chat server actor in separate thread
- let server = ChatServer::startup(pool).start();
- cfg
- .data(server)
- .service(web::resource("/api/v1/ws").to(chat_route));
+ cfg.service(web::resource("/api/v1/ws").to(chat_route));
}
/// How often heartbeat pings are sent
// TODO not sure if the blocking should be here or not
ws::start(
WSSession {
- // db: db.get_ref().clone(),
- cs_addr: chat_server.get_ref().clone(),
+ cs_addr: chat_server.get_ref().to_owned(),
id: 0,
hb: Instant::now(),
ip: req
joinable!(user_mention -> user_ (recipient_id));
allow_tables_to_appear_in_same_query!(
- category,
- comment,
- comment_like,
- comment_saved,
- community,
- community_follower,
- community_moderator,
- community_user_ban,
- mod_add,
- mod_add_community,
- mod_ban,
- mod_ban_from_community,
- mod_lock_post,
- mod_remove_comment,
- mod_remove_community,
- mod_remove_post,
- mod_sticky_post,
- password_reset_request,
- post,
- post_like,
- post_read,
- post_saved,
- site,
- user_,
- user_ban,
- user_mention,
+ category,
+ comment,
+ comment_like,
+ comment_saved,
+ community,
+ community_follower,
+ community_moderator,
+ community_user_ban,
+ mod_add,
+ mod_add_community,
+ mod_ban,
+ mod_ban_from_community,
+ mod_lock_post,
+ mod_remove_comment,
+ mod_remove_community,
+ mod_remove_post,
+ mod_sticky_post,
+ password_reset_request,
+ post,
+ post_like,
+ post_read,
+ post_saved,
+ site,
+ user_,
+ user_ban,
+ user_mention,
);
db: Pool<ConnectionManager<PgConnection>>,
}
-// impl Default for ChatServer {
-// fn default(nah: String) -> ChatServer {
-// // default room
-// let rooms = HashMap::new();
-
-// ChatServer {
-// sessions: HashMap::new(),
-// rate_limits: HashMap::new(),
-// rooms,
-// rng: rand::thread_rng(),
-// nah: nah,
-// }
-// }
-// }
-
impl ChatServer {
pub fn startup(db: Pool<ConnectionManager<PgConnection>>) -> ChatServer {
// default room