Derive default for api request structs, move type enums (#2245)
* Derive default for api request structs, move type enums * Simplify api by using enum types directly, instead of string * Add default and clone for most api structs
This commit is contained in:
parent
3aa3d75a1e
commit
3053e14be7
26 changed files with 223 additions and 220 deletions
|
@ -4,7 +4,6 @@ use lemmy_api_common::{
|
||||||
person::{GetPersonMentions, GetPersonMentionsResponse},
|
person::{GetPersonMentions, GetPersonMentionsResponse},
|
||||||
utils::{blocking, get_local_user_view_from_jwt},
|
utils::{blocking, get_local_user_view_from_jwt},
|
||||||
};
|
};
|
||||||
use lemmy_db_schema::utils::{from_opt_str_to_opt_enum, SortType};
|
|
||||||
use lemmy_db_views_actor::person_mention_view::PersonMentionQueryBuilder;
|
use lemmy_db_views_actor::person_mention_view::PersonMentionQueryBuilder;
|
||||||
use lemmy_utils::{ConnectionId, LemmyError};
|
use lemmy_utils::{ConnectionId, LemmyError};
|
||||||
use lemmy_websocket::LemmyContext;
|
use lemmy_websocket::LemmyContext;
|
||||||
|
@ -23,8 +22,7 @@ impl Perform for GetPersonMentions {
|
||||||
let local_user_view =
|
let local_user_view =
|
||||||
get_local_user_view_from_jwt(&data.auth, context.pool(), context.secret()).await?;
|
get_local_user_view_from_jwt(&data.auth, context.pool(), context.secret()).await?;
|
||||||
|
|
||||||
let sort: Option<SortType> = from_opt_str_to_opt_enum(&data.sort);
|
let sort = data.sort;
|
||||||
|
|
||||||
let page = data.page;
|
let page = data.page;
|
||||||
let limit = data.limit;
|
let limit = data.limit;
|
||||||
let unread_only = data.unread_only;
|
let unread_only = data.unread_only;
|
||||||
|
|
|
@ -4,7 +4,6 @@ use lemmy_api_common::{
|
||||||
person::{GetReplies, GetRepliesResponse},
|
person::{GetReplies, GetRepliesResponse},
|
||||||
utils::{blocking, get_local_user_view_from_jwt},
|
utils::{blocking, get_local_user_view_from_jwt},
|
||||||
};
|
};
|
||||||
use lemmy_db_schema::utils::{from_opt_str_to_opt_enum, SortType};
|
|
||||||
use lemmy_db_views::comment_view::CommentQueryBuilder;
|
use lemmy_db_views::comment_view::CommentQueryBuilder;
|
||||||
use lemmy_utils::{ConnectionId, LemmyError};
|
use lemmy_utils::{ConnectionId, LemmyError};
|
||||||
use lemmy_websocket::LemmyContext;
|
use lemmy_websocket::LemmyContext;
|
||||||
|
@ -23,8 +22,7 @@ impl Perform for GetReplies {
|
||||||
let local_user_view =
|
let local_user_view =
|
||||||
get_local_user_view_from_jwt(&data.auth, context.pool(), context.secret()).await?;
|
get_local_user_view_from_jwt(&data.auth, context.pool(), context.secret()).await?;
|
||||||
|
|
||||||
let sort: Option<SortType> = from_opt_str_to_opt_enum(&data.sort);
|
let sort = data.sort;
|
||||||
|
|
||||||
let page = data.page;
|
let page = data.page;
|
||||||
let limit = data.limit;
|
let limit = data.limit;
|
||||||
let unread_only = data.unread_only;
|
let unread_only = data.unread_only;
|
||||||
|
|
|
@ -5,11 +5,7 @@ use lemmy_api_common::{
|
||||||
utils::{blocking, check_private_instance, get_local_user_view_from_jwt_opt},
|
utils::{blocking, check_private_instance, get_local_user_view_from_jwt_opt},
|
||||||
};
|
};
|
||||||
use lemmy_apub::{fetcher::resolve_actor_identifier, objects::community::ApubCommunity};
|
use lemmy_apub::{fetcher::resolve_actor_identifier, objects::community::ApubCommunity};
|
||||||
use lemmy_db_schema::{
|
use lemmy_db_schema::{source::community::Community, traits::DeleteableOrRemoveable, SearchType};
|
||||||
source::community::Community,
|
|
||||||
traits::DeleteableOrRemoveable,
|
|
||||||
utils::{from_opt_str_to_opt_enum, ListingType, SearchType, SortType},
|
|
||||||
};
|
|
||||||
use lemmy_db_views::{comment_view::CommentQueryBuilder, post_view::PostQueryBuilder};
|
use lemmy_db_views::{comment_view::CommentQueryBuilder, post_view::PostQueryBuilder};
|
||||||
use lemmy_db_views_actor::{
|
use lemmy_db_views_actor::{
|
||||||
community_view::CommunityQueryBuilder,
|
community_view::CommunityQueryBuilder,
|
||||||
|
@ -56,9 +52,9 @@ impl Perform for Search {
|
||||||
let q = data.q.to_owned();
|
let q = data.q.to_owned();
|
||||||
let page = data.page;
|
let page = data.page;
|
||||||
let limit = data.limit;
|
let limit = data.limit;
|
||||||
let sort: Option<SortType> = from_opt_str_to_opt_enum(&data.sort);
|
let sort = data.sort;
|
||||||
let listing_type: Option<ListingType> = from_opt_str_to_opt_enum(&data.listing_type);
|
let listing_type = data.listing_type;
|
||||||
let search_type: SearchType = from_opt_str_to_opt_enum(&data.type_).unwrap_or(SearchType::All);
|
let search_type = data.type_.unwrap_or(SearchType::All);
|
||||||
let community_id = data.community_id;
|
let community_id = data.community_id;
|
||||||
let community_actor_id = if let Some(name) = &data.community_name {
|
let community_actor_id = if let Some(name) = &data.community_name {
|
||||||
resolve_actor_identifier::<ApubCommunity, Community>(name, context)
|
resolve_actor_identifier::<ApubCommunity, Community>(name, context)
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
use crate::sensitive::Sensitive;
|
use crate::sensitive::Sensitive;
|
||||||
use lemmy_db_schema::newtypes::{CommentId, CommentReportId, CommunityId, LocalUserId, PostId};
|
use lemmy_db_schema::{
|
||||||
|
newtypes::{CommentId, CommentReportId, CommunityId, LocalUserId, PostId},
|
||||||
|
ListingType,
|
||||||
|
SortType,
|
||||||
|
};
|
||||||
use lemmy_db_views::structs::{CommentReportView, CommentView};
|
use lemmy_db_views::structs::{CommentReportView, CommentView};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct CreateComment {
|
pub struct CreateComment {
|
||||||
pub content: String,
|
pub content: String,
|
||||||
pub post_id: PostId,
|
pub post_id: PostId,
|
||||||
|
@ -12,13 +16,13 @@ pub struct CreateComment {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetComment {
|
pub struct GetComment {
|
||||||
pub id: CommentId,
|
pub id: CommentId,
|
||||||
pub auth: Option<Sensitive<String>>,
|
pub auth: Option<Sensitive<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct EditComment {
|
pub struct EditComment {
|
||||||
pub content: String,
|
pub content: String,
|
||||||
pub comment_id: CommentId,
|
pub comment_id: CommentId,
|
||||||
|
@ -26,14 +30,14 @@ pub struct EditComment {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct DeleteComment {
|
pub struct DeleteComment {
|
||||||
pub comment_id: CommentId,
|
pub comment_id: CommentId,
|
||||||
pub deleted: bool,
|
pub deleted: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct RemoveComment {
|
pub struct RemoveComment {
|
||||||
pub comment_id: CommentId,
|
pub comment_id: CommentId,
|
||||||
pub removed: bool,
|
pub removed: bool,
|
||||||
|
@ -41,14 +45,14 @@ pub struct RemoveComment {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct MarkCommentAsRead {
|
pub struct MarkCommentAsRead {
|
||||||
pub comment_id: CommentId,
|
pub comment_id: CommentId,
|
||||||
pub read: bool,
|
pub read: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct SaveComment {
|
pub struct SaveComment {
|
||||||
pub comment_id: CommentId,
|
pub comment_id: CommentId,
|
||||||
pub save: bool,
|
pub save: bool,
|
||||||
|
@ -62,17 +66,17 @@ pub struct CommentResponse {
|
||||||
pub form_id: Option<String>, // An optional front end ID, to tell which is coming back
|
pub form_id: Option<String>, // An optional front end ID, to tell which is coming back
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct CreateCommentLike {
|
pub struct CreateCommentLike {
|
||||||
pub comment_id: CommentId,
|
pub comment_id: CommentId,
|
||||||
pub score: i16,
|
pub score: i16,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetComments {
|
pub struct GetComments {
|
||||||
pub type_: Option<String>,
|
pub type_: Option<ListingType>,
|
||||||
pub sort: Option<String>,
|
pub sort: Option<SortType>,
|
||||||
pub page: Option<i64>,
|
pub page: Option<i64>,
|
||||||
pub limit: Option<i64>,
|
pub limit: Option<i64>,
|
||||||
pub community_id: Option<CommunityId>,
|
pub community_id: Option<CommunityId>,
|
||||||
|
@ -81,12 +85,12 @@ pub struct GetComments {
|
||||||
pub auth: Option<Sensitive<String>>,
|
pub auth: Option<Sensitive<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetCommentsResponse {
|
pub struct GetCommentsResponse {
|
||||||
pub comments: Vec<CommentView>,
|
pub comments: Vec<CommentView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct CreateCommentReport {
|
pub struct CreateCommentReport {
|
||||||
pub comment_id: CommentId,
|
pub comment_id: CommentId,
|
||||||
pub reason: String,
|
pub reason: String,
|
||||||
|
@ -98,14 +102,14 @@ pub struct CommentReportResponse {
|
||||||
pub comment_report_view: CommentReportView,
|
pub comment_report_view: CommentReportView,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct ResolveCommentReport {
|
pub struct ResolveCommentReport {
|
||||||
pub report_id: CommentReportId,
|
pub report_id: CommentReportId,
|
||||||
pub resolved: bool,
|
pub resolved: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct ListCommentReports {
|
pub struct ListCommentReports {
|
||||||
pub page: Option<i64>,
|
pub page: Option<i64>,
|
||||||
pub limit: Option<i64>,
|
pub limit: Option<i64>,
|
||||||
|
@ -116,7 +120,7 @@ pub struct ListCommentReports {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct ListCommentReportsResponse {
|
pub struct ListCommentReportsResponse {
|
||||||
pub comment_reports: Vec<CommentReportView>,
|
pub comment_reports: Vec<CommentReportView>,
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,11 +2,13 @@ use crate::sensitive::Sensitive;
|
||||||
use lemmy_db_schema::{
|
use lemmy_db_schema::{
|
||||||
newtypes::{CommunityId, PersonId},
|
newtypes::{CommunityId, PersonId},
|
||||||
source::site::Site,
|
source::site::Site,
|
||||||
|
ListingType,
|
||||||
|
SortType,
|
||||||
};
|
};
|
||||||
use lemmy_db_views_actor::structs::{CommunityModeratorView, CommunityView, PersonViewSafe};
|
use lemmy_db_views_actor::structs::{CommunityModeratorView, CommunityView, PersonViewSafe};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetCommunity {
|
pub struct GetCommunity {
|
||||||
pub id: Option<CommunityId>,
|
pub id: Option<CommunityId>,
|
||||||
/// Example: star_trek , or star_trek@xyz.tld
|
/// Example: star_trek , or star_trek@xyz.tld
|
||||||
|
@ -14,7 +16,7 @@ pub struct GetCommunity {
|
||||||
pub auth: Option<Sensitive<String>>,
|
pub auth: Option<Sensitive<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetCommunityResponse {
|
pub struct GetCommunityResponse {
|
||||||
pub community_view: CommunityView,
|
pub community_view: CommunityView,
|
||||||
pub site: Option<Site>,
|
pub site: Option<Site>,
|
||||||
|
@ -22,7 +24,7 @@ pub struct GetCommunityResponse {
|
||||||
pub online: usize,
|
pub online: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct CreateCommunity {
|
pub struct CreateCommunity {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub title: String,
|
pub title: String,
|
||||||
|
@ -39,21 +41,21 @@ pub struct CommunityResponse {
|
||||||
pub community_view: CommunityView,
|
pub community_view: CommunityView,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct ListCommunities {
|
pub struct ListCommunities {
|
||||||
pub type_: Option<String>,
|
pub type_: Option<ListingType>,
|
||||||
pub sort: Option<String>,
|
pub sort: Option<SortType>,
|
||||||
pub page: Option<i64>,
|
pub page: Option<i64>,
|
||||||
pub limit: Option<i64>,
|
pub limit: Option<i64>,
|
||||||
pub auth: Option<Sensitive<String>>,
|
pub auth: Option<Sensitive<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct ListCommunitiesResponse {
|
pub struct ListCommunitiesResponse {
|
||||||
pub communities: Vec<CommunityView>,
|
pub communities: Vec<CommunityView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct BanFromCommunity {
|
pub struct BanFromCommunity {
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
pub person_id: PersonId,
|
pub person_id: PersonId,
|
||||||
|
@ -70,7 +72,7 @@ pub struct BanFromCommunityResponse {
|
||||||
pub banned: bool,
|
pub banned: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct AddModToCommunity {
|
pub struct AddModToCommunity {
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
pub person_id: PersonId,
|
pub person_id: PersonId,
|
||||||
|
@ -83,7 +85,7 @@ pub struct AddModToCommunityResponse {
|
||||||
pub moderators: Vec<CommunityModeratorView>,
|
pub moderators: Vec<CommunityModeratorView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct EditCommunity {
|
pub struct EditCommunity {
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
pub title: Option<String>,
|
pub title: Option<String>,
|
||||||
|
@ -95,7 +97,7 @@ pub struct EditCommunity {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct HideCommunity {
|
pub struct HideCommunity {
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
pub hidden: bool,
|
pub hidden: bool,
|
||||||
|
@ -103,14 +105,14 @@ pub struct HideCommunity {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct DeleteCommunity {
|
pub struct DeleteCommunity {
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
pub deleted: bool,
|
pub deleted: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct RemoveCommunity {
|
pub struct RemoveCommunity {
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
pub removed: bool,
|
pub removed: bool,
|
||||||
|
@ -119,14 +121,14 @@ pub struct RemoveCommunity {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct FollowCommunity {
|
pub struct FollowCommunity {
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
pub follow: bool,
|
pub follow: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct BlockCommunity {
|
pub struct BlockCommunity {
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
pub block: bool,
|
pub block: bool,
|
||||||
|
@ -139,7 +141,7 @@ pub struct BlockCommunityResponse {
|
||||||
pub blocked: bool,
|
pub blocked: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct TransferCommunity {
|
pub struct TransferCommunity {
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
pub person_id: PersonId,
|
pub person_id: PersonId,
|
||||||
|
|
|
@ -4,7 +4,7 @@ pub mod person;
|
||||||
pub mod post;
|
pub mod post;
|
||||||
#[cfg(feature = "full")]
|
#[cfg(feature = "full")]
|
||||||
pub mod request;
|
pub mod request;
|
||||||
mod sensitive;
|
pub mod sensitive;
|
||||||
pub mod site;
|
pub mod site;
|
||||||
#[cfg(feature = "full")]
|
#[cfg(feature = "full")]
|
||||||
pub mod utils;
|
pub mod utils;
|
||||||
|
|
|
@ -3,14 +3,17 @@ use lemmy_db_views::structs::{CommentView, PostView, PrivateMessageView};
|
||||||
use lemmy_db_views_actor::structs::{CommunityModeratorView, PersonMentionView, PersonViewSafe};
|
use lemmy_db_views_actor::structs::{CommunityModeratorView, PersonMentionView, PersonViewSafe};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct Login {
|
pub struct Login {
|
||||||
pub username_or_email: Sensitive<String>,
|
pub username_or_email: Sensitive<String>,
|
||||||
pub password: Sensitive<String>,
|
pub password: Sensitive<String>,
|
||||||
}
|
}
|
||||||
use lemmy_db_schema::newtypes::{CommunityId, PersonId, PersonMentionId, PrivateMessageId};
|
use lemmy_db_schema::{
|
||||||
|
newtypes::{CommunityId, PersonId, PersonMentionId, PrivateMessageId},
|
||||||
|
SortType,
|
||||||
|
};
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct Register {
|
pub struct Register {
|
||||||
pub username: String,
|
pub username: String,
|
||||||
pub password: Sensitive<String>,
|
pub password: Sensitive<String>,
|
||||||
|
@ -25,22 +28,22 @@ pub struct Register {
|
||||||
pub answer: Option<String>,
|
pub answer: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetCaptcha {}
|
pub struct GetCaptcha {}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetCaptchaResponse {
|
pub struct GetCaptchaResponse {
|
||||||
pub ok: Option<CaptchaResponse>, // Will be None if captchas are disabled
|
pub ok: Option<CaptchaResponse>, // Will be None if captchas are disabled
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct CaptchaResponse {
|
pub struct CaptchaResponse {
|
||||||
pub png: String, // A Base64 encoded png
|
pub png: String, // A Base64 encoded png
|
||||||
pub wav: String, // A Base64 encoded wav audio
|
pub wav: String, // A Base64 encoded wav audio
|
||||||
pub uuid: String,
|
pub uuid: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct SaveUserSettings {
|
pub struct SaveUserSettings {
|
||||||
pub show_nsfw: Option<bool>,
|
pub show_nsfw: Option<bool>,
|
||||||
pub show_scores: Option<bool>,
|
pub show_scores: Option<bool>,
|
||||||
|
@ -63,7 +66,7 @@ pub struct SaveUserSettings {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct ChangePassword {
|
pub struct ChangePassword {
|
||||||
pub new_password: Sensitive<String>,
|
pub new_password: Sensitive<String>,
|
||||||
pub new_password_verify: Sensitive<String>,
|
pub new_password_verify: Sensitive<String>,
|
||||||
|
@ -71,7 +74,7 @@ pub struct ChangePassword {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct LoginResponse {
|
pub struct LoginResponse {
|
||||||
/// This is None in response to `Register` if email verification is enabled, or the server requires registration applications.
|
/// This is None in response to `Register` if email verification is enabled, or the server requires registration applications.
|
||||||
pub jwt: Option<Sensitive<String>>,
|
pub jwt: Option<Sensitive<String>>,
|
||||||
|
@ -79,12 +82,12 @@ pub struct LoginResponse {
|
||||||
pub verify_email_sent: bool,
|
pub verify_email_sent: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetPersonDetails {
|
pub struct GetPersonDetails {
|
||||||
pub person_id: Option<PersonId>, // One of these two are required
|
pub person_id: Option<PersonId>, // One of these two are required
|
||||||
/// Example: dessalines , or dessalines@xyz.tld
|
/// Example: dessalines , or dessalines@xyz.tld
|
||||||
pub username: Option<String>,
|
pub username: Option<String>,
|
||||||
pub sort: Option<String>,
|
pub sort: Option<SortType>,
|
||||||
pub page: Option<i64>,
|
pub page: Option<i64>,
|
||||||
pub limit: Option<i64>,
|
pub limit: Option<i64>,
|
||||||
pub community_id: Option<CommunityId>,
|
pub community_id: Option<CommunityId>,
|
||||||
|
@ -92,7 +95,7 @@ pub struct GetPersonDetails {
|
||||||
pub auth: Option<Sensitive<String>>,
|
pub auth: Option<Sensitive<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetPersonDetailsResponse {
|
pub struct GetPersonDetailsResponse {
|
||||||
pub person_view: PersonViewSafe,
|
pub person_view: PersonViewSafe,
|
||||||
pub comments: Vec<CommentView>,
|
pub comments: Vec<CommentView>,
|
||||||
|
@ -100,22 +103,22 @@ pub struct GetPersonDetailsResponse {
|
||||||
pub moderates: Vec<CommunityModeratorView>,
|
pub moderates: Vec<CommunityModeratorView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetRepliesResponse {
|
pub struct GetRepliesResponse {
|
||||||
pub replies: Vec<CommentView>,
|
pub replies: Vec<CommentView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetPersonMentionsResponse {
|
pub struct GetPersonMentionsResponse {
|
||||||
pub mentions: Vec<PersonMentionView>,
|
pub mentions: Vec<PersonMentionView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct MarkAllAsRead {
|
pub struct MarkAllAsRead {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct AddAdmin {
|
pub struct AddAdmin {
|
||||||
pub person_id: PersonId,
|
pub person_id: PersonId,
|
||||||
pub added: bool,
|
pub added: bool,
|
||||||
|
@ -127,7 +130,7 @@ pub struct AddAdminResponse {
|
||||||
pub admins: Vec<PersonViewSafe>,
|
pub admins: Vec<PersonViewSafe>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct BanPerson {
|
pub struct BanPerson {
|
||||||
pub person_id: PersonId,
|
pub person_id: PersonId,
|
||||||
pub ban: bool,
|
pub ban: bool,
|
||||||
|
@ -137,12 +140,12 @@ pub struct BanPerson {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetBannedPersons {
|
pub struct GetBannedPersons {
|
||||||
pub auth: String,
|
pub auth: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct BannedPersonsResponse {
|
pub struct BannedPersonsResponse {
|
||||||
pub banned: Vec<PersonViewSafe>,
|
pub banned: Vec<PersonViewSafe>,
|
||||||
}
|
}
|
||||||
|
@ -153,7 +156,7 @@ pub struct BanPersonResponse {
|
||||||
pub banned: bool,
|
pub banned: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct BlockPerson {
|
pub struct BlockPerson {
|
||||||
pub person_id: PersonId,
|
pub person_id: PersonId,
|
||||||
pub block: bool,
|
pub block: bool,
|
||||||
|
@ -166,25 +169,25 @@ pub struct BlockPersonResponse {
|
||||||
pub blocked: bool,
|
pub blocked: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetReplies {
|
pub struct GetReplies {
|
||||||
pub sort: Option<String>,
|
pub sort: Option<SortType>,
|
||||||
pub page: Option<i64>,
|
pub page: Option<i64>,
|
||||||
pub limit: Option<i64>,
|
pub limit: Option<i64>,
|
||||||
pub unread_only: Option<bool>,
|
pub unread_only: Option<bool>,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetPersonMentions {
|
pub struct GetPersonMentions {
|
||||||
pub sort: Option<String>,
|
pub sort: Option<SortType>,
|
||||||
pub page: Option<i64>,
|
pub page: Option<i64>,
|
||||||
pub limit: Option<i64>,
|
pub limit: Option<i64>,
|
||||||
pub unread_only: Option<bool>,
|
pub unread_only: Option<bool>,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct MarkPersonMentionAsRead {
|
pub struct MarkPersonMentionAsRead {
|
||||||
pub person_mention_id: PersonMentionId,
|
pub person_mention_id: PersonMentionId,
|
||||||
pub read: bool,
|
pub read: bool,
|
||||||
|
@ -196,7 +199,7 @@ pub struct PersonMentionResponse {
|
||||||
pub person_mention_view: PersonMentionView,
|
pub person_mention_view: PersonMentionView,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct DeleteAccount {
|
pub struct DeleteAccount {
|
||||||
pub password: Sensitive<String>,
|
pub password: Sensitive<String>,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
|
@ -205,7 +208,7 @@ pub struct DeleteAccount {
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct DeleteAccountResponse {}
|
pub struct DeleteAccountResponse {}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct PasswordReset {
|
pub struct PasswordReset {
|
||||||
pub email: Sensitive<String>,
|
pub email: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
@ -213,42 +216,42 @@ pub struct PasswordReset {
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct PasswordResetResponse {}
|
pub struct PasswordResetResponse {}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct PasswordChangeAfterReset {
|
pub struct PasswordChangeAfterReset {
|
||||||
pub token: Sensitive<String>,
|
pub token: Sensitive<String>,
|
||||||
pub password: Sensitive<String>,
|
pub password: Sensitive<String>,
|
||||||
pub password_verify: Sensitive<String>,
|
pub password_verify: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct CreatePrivateMessage {
|
pub struct CreatePrivateMessage {
|
||||||
pub content: String,
|
pub content: String,
|
||||||
pub recipient_id: PersonId,
|
pub recipient_id: PersonId,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct EditPrivateMessage {
|
pub struct EditPrivateMessage {
|
||||||
pub private_message_id: PrivateMessageId,
|
pub private_message_id: PrivateMessageId,
|
||||||
pub content: String,
|
pub content: String,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct DeletePrivateMessage {
|
pub struct DeletePrivateMessage {
|
||||||
pub private_message_id: PrivateMessageId,
|
pub private_message_id: PrivateMessageId,
|
||||||
pub deleted: bool,
|
pub deleted: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct MarkPrivateMessageAsRead {
|
pub struct MarkPrivateMessageAsRead {
|
||||||
pub private_message_id: PrivateMessageId,
|
pub private_message_id: PrivateMessageId,
|
||||||
pub read: bool,
|
pub read: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetPrivateMessages {
|
pub struct GetPrivateMessages {
|
||||||
pub unread_only: Option<bool>,
|
pub unread_only: Option<bool>,
|
||||||
pub page: Option<i64>,
|
pub page: Option<i64>,
|
||||||
|
@ -266,7 +269,7 @@ pub struct PrivateMessageResponse {
|
||||||
pub private_message_view: PrivateMessageView,
|
pub private_message_view: PrivateMessageView,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetReportCount {
|
pub struct GetReportCount {
|
||||||
pub community_id: Option<CommunityId>,
|
pub community_id: Option<CommunityId>,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
|
@ -279,7 +282,7 @@ pub struct GetReportCountResponse {
|
||||||
pub post_reports: i64,
|
pub post_reports: i64,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetUnreadCount {
|
pub struct GetUnreadCount {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
@ -291,7 +294,7 @@ pub struct GetUnreadCountResponse {
|
||||||
pub private_messages: i64,
|
pub private_messages: i64,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct VerifyEmail {
|
pub struct VerifyEmail {
|
||||||
pub token: String,
|
pub token: String,
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
use crate::sensitive::Sensitive;
|
use crate::sensitive::Sensitive;
|
||||||
use lemmy_db_schema::newtypes::{CommunityId, PostId, PostReportId};
|
use lemmy_db_schema::{
|
||||||
|
newtypes::{CommunityId, PostId, PostReportId},
|
||||||
|
ListingType,
|
||||||
|
SortType,
|
||||||
|
};
|
||||||
use lemmy_db_views::structs::{CommentView, PostReportView, PostView};
|
use lemmy_db_views::structs::{CommentView, PostReportView, PostView};
|
||||||
use lemmy_db_views_actor::structs::{CommunityModeratorView, CommunityView};
|
use lemmy_db_views_actor::structs::{CommunityModeratorView, CommunityView};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct CreatePost {
|
pub struct CreatePost {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
|
@ -21,13 +25,13 @@ pub struct PostResponse {
|
||||||
pub post_view: PostView,
|
pub post_view: PostView,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetPost {
|
pub struct GetPost {
|
||||||
pub id: PostId,
|
pub id: PostId,
|
||||||
pub auth: Option<Sensitive<String>>,
|
pub auth: Option<Sensitive<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetPostResponse {
|
pub struct GetPostResponse {
|
||||||
pub post_view: PostView,
|
pub post_view: PostView,
|
||||||
pub community_view: CommunityView,
|
pub community_view: CommunityView,
|
||||||
|
@ -36,10 +40,10 @@ pub struct GetPostResponse {
|
||||||
pub online: usize,
|
pub online: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
|
||||||
pub struct GetPosts {
|
pub struct GetPosts {
|
||||||
pub type_: Option<String>,
|
pub type_: Option<ListingType>,
|
||||||
pub sort: Option<String>,
|
pub sort: Option<SortType>,
|
||||||
pub page: Option<i64>,
|
pub page: Option<i64>,
|
||||||
pub limit: Option<i64>,
|
pub limit: Option<i64>,
|
||||||
pub community_id: Option<CommunityId>,
|
pub community_id: Option<CommunityId>,
|
||||||
|
@ -48,19 +52,19 @@ pub struct GetPosts {
|
||||||
pub auth: Option<Sensitive<String>>,
|
pub auth: Option<Sensitive<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||||
pub struct GetPostsResponse {
|
pub struct GetPostsResponse {
|
||||||
pub posts: Vec<PostView>,
|
pub posts: Vec<PostView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct CreatePostLike {
|
pub struct CreatePostLike {
|
||||||
pub post_id: PostId,
|
pub post_id: PostId,
|
||||||
pub score: i16,
|
pub score: i16,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct EditPost {
|
pub struct EditPost {
|
||||||
pub post_id: PostId,
|
pub post_id: PostId,
|
||||||
pub name: Option<String>,
|
pub name: Option<String>,
|
||||||
|
@ -70,14 +74,14 @@ pub struct EditPost {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct DeletePost {
|
pub struct DeletePost {
|
||||||
pub post_id: PostId,
|
pub post_id: PostId,
|
||||||
pub deleted: bool,
|
pub deleted: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct RemovePost {
|
pub struct RemovePost {
|
||||||
pub post_id: PostId,
|
pub post_id: PostId,
|
||||||
pub removed: bool,
|
pub removed: bool,
|
||||||
|
@ -85,35 +89,35 @@ pub struct RemovePost {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct MarkPostAsRead {
|
pub struct MarkPostAsRead {
|
||||||
pub post_id: PostId,
|
pub post_id: PostId,
|
||||||
pub read: bool,
|
pub read: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct LockPost {
|
pub struct LockPost {
|
||||||
pub post_id: PostId,
|
pub post_id: PostId,
|
||||||
pub locked: bool,
|
pub locked: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct StickyPost {
|
pub struct StickyPost {
|
||||||
pub post_id: PostId,
|
pub post_id: PostId,
|
||||||
pub stickied: bool,
|
pub stickied: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct SavePost {
|
pub struct SavePost {
|
||||||
pub post_id: PostId,
|
pub post_id: PostId,
|
||||||
pub save: bool,
|
pub save: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct CreatePostReport {
|
pub struct CreatePostReport {
|
||||||
pub post_id: PostId,
|
pub post_id: PostId,
|
||||||
pub reason: String,
|
pub reason: String,
|
||||||
|
@ -125,14 +129,14 @@ pub struct PostReportResponse {
|
||||||
pub post_report_view: PostReportView,
|
pub post_report_view: PostReportView,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct ResolvePostReport {
|
pub struct ResolvePostReport {
|
||||||
pub report_id: PostReportId,
|
pub report_id: PostReportId,
|
||||||
pub resolved: bool,
|
pub resolved: bool,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct ListPostReports {
|
pub struct ListPostReports {
|
||||||
pub page: Option<i64>,
|
pub page: Option<i64>,
|
||||||
pub limit: Option<i64>,
|
pub limit: Option<i64>,
|
||||||
|
@ -143,22 +147,22 @@ pub struct ListPostReports {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct ListPostReportsResponse {
|
pub struct ListPostReportsResponse {
|
||||||
pub post_reports: Vec<PostReportView>,
|
pub post_reports: Vec<PostReportView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetSiteMetadata {
|
pub struct GetSiteMetadata {
|
||||||
pub url: Url,
|
pub url: Url,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Clone, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetSiteMetadataResponse {
|
pub struct GetSiteMetadataResponse {
|
||||||
pub metadata: SiteMetadata,
|
pub metadata: SiteMetadata,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Deserialize, Serialize, Debug, PartialEq, Clone)]
|
#[derive(Debug, Deserialize, Serialize, PartialEq, Clone)]
|
||||||
pub struct SiteMetadata {
|
pub struct SiteMetadata {
|
||||||
pub title: Option<String>,
|
pub title: Option<String>,
|
||||||
pub description: Option<String>,
|
pub description: Option<String>,
|
||||||
|
|
|
@ -4,7 +4,7 @@ use std::{
|
||||||
ops::{Deref, DerefMut},
|
ops::{Deref, DerefMut},
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Deserialize, Serialize)]
|
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash, Deserialize, Serialize, Default)]
|
||||||
#[serde(transparent)]
|
#[serde(transparent)]
|
||||||
pub struct Sensitive<T>(T);
|
pub struct Sensitive<T>(T);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
use crate::sensitive::Sensitive;
|
use crate::sensitive::Sensitive;
|
||||||
use lemmy_db_schema::newtypes::{CommunityId, PersonId};
|
use lemmy_db_schema::{
|
||||||
|
newtypes::{CommunityId, PersonId},
|
||||||
|
ListingType,
|
||||||
|
SearchType,
|
||||||
|
SortType,
|
||||||
|
};
|
||||||
use lemmy_db_views::structs::{
|
use lemmy_db_views::structs::{
|
||||||
CommentView,
|
CommentView,
|
||||||
LocalUserSettingsView,
|
LocalUserSettingsView,
|
||||||
|
@ -30,21 +35,21 @@ use lemmy_db_views_moderator::structs::{
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct Search {
|
pub struct Search {
|
||||||
pub q: String,
|
pub q: String,
|
||||||
pub community_id: Option<CommunityId>,
|
pub community_id: Option<CommunityId>,
|
||||||
pub community_name: Option<String>,
|
pub community_name: Option<String>,
|
||||||
pub creator_id: Option<PersonId>,
|
pub creator_id: Option<PersonId>,
|
||||||
pub type_: Option<String>,
|
pub type_: Option<SearchType>,
|
||||||
pub sort: Option<String>,
|
pub sort: Option<SortType>,
|
||||||
pub listing_type: Option<String>,
|
pub listing_type: Option<ListingType>,
|
||||||
pub page: Option<i64>,
|
pub page: Option<i64>,
|
||||||
pub limit: Option<i64>,
|
pub limit: Option<i64>,
|
||||||
pub auth: Option<Sensitive<String>>,
|
pub auth: Option<Sensitive<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct SearchResponse {
|
pub struct SearchResponse {
|
||||||
pub type_: String,
|
pub type_: String,
|
||||||
pub comments: Vec<CommentView>,
|
pub comments: Vec<CommentView>,
|
||||||
|
@ -53,7 +58,7 @@ pub struct SearchResponse {
|
||||||
pub users: Vec<PersonViewSafe>,
|
pub users: Vec<PersonViewSafe>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct ResolveObject {
|
pub struct ResolveObject {
|
||||||
pub q: String,
|
pub q: String,
|
||||||
pub auth: Option<Sensitive<String>>,
|
pub auth: Option<Sensitive<String>>,
|
||||||
|
@ -67,7 +72,7 @@ pub struct ResolveObjectResponse {
|
||||||
pub person: Option<PersonViewSafe>,
|
pub person: Option<PersonViewSafe>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetModlog {
|
pub struct GetModlog {
|
||||||
pub mod_person_id: Option<PersonId>,
|
pub mod_person_id: Option<PersonId>,
|
||||||
pub community_id: Option<CommunityId>,
|
pub community_id: Option<CommunityId>,
|
||||||
|
@ -76,7 +81,7 @@ pub struct GetModlog {
|
||||||
pub auth: Option<Sensitive<String>>,
|
pub auth: Option<Sensitive<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetModlogResponse {
|
pub struct GetModlogResponse {
|
||||||
pub removed_posts: Vec<ModRemovePostView>,
|
pub removed_posts: Vec<ModRemovePostView>,
|
||||||
pub locked_posts: Vec<ModLockPostView>,
|
pub locked_posts: Vec<ModLockPostView>,
|
||||||
|
@ -91,7 +96,7 @@ pub struct GetModlogResponse {
|
||||||
pub hidden_communities: Vec<ModHideCommunityView>,
|
pub hidden_communities: Vec<ModHideCommunityView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct CreateSite {
|
pub struct CreateSite {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub sidebar: Option<String>,
|
pub sidebar: Option<String>,
|
||||||
|
@ -111,7 +116,7 @@ pub struct CreateSite {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct EditSite {
|
pub struct EditSite {
|
||||||
pub name: Option<String>,
|
pub name: Option<String>,
|
||||||
pub sidebar: Option<String>,
|
pub sidebar: Option<String>,
|
||||||
|
@ -131,7 +136,7 @@ pub struct EditSite {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct GetSite {
|
pub struct GetSite {
|
||||||
pub auth: Option<Sensitive<String>>,
|
pub auth: Option<Sensitive<String>>,
|
||||||
}
|
}
|
||||||
|
@ -141,7 +146,7 @@ pub struct SiteResponse {
|
||||||
pub site_view: SiteView,
|
pub site_view: SiteView,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetSiteResponse {
|
pub struct GetSiteResponse {
|
||||||
pub site_view: Option<SiteView>, // Because the site might not be set up yet
|
pub site_view: Option<SiteView>, // Because the site might not be set up yet
|
||||||
pub admins: Vec<PersonViewSafe>,
|
pub admins: Vec<PersonViewSafe>,
|
||||||
|
@ -151,7 +156,7 @@ pub struct GetSiteResponse {
|
||||||
pub federated_instances: Option<FederatedInstances>, // Federation may be disabled
|
pub federated_instances: Option<FederatedInstances>, // Federation may be disabled
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct MyUserInfo {
|
pub struct MyUserInfo {
|
||||||
pub local_user_view: LocalUserSettingsView,
|
pub local_user_view: LocalUserSettingsView,
|
||||||
pub follows: Vec<CommunityFollowerView>,
|
pub follows: Vec<CommunityFollowerView>,
|
||||||
|
@ -160,35 +165,35 @@ pub struct MyUserInfo {
|
||||||
pub person_blocks: Vec<PersonBlockView>,
|
pub person_blocks: Vec<PersonBlockView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct LeaveAdmin {
|
pub struct LeaveAdmin {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetSiteConfig {
|
pub struct GetSiteConfig {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetSiteConfigResponse {
|
pub struct GetSiteConfigResponse {
|
||||||
pub config_hjson: String,
|
pub config_hjson: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct SaveSiteConfig {
|
pub struct SaveSiteConfig {
|
||||||
pub config_hjson: String,
|
pub config_hjson: String,
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct FederatedInstances {
|
pub struct FederatedInstances {
|
||||||
pub linked: Vec<String>,
|
pub linked: Vec<String>,
|
||||||
pub allowed: Option<Vec<String>>,
|
pub allowed: Option<Vec<String>>,
|
||||||
pub blocked: Option<Vec<String>>,
|
pub blocked: Option<Vec<String>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct ListRegistrationApplications {
|
pub struct ListRegistrationApplications {
|
||||||
/// Only shows the unread applications (IE those without an admin actor)
|
/// Only shows the unread applications (IE those without an admin actor)
|
||||||
pub unread_only: Option<bool>,
|
pub unread_only: Option<bool>,
|
||||||
|
@ -197,12 +202,12 @@ pub struct ListRegistrationApplications {
|
||||||
pub auth: String,
|
pub auth: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct ListRegistrationApplicationsResponse {
|
pub struct ListRegistrationApplicationsResponse {
|
||||||
pub registration_applications: Vec<RegistrationApplicationView>,
|
pub registration_applications: Vec<RegistrationApplicationView>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone, Default)]
|
||||||
pub struct ApproveRegistrationApplication {
|
pub struct ApproveRegistrationApplication {
|
||||||
pub id: i32,
|
pub id: i32,
|
||||||
pub approve: bool,
|
pub approve: bool,
|
||||||
|
@ -210,17 +215,17 @@ pub struct ApproveRegistrationApplication {
|
||||||
pub auth: String,
|
pub auth: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct RegistrationApplicationResponse {
|
pub struct RegistrationApplicationResponse {
|
||||||
pub registration_application: RegistrationApplicationView,
|
pub registration_application: RegistrationApplicationView,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetUnreadRegistrationApplicationCount {
|
pub struct GetUnreadRegistrationApplicationCount {
|
||||||
pub auth: String,
|
pub auth: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Clone)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct GetUnreadRegistrationApplicationCountResponse {
|
pub struct GetUnreadRegistrationApplicationCountResponse {
|
||||||
pub registration_applications: i64,
|
pub registration_applications: i64,
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ use crate::sensitive::Sensitive;
|
||||||
use lemmy_db_schema::newtypes::{CommunityId, PostId};
|
use lemmy_db_schema::newtypes::{CommunityId, PostId};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct UserJoin {
|
pub struct UserJoin {
|
||||||
pub auth: Sensitive<String>,
|
pub auth: Sensitive<String>,
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ pub struct UserJoinResponse {
|
||||||
pub joined: bool,
|
pub joined: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct CommunityJoin {
|
pub struct CommunityJoin {
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ pub struct CommunityJoinResponse {
|
||||||
pub joined: bool,
|
pub joined: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct ModJoin {
|
pub struct ModJoin {
|
||||||
pub community_id: CommunityId,
|
pub community_id: CommunityId,
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ pub struct ModJoinResponse {
|
||||||
pub joined: bool,
|
pub joined: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct PostJoin {
|
pub struct PostJoin {
|
||||||
pub post_id: PostId,
|
pub post_id: PostId,
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,11 +5,7 @@ use lemmy_api_common::{
|
||||||
utils::{blocking, check_private_instance, get_local_user_view_from_jwt_opt},
|
utils::{blocking, check_private_instance, get_local_user_view_from_jwt_opt},
|
||||||
};
|
};
|
||||||
use lemmy_apub::{fetcher::resolve_actor_identifier, objects::community::ApubCommunity};
|
use lemmy_apub::{fetcher::resolve_actor_identifier, objects::community::ApubCommunity};
|
||||||
use lemmy_db_schema::{
|
use lemmy_db_schema::{source::community::Community, traits::DeleteableOrRemoveable};
|
||||||
source::community::Community,
|
|
||||||
traits::DeleteableOrRemoveable,
|
|
||||||
utils::{from_opt_str_to_opt_enum, ListingType, SortType},
|
|
||||||
};
|
|
||||||
use lemmy_db_views::comment_view::CommentQueryBuilder;
|
use lemmy_db_views::comment_view::CommentQueryBuilder;
|
||||||
use lemmy_utils::{ConnectionId, LemmyError};
|
use lemmy_utils::{ConnectionId, LemmyError};
|
||||||
use lemmy_websocket::LemmyContext;
|
use lemmy_websocket::LemmyContext;
|
||||||
|
@ -36,9 +32,6 @@ impl PerformCrud for GetComments {
|
||||||
.map(|t| t.local_user.show_bot_accounts);
|
.map(|t| t.local_user.show_bot_accounts);
|
||||||
let person_id = local_user_view.map(|u| u.person.id);
|
let person_id = local_user_view.map(|u| u.person.id);
|
||||||
|
|
||||||
let sort: Option<SortType> = from_opt_str_to_opt_enum(&data.sort);
|
|
||||||
let listing_type: Option<ListingType> = from_opt_str_to_opt_enum(&data.type_);
|
|
||||||
|
|
||||||
let community_id = data.community_id;
|
let community_id = data.community_id;
|
||||||
let community_actor_id = if let Some(name) = &data.community_name {
|
let community_actor_id = if let Some(name) = &data.community_name {
|
||||||
resolve_actor_identifier::<ApubCommunity, Community>(name, context)
|
resolve_actor_identifier::<ApubCommunity, Community>(name, context)
|
||||||
|
@ -48,6 +41,8 @@ impl PerformCrud for GetComments {
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
};
|
};
|
||||||
|
let sort = data.sort;
|
||||||
|
let listing_type = data.type_;
|
||||||
let saved_only = data.saved_only;
|
let saved_only = data.saved_only;
|
||||||
let page = data.page;
|
let page = data.page;
|
||||||
let limit = data.limit;
|
let limit = data.limit;
|
||||||
|
|
|
@ -4,10 +4,7 @@ use lemmy_api_common::{
|
||||||
community::{ListCommunities, ListCommunitiesResponse},
|
community::{ListCommunities, ListCommunitiesResponse},
|
||||||
utils::{blocking, check_private_instance, get_local_user_view_from_jwt_opt},
|
utils::{blocking, check_private_instance, get_local_user_view_from_jwt_opt},
|
||||||
};
|
};
|
||||||
use lemmy_db_schema::{
|
use lemmy_db_schema::traits::DeleteableOrRemoveable;
|
||||||
traits::DeleteableOrRemoveable,
|
|
||||||
utils::{from_opt_str_to_opt_enum, ListingType, SortType},
|
|
||||||
};
|
|
||||||
use lemmy_db_views_actor::community_view::CommunityQueryBuilder;
|
use lemmy_db_views_actor::community_view::CommunityQueryBuilder;
|
||||||
use lemmy_utils::{ConnectionId, LemmyError};
|
use lemmy_utils::{ConnectionId, LemmyError};
|
||||||
use lemmy_websocket::LemmyContext;
|
use lemmy_websocket::LemmyContext;
|
||||||
|
@ -37,9 +34,8 @@ impl PerformCrud for ListCommunities {
|
||||||
None => false,
|
None => false,
|
||||||
};
|
};
|
||||||
|
|
||||||
let sort: Option<SortType> = from_opt_str_to_opt_enum(&data.sort);
|
let sort = data.sort;
|
||||||
let listing_type: Option<ListingType> = from_opt_str_to_opt_enum(&data.type_);
|
let listing_type = data.type_;
|
||||||
|
|
||||||
let page = data.page;
|
let page = data.page;
|
||||||
let limit = data.limit;
|
let limit = data.limit;
|
||||||
let mut communities = blocking(context.pool(), move |conn| {
|
let mut communities = blocking(context.pool(), move |conn| {
|
||||||
|
|
|
@ -8,7 +8,7 @@ use lemmy_apub::{fetcher::resolve_actor_identifier, objects::community::ApubComm
|
||||||
use lemmy_db_schema::{
|
use lemmy_db_schema::{
|
||||||
source::{community::Community, site::Site},
|
source::{community::Community, site::Site},
|
||||||
traits::DeleteableOrRemoveable,
|
traits::DeleteableOrRemoveable,
|
||||||
utils::{from_opt_str_to_opt_enum, ListingType, SortType},
|
ListingType,
|
||||||
};
|
};
|
||||||
use lemmy_db_views::post_view::PostQueryBuilder;
|
use lemmy_db_views::post_view::PostQueryBuilder;
|
||||||
use lemmy_utils::{ConnectionId, LemmyError};
|
use lemmy_utils::{ConnectionId, LemmyError};
|
||||||
|
@ -42,15 +42,14 @@ impl PerformCrud for GetPosts {
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|t| t.local_user.show_read_posts);
|
.map(|t| t.local_user.show_read_posts);
|
||||||
|
|
||||||
let sort: Option<SortType> = from_opt_str_to_opt_enum(&data.sort);
|
let sort = data.sort;
|
||||||
let listing_type: ListingType = match from_opt_str_to_opt_enum(&data.type_) {
|
let listing_type: ListingType = match data.type_ {
|
||||||
Some(l) => l,
|
Some(l) => l,
|
||||||
None => {
|
None => {
|
||||||
let site = blocking(context.pool(), Site::read_local_site).await??;
|
let site = blocking(context.pool(), Site::read_local_site).await??;
|
||||||
ListingType::from_str(&site.default_post_listing_type)?
|
ListingType::from_str(&site.default_post_listing_type)?
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let page = data.page;
|
let page = data.page;
|
||||||
let limit = data.limit;
|
let limit = data.limit;
|
||||||
let community_id = data.community_id;
|
let community_id = data.community_id;
|
||||||
|
|
|
@ -16,7 +16,8 @@ use lemmy_db_schema::{
|
||||||
site::{Site, SiteForm},
|
site::{Site, SiteForm},
|
||||||
},
|
},
|
||||||
traits::Crud,
|
traits::Crud,
|
||||||
utils::{diesel_option_overwrite, diesel_option_overwrite_to_url, naive_now, ListingType},
|
utils::{diesel_option_overwrite, diesel_option_overwrite_to_url, naive_now},
|
||||||
|
ListingType,
|
||||||
};
|
};
|
||||||
use lemmy_db_views::structs::SiteView;
|
use lemmy_db_views::structs::SiteView;
|
||||||
use lemmy_utils::{utils::check_slurs_opt, ConnectionId, LemmyError};
|
use lemmy_utils::{utils::check_slurs_opt, ConnectionId, LemmyError};
|
||||||
|
|
|
@ -5,10 +5,7 @@ use lemmy_api_common::{
|
||||||
utils::{blocking, check_private_instance, get_local_user_view_from_jwt_opt},
|
utils::{blocking, check_private_instance, get_local_user_view_from_jwt_opt},
|
||||||
};
|
};
|
||||||
use lemmy_apub::{fetcher::resolve_actor_identifier, objects::person::ApubPerson};
|
use lemmy_apub::{fetcher::resolve_actor_identifier, objects::person::ApubPerson};
|
||||||
use lemmy_db_schema::{
|
use lemmy_db_schema::source::person::Person;
|
||||||
source::person::Person,
|
|
||||||
utils::{from_opt_str_to_opt_enum, SortType},
|
|
||||||
};
|
|
||||||
use lemmy_db_views::{comment_view::CommentQueryBuilder, post_view::PostQueryBuilder};
|
use lemmy_db_views::{comment_view::CommentQueryBuilder, post_view::PostQueryBuilder};
|
||||||
use lemmy_db_views_actor::structs::{CommunityModeratorView, PersonViewSafe};
|
use lemmy_db_views_actor::structs::{CommunityModeratorView, PersonViewSafe};
|
||||||
use lemmy_utils::{ConnectionId, LemmyError};
|
use lemmy_utils::{ConnectionId, LemmyError};
|
||||||
|
@ -39,8 +36,6 @@ impl PerformCrud for GetPersonDetails {
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.map(|t| t.local_user.show_read_posts);
|
.map(|t| t.local_user.show_read_posts);
|
||||||
|
|
||||||
let sort: Option<SortType> = from_opt_str_to_opt_enum(&data.sort);
|
|
||||||
|
|
||||||
let person_details_id = match data.person_id {
|
let person_details_id = match data.person_id {
|
||||||
Some(id) => id,
|
Some(id) => id,
|
||||||
None => {
|
None => {
|
||||||
|
@ -66,6 +61,7 @@ impl PerformCrud for GetPersonDetails {
|
||||||
})
|
})
|
||||||
.await??;
|
.await??;
|
||||||
|
|
||||||
|
let sort = data.sort;
|
||||||
let page = data.page;
|
let page = data.page;
|
||||||
let limit = data.limit;
|
let limit = data.limit;
|
||||||
let saved_only = data.saved_only;
|
let saved_only = data.saved_only;
|
||||||
|
|
|
@ -14,12 +14,14 @@ doctest = false
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
full = ["diesel", "diesel-derive-newtype", "diesel_migrations", "bcrypt", "lemmy_utils",
|
full = ["diesel", "diesel-derive-newtype", "diesel_migrations", "bcrypt", "lemmy_utils",
|
||||||
"lemmy_apub_lib", "strum", "strum_macros", "sha2", "regex", "once_cell", "serde_json"]
|
"lemmy_apub_lib", "sha2", "regex", "once_cell", "serde_json"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
chrono = { version = "0.4.19", features = ["serde"], default-features = false }
|
chrono = { version = "0.4.19", features = ["serde"], default-features = false }
|
||||||
serde = { version = "1.0.136", features = ["derive"] }
|
serde = { version = "1.0.136", features = ["derive"] }
|
||||||
url = { version = "2.2.2", features = ["serde"] }
|
url = { version = "2.2.2", features = ["serde"] }
|
||||||
|
strum = "0.24.0"
|
||||||
|
strum_macros = "0.24.0"
|
||||||
serde_json = { version = "1.0.79", features = ["preserve_order"], optional = true }
|
serde_json = { version = "1.0.79", features = ["preserve_order"], optional = true }
|
||||||
lemmy_apub_lib = { version = "=0.16.3", path = "../apub_lib", optional = true }
|
lemmy_apub_lib = { version = "=0.16.3", path = "../apub_lib", optional = true }
|
||||||
lemmy_utils = { version = "=0.16.3", path = "../utils", optional = true }
|
lemmy_utils = { version = "=0.16.3", path = "../utils", optional = true }
|
||||||
|
@ -27,8 +29,6 @@ bcrypt = { version = "0.12.1", optional = true }
|
||||||
diesel = { version = "1.4.8", features = ["postgres","chrono","r2d2","serde_json"], optional = true }
|
diesel = { version = "1.4.8", features = ["postgres","chrono","r2d2","serde_json"], optional = true }
|
||||||
diesel-derive-newtype = { version = "0.1.2", optional = true }
|
diesel-derive-newtype = { version = "0.1.2", optional = true }
|
||||||
diesel_migrations = { version = "1.4.0", optional = true }
|
diesel_migrations = { version = "1.4.0", optional = true }
|
||||||
strum = { version = "0.24.0", optional = true }
|
|
||||||
strum_macros = { version = "0.24.0", optional = true }
|
|
||||||
sha2 = { version = "0.10.2", optional = true }
|
sha2 = { version = "0.10.2", optional = true }
|
||||||
regex = { version = "1.5.5", optional = true }
|
regex = { version = "1.5.5", optional = true }
|
||||||
once_cell = { version = "1.10.0", optional = true }
|
once_cell = { version = "1.10.0", optional = true }
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
#[cfg(feature = "full")]
|
#[cfg(feature = "full")]
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate strum_macros;
|
|
||||||
#[cfg(feature = "full")]
|
|
||||||
#[macro_use]
|
|
||||||
extern crate diesel;
|
extern crate diesel;
|
||||||
#[cfg(feature = "full")]
|
#[cfg(feature = "full")]
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
|
@ -24,3 +21,38 @@ pub mod source;
|
||||||
pub mod traits;
|
pub mod traits;
|
||||||
#[cfg(feature = "full")]
|
#[cfg(feature = "full")]
|
||||||
pub mod utils;
|
pub mod utils;
|
||||||
|
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
use strum_macros::{Display, EnumString};
|
||||||
|
|
||||||
|
#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)]
|
||||||
|
pub enum SortType {
|
||||||
|
Active,
|
||||||
|
Hot,
|
||||||
|
New,
|
||||||
|
TopDay,
|
||||||
|
TopWeek,
|
||||||
|
TopMonth,
|
||||||
|
TopYear,
|
||||||
|
TopAll,
|
||||||
|
MostComments,
|
||||||
|
NewComments,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq)]
|
||||||
|
pub enum ListingType {
|
||||||
|
All,
|
||||||
|
Local,
|
||||||
|
Subscribed,
|
||||||
|
Community,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)]
|
||||||
|
pub enum SearchType {
|
||||||
|
All,
|
||||||
|
Comments,
|
||||||
|
Posts,
|
||||||
|
Communities,
|
||||||
|
Users,
|
||||||
|
Url,
|
||||||
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ impl fmt::Display for PostId {
|
||||||
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
||||||
pub struct PersonId(pub i32);
|
pub struct PersonId(pub i32);
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
|
||||||
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
||||||
pub struct CommentId(pub i32);
|
pub struct CommentId(pub i32);
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ pub struct CommunityId(pub i32);
|
||||||
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
||||||
pub struct LocalUserId(pub i32);
|
pub struct LocalUserId(pub i32);
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
|
||||||
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
||||||
pub struct PrivateMessageId(i32);
|
pub struct PrivateMessageId(i32);
|
||||||
|
|
||||||
|
@ -48,23 +48,23 @@ impl fmt::Display for PrivateMessageId {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
|
||||||
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
||||||
pub struct PersonMentionId(i32);
|
pub struct PersonMentionId(i32);
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
|
||||||
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
||||||
pub struct PersonBlockId(i32);
|
pub struct PersonBlockId(i32);
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
|
||||||
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
||||||
pub struct CommunityBlockId(i32);
|
pub struct CommunityBlockId(i32);
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
|
||||||
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
||||||
pub struct CommentReportId(i32);
|
pub struct CommentReportId(i32);
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Copy, Clone, Hash, Eq, PartialEq, Serialize, Deserialize, Default)]
|
||||||
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
#[cfg_attr(feature = "full", derive(DieselNewType))]
|
||||||
pub struct PostReportId(i32);
|
pub struct PostReportId(i32);
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@ use lemmy_apub_lib::{object_id::ObjectId, traits::ApubObject};
|
||||||
use lemmy_utils::LemmyError;
|
use lemmy_utils::LemmyError;
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
use serde::{Deserialize, Serialize};
|
|
||||||
use std::{env, env::VarError, io::Write};
|
use std::{env, env::VarError, io::Write};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
|
@ -22,42 +21,6 @@ pub fn get_database_url_from_env() -> Result<String, VarError> {
|
||||||
env::var("LEMMY_DATABASE_URL")
|
env::var("LEMMY_DATABASE_URL")
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)]
|
|
||||||
pub enum SortType {
|
|
||||||
Active,
|
|
||||||
Hot,
|
|
||||||
New,
|
|
||||||
TopDay,
|
|
||||||
TopWeek,
|
|
||||||
TopMonth,
|
|
||||||
TopYear,
|
|
||||||
TopAll,
|
|
||||||
MostComments,
|
|
||||||
NewComments,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy, PartialEq)]
|
|
||||||
pub enum ListingType {
|
|
||||||
All,
|
|
||||||
Local,
|
|
||||||
Subscribed,
|
|
||||||
Community,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(EnumString, Display, Debug, Serialize, Deserialize, Clone, Copy)]
|
|
||||||
pub enum SearchType {
|
|
||||||
All,
|
|
||||||
Comments,
|
|
||||||
Posts,
|
|
||||||
Communities,
|
|
||||||
Users,
|
|
||||||
Url,
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn from_opt_str_to_opt_enum<T: std::str::FromStr>(opt: &Option<String>) -> Option<T> {
|
|
||||||
opt.as_ref().and_then(|t| T::from_str(t).ok())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn fuzzy_search(q: &str) -> String {
|
pub fn fuzzy_search(q: &str) -> String {
|
||||||
let replaced = q.replace('%', "\\%").replace('_', "\\_").replace(' ', "%");
|
let replaced = q.replace('%', "\\%").replace('_', "\\_").replace(' ', "%");
|
||||||
format!("%{}%", replaced)
|
format!("%{}%", replaced)
|
||||||
|
|
|
@ -26,7 +26,9 @@ use lemmy_db_schema::{
|
||||||
post::Post,
|
post::Post,
|
||||||
},
|
},
|
||||||
traits::{MaybeOptional, ToSafe, ViewToVec},
|
traits::{MaybeOptional, ToSafe, ViewToVec},
|
||||||
utils::{functions::hot_rank, fuzzy_search, limit_and_offset, ListingType, SortType},
|
utils::{functions::hot_rank, fuzzy_search, limit_and_offset},
|
||||||
|
ListingType,
|
||||||
|
SortType,
|
||||||
};
|
};
|
||||||
|
|
||||||
type CommentViewTuple = (
|
type CommentViewTuple = (
|
||||||
|
|
|
@ -23,7 +23,9 @@ use lemmy_db_schema::{
|
||||||
post::{Post, PostRead, PostSaved},
|
post::{Post, PostRead, PostSaved},
|
||||||
},
|
},
|
||||||
traits::{MaybeOptional, ToSafe, ViewToVec},
|
traits::{MaybeOptional, ToSafe, ViewToVec},
|
||||||
utils::{functions::hot_rank, fuzzy_search, limit_and_offset, ListingType, SortType},
|
utils::{functions::hot_rank, fuzzy_search, limit_and_offset},
|
||||||
|
ListingType,
|
||||||
|
SortType,
|
||||||
};
|
};
|
||||||
use tracing::debug;
|
use tracing::debug;
|
||||||
|
|
||||||
|
@ -505,7 +507,9 @@ mod tests {
|
||||||
post::*,
|
post::*,
|
||||||
},
|
},
|
||||||
traits::{Blockable, Crud, Likeable},
|
traits::{Blockable, Crud, Likeable},
|
||||||
utils::{establish_unpooled_connection, ListingType, SortType},
|
utils::establish_unpooled_connection,
|
||||||
|
ListingType,
|
||||||
|
SortType,
|
||||||
};
|
};
|
||||||
use serial_test::serial;
|
use serial_test::serial;
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,9 @@ use lemmy_db_schema::{
|
||||||
community_block::CommunityBlock,
|
community_block::CommunityBlock,
|
||||||
},
|
},
|
||||||
traits::{MaybeOptional, ToSafe, ViewToVec},
|
traits::{MaybeOptional, ToSafe, ViewToVec},
|
||||||
utils::{functions::hot_rank, fuzzy_search, limit_and_offset, ListingType, SortType},
|
utils::{functions::hot_rank, fuzzy_search, limit_and_offset},
|
||||||
|
ListingType,
|
||||||
|
SortType,
|
||||||
};
|
};
|
||||||
|
|
||||||
type CommunityViewTuple = (
|
type CommunityViewTuple = (
|
||||||
|
|
|
@ -26,7 +26,8 @@ use lemmy_db_schema::{
|
||||||
post::Post,
|
post::Post,
|
||||||
},
|
},
|
||||||
traits::{MaybeOptional, ToSafe, ViewToVec},
|
traits::{MaybeOptional, ToSafe, ViewToVec},
|
||||||
utils::{functions::hot_rank, limit_and_offset, SortType},
|
utils::{functions::hot_rank, limit_and_offset},
|
||||||
|
SortType,
|
||||||
};
|
};
|
||||||
|
|
||||||
type PersonMentionViewTuple = (
|
type PersonMentionViewTuple = (
|
||||||
|
|
|
@ -6,7 +6,8 @@ use lemmy_db_schema::{
|
||||||
schema::{person, person_aggregates},
|
schema::{person, person_aggregates},
|
||||||
source::person::{Person, PersonSafe},
|
source::person::{Person, PersonSafe},
|
||||||
traits::{MaybeOptional, ToSafe, ViewToVec},
|
traits::{MaybeOptional, ToSafe, ViewToVec},
|
||||||
utils::{fuzzy_search, limit_and_offset, SortType},
|
utils::{fuzzy_search, limit_and_offset},
|
||||||
|
SortType,
|
||||||
};
|
};
|
||||||
|
|
||||||
type PersonViewSafeTuple = (PersonSafe, PersonAggregates);
|
type PersonViewSafeTuple = (PersonSafe, PersonAggregates);
|
||||||
|
|
|
@ -7,7 +7,8 @@ use lemmy_db_schema::{
|
||||||
newtypes::LocalUserId,
|
newtypes::LocalUserId,
|
||||||
source::{community::Community, local_user::LocalUser, person::Person},
|
source::{community::Community, local_user::LocalUser, person::Person},
|
||||||
traits::{ApubActor, Crud},
|
traits::{ApubActor, Crud},
|
||||||
utils::{ListingType, SortType},
|
ListingType,
|
||||||
|
SortType,
|
||||||
};
|
};
|
||||||
use lemmy_db_views::{
|
use lemmy_db_views::{
|
||||||
comment_view::CommentQueryBuilder,
|
comment_view::CommentQueryBuilder,
|
||||||
|
|
Loading…
Reference in a new issue