]> Untitled Git - lemmy.git/blob - server/src/api/mod.rs
Implement config (fixes #351)
[lemmy.git] / server / src / api / mod.rs
1 use crate::db::category::*;
2 use crate::db::comment::*;
3 use crate::db::comment_view::*;
4 use crate::db::community::*;
5 use crate::db::community_view::*;
6 use crate::db::moderator::*;
7 use crate::db::moderator_views::*;
8 use crate::db::password_reset_request::*;
9 use crate::db::post::*;
10 use crate::db::post_view::*;
11 use crate::db::site::*;
12 use crate::db::site_view::*;
13 use crate::db::user::*;
14 use crate::db::user_mention::*;
15 use crate::db::user_mention_view::*;
16 use crate::db::user_view::*;
17 use crate::db::*;
18 use crate::{extract_usernames, has_slurs, naive_from_unix, naive_now, remove_slurs};
19 use failure::Error;
20 use serde::{Deserialize, Serialize};
21
22 pub mod comment;
23 pub mod community;
24 pub mod post;
25 pub mod site;
26 pub mod user;
27
28 #[derive(EnumString, ToString, Debug)]
29 pub enum UserOperation {
30   Login,
31   Register,
32   CreateCommunity,
33   CreatePost,
34   ListCommunities,
35   ListCategories,
36   GetPost,
37   GetCommunity,
38   CreateComment,
39   EditComment,
40   SaveComment,
41   CreateCommentLike,
42   GetPosts,
43   CreatePostLike,
44   EditPost,
45   SavePost,
46   EditCommunity,
47   FollowCommunity,
48   GetFollowedCommunities,
49   GetUserDetails,
50   GetReplies,
51   GetUserMentions,
52   EditUserMention,
53   GetModlog,
54   BanFromCommunity,
55   AddModToCommunity,
56   CreateSite,
57   EditSite,
58   GetSite,
59   AddAdmin,
60   BanUser,
61   Search,
62   MarkAllAsRead,
63   SaveUserSettings,
64   TransferCommunity,
65   TransferSite,
66   DeleteAccount,
67   PasswordReset,
68   PasswordChange,
69 }
70
71 #[derive(Fail, Debug)]
72 #[fail(display = "{{\"op\":\"{}\", \"error\":\"{}\"}}", op, message)]
73 pub struct APIError {
74   pub op: String,
75   pub message: String,
76 }
77
78 impl APIError {
79   pub fn err(op: &UserOperation, msg: &str) -> Self {
80     APIError {
81       op: op.to_string(),
82       message: msg.to_string(),
83     }
84   }
85 }
86
87 pub struct Oper<T> {
88   op: UserOperation,
89   data: T,
90 }
91
92 impl<T> Oper<T> {
93   pub fn new(op: UserOperation, data: T) -> Oper<T> {
94     Oper { op, data }
95   }
96 }
97
98 pub trait Perform<T> {
99   fn perform(&self) -> Result<T, Error>
100   where
101     T: Sized;
102 }