mirror of
https://github.com/LemmyNet/lemmy.git
synced 2025-02-06 00:54:47 +00:00
* Include saved date in api responses (fixes #5184) * ts optional attr
This commit is contained in:
parent
9daf70d8d9
commit
e31823171c
6 changed files with 24 additions and 21 deletions
|
@ -312,7 +312,7 @@ impl PersonContentCombinedQuery {
|
||||||
post_aggregates::comments.nullable() - post_actions::read_comments_amount.nullable(),
|
post_aggregates::comments.nullable() - post_actions::read_comments_amount.nullable(),
|
||||||
post_aggregates::comments,
|
post_aggregates::comments,
|
||||||
),
|
),
|
||||||
post_actions::saved.nullable().is_not_null(),
|
post_actions::saved.nullable(),
|
||||||
post_actions::read.nullable().is_not_null(),
|
post_actions::read.nullable().is_not_null(),
|
||||||
post_actions::hidden.nullable().is_not_null(),
|
post_actions::hidden.nullable().is_not_null(),
|
||||||
post_actions::like_score.nullable(),
|
post_actions::like_score.nullable(),
|
||||||
|
@ -321,7 +321,7 @@ impl PersonContentCombinedQuery {
|
||||||
// Comment-specific
|
// Comment-specific
|
||||||
comment::all_columns.nullable(),
|
comment::all_columns.nullable(),
|
||||||
comment_aggregates::all_columns.nullable(),
|
comment_aggregates::all_columns.nullable(),
|
||||||
comment_actions::saved.nullable().is_not_null(),
|
comment_actions::saved.nullable(),
|
||||||
comment_actions::like_score.nullable(),
|
comment_actions::like_score.nullable(),
|
||||||
// Shared
|
// Shared
|
||||||
post::all_columns,
|
post::all_columns,
|
||||||
|
|
|
@ -109,7 +109,7 @@ impl PersonSavedCombinedQuery {
|
||||||
post_aggregates::comments.nullable() - post_actions::read_comments_amount.nullable(),
|
post_aggregates::comments.nullable() - post_actions::read_comments_amount.nullable(),
|
||||||
post_aggregates::comments,
|
post_aggregates::comments,
|
||||||
),
|
),
|
||||||
post_actions::saved.nullable().is_not_null(),
|
post_actions::saved.nullable(),
|
||||||
post_actions::read.nullable().is_not_null(),
|
post_actions::read.nullable().is_not_null(),
|
||||||
post_actions::hidden.nullable().is_not_null(),
|
post_actions::hidden.nullable().is_not_null(),
|
||||||
post_actions::like_score.nullable(),
|
post_actions::like_score.nullable(),
|
||||||
|
@ -118,7 +118,7 @@ impl PersonSavedCombinedQuery {
|
||||||
// Comment-specific
|
// Comment-specific
|
||||||
comment::all_columns.nullable(),
|
comment::all_columns.nullable(),
|
||||||
comment_aggregates::all_columns.nullable(),
|
comment_aggregates::all_columns.nullable(),
|
||||||
comment_actions::saved.nullable().is_not_null(),
|
comment_actions::saved.nullable(),
|
||||||
comment_actions::like_score.nullable(),
|
comment_actions::like_score.nullable(),
|
||||||
// Shared
|
// Shared
|
||||||
post::all_columns,
|
post::all_columns,
|
||||||
|
|
|
@ -255,7 +255,7 @@ impl SearchCombinedQuery {
|
||||||
post_aggregates::comments,
|
post_aggregates::comments,
|
||||||
)
|
)
|
||||||
.nullable(),
|
.nullable(),
|
||||||
post_actions::saved.nullable().is_not_null(),
|
post_actions::saved.nullable(),
|
||||||
post_actions::read.nullable().is_not_null(),
|
post_actions::read.nullable().is_not_null(),
|
||||||
post_actions::hidden.nullable().is_not_null(),
|
post_actions::hidden.nullable().is_not_null(),
|
||||||
post_actions::like_score.nullable(),
|
post_actions::like_score.nullable(),
|
||||||
|
@ -264,7 +264,7 @@ impl SearchCombinedQuery {
|
||||||
// Comment-specific
|
// Comment-specific
|
||||||
comment::all_columns.nullable(),
|
comment::all_columns.nullable(),
|
||||||
comment_aggregates::all_columns.nullable(),
|
comment_aggregates::all_columns.nullable(),
|
||||||
comment_actions::saved.nullable().is_not_null(),
|
comment_actions::saved.nullable(),
|
||||||
comment_actions::like_score.nullable(),
|
comment_actions::like_score.nullable(),
|
||||||
// Community-specific
|
// Community-specific
|
||||||
community::all_columns.nullable(),
|
community::all_columns.nullable(),
|
||||||
|
|
|
@ -135,7 +135,7 @@ impl CommentView {
|
||||||
creator_is_moderator: self.creator_is_moderator,
|
creator_is_moderator: self.creator_is_moderator,
|
||||||
creator_is_admin: self.creator_is_admin,
|
creator_is_admin: self.creator_is_admin,
|
||||||
subscribed: self.subscribed,
|
subscribed: self.subscribed,
|
||||||
saved: self.saved,
|
saved: self.saved.is_some(),
|
||||||
creator_blocked: self.creator_blocked,
|
creator_blocked: self.creator_blocked,
|
||||||
my_vote: self.my_vote,
|
my_vote: self.my_vote,
|
||||||
}
|
}
|
||||||
|
@ -894,7 +894,7 @@ mod tests {
|
||||||
creator_is_admin: true,
|
creator_is_admin: true,
|
||||||
my_vote: None,
|
my_vote: None,
|
||||||
subscribed: SubscribedType::NotSubscribed,
|
subscribed: SubscribedType::NotSubscribed,
|
||||||
saved: false,
|
saved: None,
|
||||||
creator_blocked: false,
|
creator_blocked: false,
|
||||||
comment: Comment {
|
comment: Comment {
|
||||||
id: data.inserted_comment_0.id,
|
id: data.inserted_comment_0.id,
|
||||||
|
|
|
@ -164,7 +164,7 @@ impl PostView {
|
||||||
Self::creator_is_admin(),
|
Self::creator_is_admin(),
|
||||||
post_aggregates::all_columns,
|
post_aggregates::all_columns,
|
||||||
CommunityFollower::select_subscribed_type(),
|
CommunityFollower::select_subscribed_type(),
|
||||||
post_actions::saved.nullable().is_not_null(),
|
post_actions::saved.nullable(),
|
||||||
post_actions::read.nullable().is_not_null(),
|
post_actions::read.nullable().is_not_null(),
|
||||||
post_actions::hidden.nullable().is_not_null(),
|
post_actions::hidden.nullable().is_not_null(),
|
||||||
person_actions::blocked.nullable().is_not_null(),
|
person_actions::blocked.nullable().is_not_null(),
|
||||||
|
@ -411,7 +411,7 @@ impl<'a> PostQuery<'a> {
|
||||||
PostView::creator_is_admin(),
|
PostView::creator_is_admin(),
|
||||||
post_aggregates::all_columns,
|
post_aggregates::all_columns,
|
||||||
CommunityFollower::select_subscribed_type(),
|
CommunityFollower::select_subscribed_type(),
|
||||||
post_actions::saved.nullable().is_not_null(),
|
post_actions::saved.nullable(),
|
||||||
post_actions::read.nullable().is_not_null(),
|
post_actions::read.nullable().is_not_null(),
|
||||||
post_actions::hidden.nullable().is_not_null(),
|
post_actions::hidden.nullable().is_not_null(),
|
||||||
person_actions::blocked.nullable().is_not_null(),
|
person_actions::blocked.nullable().is_not_null(),
|
||||||
|
@ -1917,7 +1917,7 @@ mod tests {
|
||||||
subscribed: SubscribedType::NotSubscribed,
|
subscribed: SubscribedType::NotSubscribed,
|
||||||
read: false,
|
read: false,
|
||||||
hidden: false,
|
hidden: false,
|
||||||
saved: false,
|
saved: None,
|
||||||
creator_blocked: false,
|
creator_blocked: false,
|
||||||
tags: PostTags::default(),
|
tags: PostTags::default(),
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
use chrono::{DateTime, Utc};
|
||||||
#[cfg(feature = "full")]
|
#[cfg(feature = "full")]
|
||||||
use diesel::{
|
use diesel::{
|
||||||
deserialize::FromSqlRow,
|
deserialize::FromSqlRow,
|
||||||
|
@ -174,13 +175,14 @@ pub struct CommentView {
|
||||||
)
|
)
|
||||||
)]
|
)]
|
||||||
pub subscribed: SubscribedType,
|
pub subscribed: SubscribedType,
|
||||||
|
#[cfg_attr(feature = "full", ts(optional))]
|
||||||
#[cfg_attr(feature = "full",
|
#[cfg_attr(feature = "full",
|
||||||
diesel(
|
diesel(
|
||||||
select_expression =
|
select_expression =
|
||||||
comment_actions::saved.nullable().is_not_null()
|
comment_actions::saved.nullable()
|
||||||
)
|
)
|
||||||
)]
|
)]
|
||||||
pub saved: bool,
|
pub saved: Option<DateTime<Utc>>,
|
||||||
#[cfg_attr(feature = "full",
|
#[cfg_attr(feature = "full",
|
||||||
diesel(
|
diesel(
|
||||||
select_expression =
|
select_expression =
|
||||||
|
@ -324,7 +326,8 @@ pub struct PostView {
|
||||||
pub creator_is_admin: bool,
|
pub creator_is_admin: bool,
|
||||||
pub counts: PostAggregates,
|
pub counts: PostAggregates,
|
||||||
pub subscribed: SubscribedType,
|
pub subscribed: SubscribedType,
|
||||||
pub saved: bool,
|
#[cfg_attr(feature = "full", ts(optional))]
|
||||||
|
pub saved: Option<DateTime<Utc>>,
|
||||||
pub read: bool,
|
pub read: bool,
|
||||||
pub hidden: bool,
|
pub hidden: bool,
|
||||||
pub creator_blocked: bool,
|
pub creator_blocked: bool,
|
||||||
|
@ -477,11 +480,11 @@ pub enum ReportCombinedView {
|
||||||
#[cfg_attr(feature = "full", derive(Queryable))]
|
#[cfg_attr(feature = "full", derive(Queryable))]
|
||||||
#[cfg_attr(feature = "full", diesel(check_for_backend(diesel::pg::Pg)))]
|
#[cfg_attr(feature = "full", diesel(check_for_backend(diesel::pg::Pg)))]
|
||||||
/// A combined person_content view
|
/// A combined person_content view
|
||||||
pub struct PersonContentCombinedViewInternal {
|
pub(crate) struct PersonContentCombinedViewInternal {
|
||||||
// Post-specific
|
// Post-specific
|
||||||
pub post_counts: PostAggregates,
|
pub post_counts: PostAggregates,
|
||||||
pub post_unread_comments: i64,
|
pub post_unread_comments: i64,
|
||||||
pub post_saved: bool,
|
pub post_saved: Option<DateTime<Utc>>,
|
||||||
pub post_read: bool,
|
pub post_read: bool,
|
||||||
pub post_hidden: bool,
|
pub post_hidden: bool,
|
||||||
pub my_post_vote: Option<i16>,
|
pub my_post_vote: Option<i16>,
|
||||||
|
@ -490,7 +493,7 @@ pub struct PersonContentCombinedViewInternal {
|
||||||
// Comment-specific
|
// Comment-specific
|
||||||
pub comment: Option<Comment>,
|
pub comment: Option<Comment>,
|
||||||
pub comment_counts: Option<CommentAggregates>,
|
pub comment_counts: Option<CommentAggregates>,
|
||||||
pub comment_saved: bool,
|
pub comment_saved: Option<DateTime<Utc>>,
|
||||||
pub my_comment_vote: Option<i16>,
|
pub my_comment_vote: Option<i16>,
|
||||||
// Shared
|
// Shared
|
||||||
pub post: Post,
|
pub post: Post,
|
||||||
|
@ -1026,7 +1029,7 @@ pub struct ModlogCombinedPaginationCursor(pub String);
|
||||||
#[cfg_attr(feature = "full", derive(Queryable, Selectable))]
|
#[cfg_attr(feature = "full", derive(Queryable, Selectable))]
|
||||||
#[cfg_attr(feature = "full", diesel(check_for_backend(diesel::pg::Pg)))]
|
#[cfg_attr(feature = "full", diesel(check_for_backend(diesel::pg::Pg)))]
|
||||||
/// A combined modlog view
|
/// A combined modlog view
|
||||||
pub struct ModlogCombinedViewInternal {
|
pub(crate) struct ModlogCombinedViewInternal {
|
||||||
// Specific
|
// Specific
|
||||||
#[cfg_attr(feature = "full", diesel(embed))]
|
#[cfg_attr(feature = "full", diesel(embed))]
|
||||||
pub admin_allow_instance: Option<AdminAllowInstance>,
|
pub admin_allow_instance: Option<AdminAllowInstance>,
|
||||||
|
@ -1120,12 +1123,12 @@ pub struct SearchCombinedPaginationCursor(pub String);
|
||||||
#[cfg_attr(feature = "full", derive(Queryable))]
|
#[cfg_attr(feature = "full", derive(Queryable))]
|
||||||
#[cfg_attr(feature = "full", diesel(check_for_backend(diesel::pg::Pg)))]
|
#[cfg_attr(feature = "full", diesel(check_for_backend(diesel::pg::Pg)))]
|
||||||
/// A combined search view
|
/// A combined search view
|
||||||
pub struct SearchCombinedViewInternal {
|
pub(crate) struct SearchCombinedViewInternal {
|
||||||
// Post-specific
|
// Post-specific
|
||||||
pub post: Option<Post>,
|
pub post: Option<Post>,
|
||||||
pub post_counts: Option<PostAggregates>,
|
pub post_counts: Option<PostAggregates>,
|
||||||
pub post_unread_comments: Option<i64>,
|
pub post_unread_comments: Option<i64>,
|
||||||
pub post_saved: bool,
|
pub post_saved: Option<DateTime<Utc>>,
|
||||||
pub post_read: bool,
|
pub post_read: bool,
|
||||||
pub post_hidden: bool,
|
pub post_hidden: bool,
|
||||||
pub my_post_vote: Option<i16>,
|
pub my_post_vote: Option<i16>,
|
||||||
|
@ -1134,7 +1137,7 @@ pub struct SearchCombinedViewInternal {
|
||||||
// // Comment-specific
|
// // Comment-specific
|
||||||
pub comment: Option<Comment>,
|
pub comment: Option<Comment>,
|
||||||
pub comment_counts: Option<CommentAggregates>,
|
pub comment_counts: Option<CommentAggregates>,
|
||||||
pub comment_saved: bool,
|
pub comment_saved: Option<DateTime<Utc>>,
|
||||||
pub my_comment_vote: Option<i16>,
|
pub my_comment_vote: Option<i16>,
|
||||||
// // Community-specific
|
// // Community-specific
|
||||||
pub community: Option<Community>,
|
pub community: Option<Community>,
|
||||||
|
|
Loading…
Reference in a new issue