Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding combined person content and person saved tables. #5251

Draft
wants to merge 49 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 31 commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
39b3ec2
Combined tables try 2
dessalines Nov 26, 2024
1ff8ae0
Finishing up combined report table.
dessalines Nov 26, 2024
2351c7a
Fix ts optionals.
dessalines Nov 26, 2024
0ba961f
Adding tests, triggers, and history updates for report_combined.
dessalines Nov 27, 2024
d8dda44
Adding profile.
dessalines Nov 27, 2024
d68c0a6
Merge remote-tracking branch 'origin/main' into combined_tables_2
dessalines Nov 28, 2024
a9f28af
Merge remote-tracking branch 'origin/main' into combined_tables_2
dessalines Nov 28, 2024
3adadf9
Merge remote-tracking branch 'origin/main' into combined_tables_2
dessalines Nov 30, 2024
588e1f6
Add cursor pagination to report_combined view (#5244)
dullbananas Dec 2, 2024
f25d346
Merge branch 'combined_tables_2' of https://github.com/LemmyNet/lemmy…
dessalines Dec 2, 2024
7fdbb58
Fixing migration and paged API.
dessalines Dec 2, 2024
00beccd
Using dullbananas trigger procedure
dessalines Dec 2, 2024
1776de2
Removing pointless list routes, reorganizing tests.
dessalines Dec 2, 2024
612c2e9
Fixing column XOR check.
dessalines Dec 2, 2024
5a8b9de
Merge remote-tracking branch 'origin/main' into combined_tables_2
dessalines Dec 2, 2024
0c854d2
Forgot to remove list report actions.
dessalines Dec 2, 2024
802a8a6
Cleanup.
dessalines Dec 2, 2024
4674821
Merge remote-tracking branch 'origin/main' into combined_tables_2
dessalines Dec 2, 2024
91ca6d3
Merge branch 'main' into combined_tables_2
dessalines Dec 2, 2024
4cac67c
Use internal tagging.
dessalines Dec 2, 2024
83988cd
Merge branch 'combined_tables_2' of https://github.com/LemmyNet/lemmy…
dessalines Dec 2, 2024
82a14fc
Fixing api tests.
dessalines Dec 2, 2024
1f28407
Adding a few indexes.
dessalines Dec 2, 2024
34a440a
Fixing migration name.
dessalines Dec 2, 2024
1a739a1
Fixing unique constraints.
dessalines Dec 3, 2024
e1affa8
Merge remote-tracking branch 'origin/main' into combined_tables_2
dessalines Dec 4, 2024
921d532
Addressing PR comments.
dessalines Dec 4, 2024
724856d
Start working on profile combined
dessalines Dec 6, 2024
1053df1
Adding views and replaceable schema.
dessalines Dec 6, 2024
32b5411
A few changes to profile view.
dessalines Dec 7, 2024
3abc46f
Finishing up combined person_saved and person_content.
dessalines Dec 7, 2024
a940ce3
Merge remote-tracking branch 'origin/main' into combined_tables_2
dessalines Dec 7, 2024
67d72e3
Fixing api tests.
dessalines Dec 8, 2024
a4de41d
Merge branch 'combined_tables_2' into combined_profile
dessalines Dec 8, 2024
5d2b611
Moving to api-v4 routes.
dessalines Dec 8, 2024
a0f2966
Fixing imports.
dessalines Dec 8, 2024
165c7f4
Update crates/db_views/src/report_combined_view.rs
dessalines Dec 8, 2024
dc0ec15
Update crates/db_views/src/report_combined_view.rs
dessalines Dec 8, 2024
22d8697
Update crates/db_views/src/report_combined_view.rs
dessalines Dec 8, 2024
fa31fc3
Update migrations/2024-12-02-181601_add_report_combined_table/up.sql
dessalines Dec 8, 2024
10f5e37
Update migrations/2024-12-02-181601_add_report_combined_table/up.sql
dessalines Dec 8, 2024
02bd2f6
Fixing import and fmt.
dessalines Dec 8, 2024
40fead2
Merge branch 'combined_tables_2' into combined_profile
dessalines Dec 8, 2024
2d482b3
Fixing null types in postgres.
dessalines Dec 8, 2024
3e31e1c
Comment out err.
dessalines Dec 8, 2024
cf2b00e
Merge branch 'combined_tables_2' into combined_profile
dessalines Dec 8, 2024
58e62d5
Fixing TS issues.
dessalines Dec 8, 2024
a320f5a
Merge remote-tracking branch 'origin/main' into combined_profile
dessalines Dec 9, 2024
63b7f72
Using dullbananas trigger procedure
dessalines Dec 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion api_tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"eslint": "^9.14.0",
"eslint-plugin-prettier": "^5.1.3",
"jest": "^29.5.0",
"lemmy-js-client": "0.20.0-instance-blocks.5",
"lemmy-js-client": "0.20.0-reports-combined.2",
"prettier": "^3.2.5",
"ts-jest": "^29.1.0",
"typescript": "^5.5.4",
Expand Down
10 changes: 5 additions & 5 deletions api_tests/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

37 changes: 28 additions & 9 deletions api_tests/src/comment.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import {
createCommunity,
registerUser,
reportComment,
listCommentReports,
randomString,
unfollows,
getComments,
Expand All @@ -38,8 +37,15 @@ import {
blockCommunity,
delay,
saveUserSettings,
listReports,
} from "./shared";
import { CommentView, CommunityView, SaveUserSettings } from "lemmy-js-client";
import {
CommentReportView,
CommentView,
CommunityView,
ReportCombinedView,
SaveUserSettings,
} from "lemmy-js-client";

let betaCommunity: CommunityView | undefined;
let postOnAlphaRes: PostResponse;
Expand Down Expand Up @@ -796,13 +802,17 @@ test("Report a comment", async () => {
let alphaReport = (await reportComment(alpha, alphaComment.id, reason))
.comment_report_view.comment_report;

let betaReport = (await waitUntil(
() =>
listCommentReports(beta).then(r =>
r.comment_reports.find(rep => rep.comment_report.reason === reason),
),
e => !!e,
))!.comment_report;
let betaReport = (
(await waitUntil(
() =>
listReports(beta).then(p =>
p.reports.find(r => {
return checkCommentReportReason(r, reason);
}),
),
e => !!e,
)!) as CommentReportView
).comment_report;
expect(betaReport).toBeDefined();
expect(betaReport.resolved).toBe(false);
expect(betaReport.original_comment_text).toBe(
Expand Down Expand Up @@ -877,3 +887,12 @@ test.skip("Fetch a deeply nested comment", async () => {
expect(betaComment!.comment!.comment).toBeDefined();
expect(betaComment?.comment?.post).toBeDefined();
});

function checkCommentReportReason(rcv: ReportCombinedView, reason: string) {
switch (rcv.type_) {
case "Comment":
return rcv.comment_report.reason === reason;
default:
return false;
}
}
65 changes: 45 additions & 20 deletions api_tests/src/post.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import {
followCommunity,
banPersonFromCommunity,
reportPost,
listPostReports,
randomString,
registerUser,
getSite,
Expand All @@ -38,10 +37,17 @@ import {
alphaUrl,
loginUser,
createCommunity,
listReports,
} from "./shared";
import { PostView } from "lemmy-js-client/dist/types/PostView";
import { AdminBlockInstanceParams } from "lemmy-js-client/dist/types/AdminBlockInstanceParams";
import { EditSite, ResolveObject } from "lemmy-js-client";
import {
EditSite,
PostReport,
PostReportView,
ReportCombinedView,
ResolveObject,
} from "lemmy-js-client";

let betaCommunity: CommunityView | undefined;

Expand Down Expand Up @@ -690,16 +696,17 @@ test("Report a post", async () => {
expect(gammaReport).toBeDefined();

// Report was federated to community instance
let betaReport = (await waitUntil(
() =>
listPostReports(beta).then(p =>
p.post_reports.find(
r =>
r.post_report.original_post_name === gammaReport.original_post_name,
let betaReport = (
(await waitUntil(
() =>
listReports(beta).then(p =>
p.reports.find(r => {
return checkReportName(r, gammaReport);
}),
),
),
res => !!res,
))!.post_report;
res => !!res,
))! as PostReportView
).post_report;
expect(betaReport).toBeDefined();
expect(betaReport.resolved).toBe(false);
expect(betaReport.original_post_name).toBe(gammaReport.original_post_name);
Expand All @@ -709,16 +716,25 @@ test("Report a post", async () => {
await unfollowRemotes(alpha);

// Report was federated to poster's instance
let alphaReport = (await waitUntil(
() =>
listPostReports(alpha).then(p =>
p.post_reports.find(
r =>
r.post_report.original_post_name === gammaReport.original_post_name,
let alphaReport = (
(await waitUntil(
() =>
listReports(alpha).then(p =>
p.reports.find(r => {
switch (r.type_) {
case "Post":
return (
r.post_report.original_post_name ===
gammaReport.original_post_name
);
default:
return false;
}
}),
),
),
res => !!res,
))!.post_report;
res => !!res,
))! as PostReportView
).post_report;
expect(alphaReport).toBeDefined();
expect(alphaReport.resolved).toBe(false);
expect(alphaReport.original_post_name).toBe(gammaReport.original_post_name);
Expand Down Expand Up @@ -819,3 +835,12 @@ test("Rewrite markdown links", async () => {
`[link](http://lemmy-alpha:8541/post/${alphaPost1.post?.post.id})`,
);
});

function checkReportName(rcv: ReportCombinedView, report: PostReport) {
switch (rcv.type_) {
case "Post":
return rcv.post_report.original_post_name === report.original_post_name;
default:
return false;
}
}
22 changes: 6 additions & 16 deletions api_tests/src/shared.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import {
AdminBlockInstanceParams,
ApproveCommunityPendingFollower,
BlockCommunity,
BlockCommunityResponse,
Expand All @@ -16,6 +15,8 @@ import {
LemmyHttp,
ListCommunityPendingFollows,
ListCommunityPendingFollowsResponse,
ListReports,
ListReportsResponse,
PersonId,
PostView,
PrivateMessageReportResponse,
Expand Down Expand Up @@ -74,12 +75,8 @@ import { PrivateMessagesResponse } from "lemmy-js-client/dist/types/PrivateMessa
import { GetPrivateMessages } from "lemmy-js-client/dist/types/GetPrivateMessages";
import { PostReportResponse } from "lemmy-js-client/dist/types/PostReportResponse";
import { CreatePostReport } from "lemmy-js-client/dist/types/CreatePostReport";
import { ListPostReportsResponse } from "lemmy-js-client/dist/types/ListPostReportsResponse";
import { ListPostReports } from "lemmy-js-client/dist/types/ListPostReports";
import { CommentReportResponse } from "lemmy-js-client/dist/types/CommentReportResponse";
import { CreateCommentReport } from "lemmy-js-client/dist/types/CreateCommentReport";
import { ListCommentReportsResponse } from "lemmy-js-client/dist/types/ListCommentReportsResponse";
import { ListCommentReports } from "lemmy-js-client/dist/types/ListCommentReports";
import { GetPostsResponse } from "lemmy-js-client/dist/types/GetPostsResponse";
import { GetPosts } from "lemmy-js-client/dist/types/GetPosts";
import { GetPersonDetailsResponse } from "lemmy-js-client/dist/types/GetPersonDetailsResponse";
Expand Down Expand Up @@ -807,11 +804,11 @@ export async function reportPost(
return api.createPostReport(form);
}

export async function listPostReports(
export async function listReports(
api: LemmyHttp,
): Promise<ListPostReportsResponse> {
let form: ListPostReports = {};
return api.listPostReports(form);
): Promise<ListReportsResponse> {
let form: ListReports = {};
return api.listReports(form);
}

export async function reportComment(
Expand All @@ -838,13 +835,6 @@ export async function reportPrivateMessage(
return api.createPrivateMessageReport(form);
}

export async function listCommentReports(
api: LemmyHttp,
): Promise<ListCommentReportsResponse> {
let form: ListCommentReports = {};
return api.listCommentReports(form);
}

export function getPosts(
api: LemmyHttp,
listingType?: ListingType,
Expand Down
5 changes: 1 addition & 4 deletions crates/api/src/comment/save.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@ pub async fn save_comment(
context: Data<LemmyContext>,
local_user_view: LocalUserView,
) -> LemmyResult<Json<CommentResponse>> {
let comment_saved_form = CommentSavedForm {
comment_id: data.comment_id,
person_id: local_user_view.person.id,
};
let comment_saved_form = CommentSavedForm::new(data.comment_id, local_user_view.person.id);

if data.save {
CommentSaved::save(&mut context.pool(), &comment_saved_form)
Expand Down
37 changes: 0 additions & 37 deletions crates/api/src/comment_report/list.rs

This file was deleted.

4 changes: 1 addition & 3 deletions crates/api/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,13 +33,11 @@ use std::io::Cursor;
use totp_rs::{Secret, TOTP};

pub mod comment;
pub mod comment_report;
pub mod community;
pub mod local_user;
pub mod post;
pub mod post_report;
pub mod private_message;
pub mod private_message_report;
pub mod reports;
pub mod site;
pub mod sitemap;

Expand Down
40 changes: 40 additions & 0 deletions crates/api/src/local_user/list_saved.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
use activitypub_federation::config::Data;
use actix_web::web::{Json, Query};
use lemmy_api_common::{
context::LemmyContext,
person::{ListPersonSaved, ListPersonSavedResponse},
utils::check_private_instance,
};
use lemmy_db_views::{
person_saved_combined_view::PersonSavedCombinedQuery,
structs::{LocalUserView, SiteView},
};
use lemmy_utils::error::LemmyResult;

#[tracing::instrument(skip(context))]
pub async fn list_person_saved(
data: Query<ListPersonSaved>,
context: Data<LemmyContext>,
local_user_view: LocalUserView,
) -> LemmyResult<Json<ListPersonSavedResponse>> {
let local_site = SiteView::read_local(&mut context.pool()).await?;

check_private_instance(&Some(local_user_view.clone()), &local_site.local_site)?;

// parse pagination token
let page_after = if let Some(pa) = &data.page_cursor {
Some(pa.read(&mut context.pool()).await?)
} else {
None
};
let page_back = data.page_back;

let saved = PersonSavedCombinedQuery {
page_after,
page_back,
}
.list(&mut context.pool(), &local_user_view)
.await?;

Ok(Json(ListPersonSavedResponse { saved }))
}
1 change: 1 addition & 0 deletions crates/api/src/local_user/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ pub mod get_captcha;
pub mod list_banned;
pub mod list_logins;
pub mod list_media;
pub mod list_saved;
pub mod login;
pub mod logout;
pub mod notifications;
Expand Down
Loading