context.rs 886 B

1234567891011121314151617181920212223242526272829303132333435
  1. use crate::service::{
  2. doc::doc::DocBiz,
  3. ws::{WsBizHandlers, WsServer},
  4. };
  5. use actix::Addr;
  6. use actix_web::web::Data;
  7. use lib_ws::WsModule;
  8. use sqlx::PgPool;
  9. use std::sync::Arc;
  10. #[derive(Clone)]
  11. pub struct AppContext {
  12. pub ws_server: Data<Addr<WsServer>>,
  13. pub pg_pool: Data<PgPool>,
  14. pub ws_bizs: Data<WsBizHandlers>,
  15. pub doc_biz: Data<Arc<DocBiz>>,
  16. }
  17. impl AppContext {
  18. pub fn new(ws_server: Addr<WsServer>, db_pool: PgPool) -> Self {
  19. let ws_server = Data::new(ws_server);
  20. let pg_pool = Data::new(db_pool);
  21. let mut ws_bizs = WsBizHandlers::new();
  22. let doc_biz = Arc::new(DocBiz::new(pg_pool.clone()));
  23. ws_bizs.register(WsModule::Doc, doc_biz.clone());
  24. AppContext {
  25. ws_server,
  26. pg_pool,
  27. ws_bizs: Data::new(ws_bizs),
  28. doc_biz: Data::new(doc_biz),
  29. }
  30. }
  31. }