]> Untitled Git - lemmy.git/blobdiff - server/src/api/mod.rs
Merge branch 'master' into federation_merge_from_master_2
[lemmy.git] / server / src / api / mod.rs
index bee7b8fecb902845067b4e4867a0881a6604ac45..afd62aff8011a524cb45e0b748fb96c3af8c5c81 100644 (file)
@@ -1,24 +1,12 @@
-use crate::db::category::*;
-use crate::db::comment::*;
-use crate::db::comment_view::*;
-use crate::db::community::*;
-use crate::db::community_view::*;
-use crate::db::moderator::*;
-use crate::db::moderator_views::*;
-use crate::db::password_reset_request::*;
-use crate::db::post::*;
-use crate::db::post_view::*;
-use crate::db::site::*;
-use crate::db::site_view::*;
-use crate::db::user::*;
-use crate::db::user_mention::*;
-use crate::db::user_mention_view::*;
-use crate::db::user_view::*;
-use crate::db::*;
-use crate::{extract_usernames, has_slurs, naive_from_unix, naive_now, remove_slurs};
-use diesel::PgConnection;
+use crate::{
+  db::{community::*, community_view::*, moderator::*, site::*, user::*, user_view::*},
+  websocket::WebsocketInfo,
+};
+use diesel::{
+  r2d2::{ConnectionManager, Pool},
+  PgConnection,
+};
 use failure::Error;
-use serde::{Deserialize, Serialize};
 
 pub mod comment;
 pub mod community;
@@ -44,14 +32,18 @@ pub struct Oper<T> {
   data: T,
 }
 
-impl<T> Oper<T> {
-  pub fn new(data: T) -> Oper<T> {
+impl<Data> Oper<Data> {
+  pub fn new(data: Data) -> Oper<Data> {
     Oper { data }
   }
 }
 
-pub trait Perform<T> {
-  fn perform(&self, conn: &PgConnection) -> Result<T, Error>
-  where
-    T: Sized;
+pub trait Perform {
+  type Response: serde::ser::Serialize + Send;
+
+  fn perform(
+    &self,
+    pool: Pool<ConnectionManager<PgConnection>>,
+    websocket_info: Option<WebsocketInfo>,
+  ) -> Result<Self::Response, Error>;
 }