]> Untitled Git - lemmy.git/blobdiff - crates/api_common/src/post.rs
Diesel 2.0.0 upgrade (#2452)
[lemmy.git] / crates / api_common / src / post.rs
index 5a83a0c50ad7041a3fd86fc31896633ad15a55b1..4f486e0598da8ead2abc90eddd4122a72707a816 100644 (file)
-use lemmy_db_schema::{CommunityId, PostId};
-use lemmy_db_views::{
-  comment_view::CommentView,
-  post_report_view::PostReportView,
-  post_view::PostView,
+use crate::sensitive::Sensitive;
+use lemmy_db_schema::{
+  newtypes::{CommentId, CommunityId, DbUrl, LanguageId, PostId, PostReportId},
+  ListingType,
+  SortType,
 };
-use lemmy_db_views_actor::{
-  community_moderator_view::CommunityModeratorView,
-  community_view::CommunityView,
-};
-use lemmy_utils::request::SiteMetadata;
+use lemmy_db_views::structs::{PostReportView, PostView};
+use lemmy_db_views_actor::structs::{CommunityModeratorView, CommunityView};
 use serde::{Deserialize, Serialize};
 use url::Url;
 
-#[derive(Deserialize, Debug)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct CreatePost {
   pub name: String,
   pub community_id: CommunityId,
   pub url: Option<Url>,
   pub body: Option<String>,
+  pub honeypot: Option<String>,
   pub nsfw: Option<bool>,
-  pub auth: String,
+  pub language_id: Option<LanguageId>,
+  pub auth: Sensitive<String>,
 }
 
-#[derive(Serialize, Clone)]
+#[derive(Debug, Serialize, Deserialize, Clone)]
 pub struct PostResponse {
   pub post_view: PostView,
 }
 
-#[derive(Deserialize)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct GetPost {
-  pub id: PostId,
-  pub auth: Option<String>,
+  pub id: Option<PostId>,
+  pub comment_id: Option<CommentId>,
+  pub auth: Option<Sensitive<String>>,
 }
 
-#[derive(Serialize)]
+#[derive(Debug, Serialize, Deserialize, Clone)]
 pub struct GetPostResponse {
   pub post_view: PostView,
   pub community_view: CommunityView,
-  pub comments: Vec<CommentView>,
   pub moderators: Vec<CommunityModeratorView>,
   pub online: usize,
 }
 
-#[derive(Deserialize, Debug)]
+#[derive(Serialize, Deserialize, Debug, Clone, Default)]
 pub struct GetPosts {
-  pub type_: Option<String>,
-  pub sort: Option<String>,
+  pub type_: Option<ListingType>,
+  pub sort: Option<SortType>,
   pub page: Option<i64>,
   pub limit: Option<i64>,
   pub community_id: Option<CommunityId>,
   pub community_name: Option<String>,
   pub saved_only: Option<bool>,
-  pub auth: Option<String>,
+  pub auth: Option<Sensitive<String>>,
 }
 
-#[derive(Serialize, Debug)]
+#[derive(Serialize, Deserialize, Debug, Clone)]
 pub struct GetPostsResponse {
   pub posts: Vec<PostView>,
 }
 
-#[derive(Deserialize)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct CreatePostLike {
   pub post_id: PostId,
   pub score: i16,
-  pub auth: String,
+  pub auth: Sensitive<String>,
 }
 
-#[derive(Deserialize)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct EditPost {
   pub post_id: PostId,
   pub name: Option<String>,
   pub url: Option<Url>,
   pub body: Option<String>,
   pub nsfw: Option<bool>,
-  pub auth: String,
+  pub language_id: Option<LanguageId>,
+  pub auth: Sensitive<String>,
 }
 
-#[derive(Deserialize)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct DeletePost {
   pub post_id: PostId,
   pub deleted: bool,
-  pub auth: String,
+  pub auth: Sensitive<String>,
 }
 
-#[derive(Deserialize)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct RemovePost {
   pub post_id: PostId,
   pub removed: bool,
   pub reason: Option<String>,
-  pub auth: String,
+  pub auth: Sensitive<String>,
 }
 
-#[derive(Deserialize)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
+pub struct MarkPostAsRead {
+  pub post_id: PostId,
+  pub read: bool,
+  pub auth: Sensitive<String>,
+}
+
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct LockPost {
   pub post_id: PostId,
   pub locked: bool,
-  pub auth: String,
+  pub auth: Sensitive<String>,
 }
 
-#[derive(Deserialize)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct StickyPost {
   pub post_id: PostId,
   pub stickied: bool,
-  pub auth: String,
+  pub auth: Sensitive<String>,
 }
 
-#[derive(Deserialize)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct SavePost {
   pub post_id: PostId,
   pub save: bool,
-  pub auth: String,
+  pub auth: Sensitive<String>,
 }
 
-#[derive(Serialize, Deserialize)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct CreatePostReport {
   pub post_id: PostId,
   pub reason: String,
-  pub auth: String,
+  pub auth: Sensitive<String>,
 }
 
-#[derive(Serialize, Deserialize, Clone)]
-pub struct CreatePostReportResponse {
-  pub success: bool,
+#[derive(Debug, Serialize, Deserialize, Clone)]
+pub struct PostReportResponse {
+  pub post_report_view: PostReportView,
 }
 
-#[derive(Serialize, Deserialize, Debug)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct ResolvePostReport {
-  pub report_id: i32,
-  pub resolved: bool,
-  pub auth: String,
-}
-
-#[derive(Serialize, Deserialize, Clone, Debug)]
-pub struct ResolvePostReportResponse {
-  pub report_id: i32,
+  pub report_id: PostReportId,
   pub resolved: bool,
+  pub auth: Sensitive<String>,
 }
 
-#[derive(Serialize, Deserialize, Debug)]
+#[derive(Debug, Serialize, Deserialize, Clone, Default)]
 pub struct ListPostReports {
   pub page: Option<i64>,
   pub limit: Option<i64>,
-  pub community: Option<CommunityId>,
-  pub auth: String,
+  /// Only shows the unresolved reports
+  pub unresolved_only: Option<bool>,
+  /// if no community is given, it returns reports for all communities moderated by the auth user
+  pub community_id: Option<CommunityId>,
+  pub auth: Sensitive<String>,
 }
 
-#[derive(Serialize, Clone, Debug)]
+#[derive(Debug, Serialize, Deserialize, Clone)]
 pub struct ListPostReportsResponse {
-  pub posts: Vec<PostReportView>,
+  pub post_reports: Vec<PostReportView>,
 }
 
-#[derive(Deserialize, Debug)]
+#[derive(Debug, Serialize, Deserialize, Clone)]
 pub struct GetSiteMetadata {
   pub url: Url,
 }
 
-#[derive(Serialize, Clone, Debug)]
+#[derive(Debug, Serialize, Deserialize, Clone)]
 pub struct GetSiteMetadataResponse {
   pub metadata: SiteMetadata,
 }
+
+#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone)]
+pub struct SiteMetadata {
+  pub title: Option<String>,
+  pub description: Option<String>,
+  pub(crate) image: Option<DbUrl>,
+  pub embed_video_url: Option<DbUrl>,
+}